Introduction à XPath



Documents pareils
Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Introduction aux concepts d ez Publish

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

Document Object Model (DOM)

Devenez un véritable développeur web en 3 mois!

Master d Informatique Corrigé du partiel novembre 2010

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Production de documents avec XSLT. Production de documents p.1/??

SQL Parser XML Xquery : Approche de détection des injections SQL

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

Programmation des Applications Réparties. Parsers XML DOM et SAX

BD et XML : Exercices

BIRT (Business Intelligence and Reporting Tools)

Langage SQL : créer et interroger une base

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

XML et Bases de données. Les bases de données XML natives.

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

BASE DE DONNÉES XML NATIVE

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Programmation Web. Madalina Croitoru IUT Montpellier

NFE204 Bases de données avancées

Présentation du langage et premières fonctions

La base de données XML exist. A. Belaïd

TP1. Outils Java Eléments de correction

Optimiser pour les appareils mobiles

Créer le schéma relationnel d une base de données ACCESS

L'API DOM : Document Object Model

Gestion Électronique de Documents et XML. Master 2 TSM

OCL - Object Constraint Language

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Construire des plug-ins pour SAS Management Console SAS 9.1

Installation de DocBook sur un système Linux

Annexe C Spécification pour les fichiers importés en format XML

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

ESPACE COLLABORATIF SHAREPOINT

Intégrateur Web HTML5 CSS3

Manipulation 4 : Application de «Change».

STAGE IREM 0- Premiers pas en Python

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

BASE DE DONNÉES XML NATIVE

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

EXCEL TUTORIEL 2012/2013

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

Université de Bangui. Modélisons en UML

CREG : versailles.fr/spip.php?article803

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

4. SERVICES WEB REST 46

Alfstore workflow framework Spécification technique

GOL502 Industries de services

Attaques sur les Web Services. Renaud Bidou

Évaluation et implémentation des langages

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Introduction à MATLAB R

A. Structurer le catalogue. v Dans le menu Catalogue, sélectionnez Catégories. 1. Les catégories. Chapitre 6 : Construire le catalogue ...

Atelier de l Ecole doctorale : Latex, Lyx, and friends Chapitre 2 : Gestion de la bibliographie

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

1 Introduction et installation

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

L import massif introduit plusieurs nouvelles fonctionnalités, selon que l on importe un thésaurus, un ensemble de valeurs contrôlées ou un corpus.

Information utiles. webpage : Google+ : digiusto/

Documentation RBS Change E-Commerce Core

Outils logiciels pour l'ingénierie documentaire

4. Personnalisation du site web de la conférence

Initiation à html et à la création d'un site web

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bernard Lecomte. Débuter avec HTML

Arborescence et création de dossiers

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Le langage SQL Rappels

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Recycle Bin (Corbeille Active directory)

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

OASIS Date de publication

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

<?xml version="1.0" encoding="iso " standalone="yes"?>

GUIDE Excel (version débutante) Version 2013

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

Algorithmique et Programmation, IMA

TABLEAU CROISE DYNAMIQUE

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Introduction à ElasticSearch

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

COMMENT TROUVER VOS FUTURS CLIENTS À L INTERNATIONAL? 05/03/2015 Creditsafe France

0.1 Mail & News : Thunderbird

Introduction : L accès à Estra et à votre propre espace Connexion Votre espace personnel... 5

La mémoire. Un ordinateur. L'octet. Le bit

Systèmes d information et bases de données (niveau 1)

Transcription:

Introduction à XPath Introduction à XPath xml-xpath Code: xml-xpath Originaux url: http://tecfa.unige.ch/guides/tie/html/xml-xpath/xml-xpath.html url: http://tecfa.unige.ch/guides/tie/pdf/files/xml-xpath.pdf Auteurs et version Daniel K. Schneider Version: 0.4 (modifié le 2/12/05) Prérequis Module technique précédent: xml-tech Module technique précédent: xml-xslt (il faut un minimum de XPath pour XSLT de base) Module technique précédent: xml-xslt2 (il faut connaître les fonctions XPath) Abstract Petite introduction à XPath

Introduction à XPath -. Objectifs Eléments XPath nécessaires pour faire du XSLT niveau débutant et moyen xml-xpath-2 A faire Plus de fonctions La notion générale d expression XPath

Introduction à XPath - 1. Table des matières détaillée 1. Table des matières détaillée 1. Table des matières détaillée 3 2. Introduction à XPath 4 2.1 Rôle de XPath 4 2.2 XPath dans le contexte de XSLT 5 3. Les Chemins de localisation 6 3.1 Le modèle du document de XPath 7 3.2 Quelques chemins de localisation avec la syntaxe courte 8 A.Quelques chemins simples: éléments enfants, parents, cousins 8 B.Chemins pour chercher des attributs 10 C.Chemins avec Wildcards 10 D.Chemin avec prédicats 11 3.3 Récapitulatif de chemins simples de localisations 12 4. Les fonctions XPath 13 4.1 Fonctions pour les ensembles de noeuds 13 4.2 Choix de fonctions pour les chaînes de caractères et les nombres 14 4.3 Expressions 15 5. Chemins de localisation non abrégés 16 xml-xpath-3

Introduction à XPath - 2. Introduction à XPath 2. Introduction à XPath xml-xpath-4 2.1 Rôle de XPath Historique: XPath est le résultat d un effort d homogénéisation de la syntaxe et de la sémantique de fonctions communes à XSLT, XPointer, etc. XPath n est pas un langage XML (utilise une autre syntaxe) Objectifs 1. Définir la manière d adresser des parties d un document XML (chemins d accès) Un chemin d accès ressemble un peu à celui des noms de fichiers (chemins), d où le nom "XPath" 2. Traiter des chaînes de caractères, des nombres et des booléens (cela rend ce langage plus sophistiqué par rapport à l objectif 1) Statut XPath est un standard W3C: url: http://www.w3.org/tr/xpath XPath est utilisé dans des langages comme XSLT, XQuery, XInclude etc. ainsi que dans des librairies XML des langages de programmation XPath donc largement utilisé actuellement

Introduction à XPath - 2. Introduction à XPath xml-xpath-5 2.2 XPath dans le contexte de XSLT XPath faisait d abord partie de XSLT avant d être formalisé comme standard à part. Expressions Xpath (simples) <xsl:template match="page"> <xsl:apply-templates select="title" /> </xsl:template> XSLT utilise XPath par ex. pour indiquer à quel élément il faut appliquer une règle Cet élément (par ex. "path") est indiqué par un chemin de localisation Les débutants peuvent utiliser des simples noms de balises: <xsl:apply-templates select="title"/> Pour les experts, ces expressions peuvent devenir très compliquées: <xsl:apply-templates select="cours/module[position()=1]/section[position()=2]"/> (cela veut dire: "la 2ème section du premier module du cours")

Introduction à XPath - 3. Les Chemins de localisation 3. Les Chemins de localisation xml-xpath-6 Un chemin de localisation trouvera en ensemble de noeuds (éléments, attributs, commentaires, instructions de traitement, etc.) Chaque chemin de localisation peut être exprimé soit avec une syntaxe verbeuse soit avec une version courte (abbreviatedxyz) Début de la définition formelle des chemins de localisation... [1] LocationPath::= RelativeLocationPath AbsoluteLocationPath [2] AbsoluteLocationPath ::= / RelativeLocationPath? AbbreviatedAbsoluteLocationPath [3] RelativeLocationPath ::= Step RelativeLocationPath / Step AbbreviatedRelativeLocationPath [4] Step ::= AxisSpecifier NodeTestPredicate* AbbreviatedStep [5] AxisSpecifier ::= AxisName :: AbbreviatedAxisSpecifier [6] AxisName ::= ancestor ancestor-or-self attribute child descendant descendant-or-self following following-sibling namespace parent preceding preceding-sibling self Note Ce début de la définition formelle montre qu il s agit ici de qqch. de complexe Il y a en tout 39 clauses... Nous allons donc seulement introduire les concepts les plus importants

Introduction à XPath - 3. Les Chemins de localisation 3.1 Le modèle du document de XPath xml-xpath-7 XPath voit un document sous forme d arborescence. Chaque élément d information (éléments XML, attributs XML, texte, etc.) est appelé noeud (node) Ce modèle ressemble au DOM (mais n est pas identique!) Noeuds que XPath peut voir: noeud racine (root node) ATTENTION cette racine n est pas forcément celle de l élément racine du XML. XPath verrait en premier des instructions de traitement (feuille de style, etc.) ou commentaires au début de fichier! noeuds d éléments et d attributs noeuds de commentaires, d instructions de traitement, de namespace. Noeuds que XPath ne peut pas voir: XPath voit le document une fois qu il construit, donc ne voit pas les entités, déclarations de type de document, etc. La notion de contexte: Pour comprendre ce que fait une expression XPath il faut toujours regarder son contexte d utilisation (cf. suite)

Introduction à XPath - 3. Les Chemins de localisation 3.2 Quelques chemins de localisation avec la syntaxe courte xml-xpath-8 A. Quelques chemins simples: éléments enfants, parents, cousins Noeud racine: / retourne le premier noeud trouvé dans un arbre (pas forcément l élément racine XML!) Elément enfant direct: Syntaxe: nom_element_xml Elément enfant direct du noeud racine: Syntaxe: /nom_element_xml Enfant d un enfant: Syntaxe: nom_element_xml/nom_element_xml Descendant arbitraire du noeud racine: Syntaxe: //nom_element_xml Descendant arbitraire d un noeud: Syntaxe: nom_element_xml//nom_element_xml Un parent d un noeud: Syntaxe:../ Un cousin lointain d un noeud: Syntaxe:../../nom_element_XML/nom_element_XML/nom_element_XML

Introduction à XPath - 3. Les Chemins de localisation Illustrations avec un document XML exemple et quelques règles XSLT: xml-xpath-9 <project> <title>mon project</title> <problem> <title>voici un problème></title> <description>je ne connais pas XPATH</description> </problem> <solutions> <item val="moyenne">vous pouvez acheter un livre sur XSLT</item> <item val="forte">vous pouvez suivre un cours et faire des exercices</item> </solutions> </project> Règle (1) XSLT pour la racine XML <xsl:template match="/project"> <xsl:apply-templates select="title" /> </xsl:template> xsl:template est une règle XSLT (voir XSLT pour plus d informations!) L attribut "match" dit que cette règle s applique à l élément project sous la racine Le contexte d exécution est donc l élément "project" xsl:apply-templates permet de déclencher une autre règle. Donc le "title" référencé par l attribut sélect est "Mon projet" (parce que ce title est un enfant de project)

Introduction à XPath - 3. Les Chemins de localisation Règle (2) XSLT pour l élément problem <xsl:template match="/project"> <xsl:apply-templates /> </xsl:template> xml-xpath-10 <xsl:template match="problem"> <xsl:apply-templates select="title" /> </xsl:template> La deuxième règle sera déclenchée par la première règle, car problem est un élément enfant de project. Autrement dit, quand on se place dans le contexte "project", problem est un descendant direct. Une fois quand la règle est déclenchée on se retrouve dans le contexte "problem". Donc "title" se réfère à "Voici un problème". B. Chemins pour chercher des attributs Chercher un attribut d un élément (contexte courant) Syntaxe: @nom_attribut Chercher tous les attributs "bla" Syntaxe: //@bla C. Chemins avec Wildcards Chercher tous les noeuds de type élément Syntaxe: *

Introduction à XPath - 3. Les Chemins de localisation Chercher tous les noeuds (y compris commentaires, etc.) Syntaxe: node() Chercher tous les attributs Syntaxe: @* xml-xpath-11 D. Chemin avec prédicats Un prédicat est une expression logique qui sera vraie ou fausse et affine le résultat obtenu avec un chemin de recherche. Chercher un élément qui a un attribut Syntaxe: nom_element_xml [ @nom_attribut ] Chercher un élément qui a un attribut avec une certaine valeur Syntaxe: nom_element_xml [ @nom_attribut = valeur ] Chercher un élément qui a un autre élément comme enfant Syntaxe: nom_element_xml [ nom_element_xml ] Règle (3) XSLT pour définir un chemin en fonction de la valeur d un attribut <xsl:template match="//item[@val= forte ]"> <xsl:value-of select="." /> </xsl:template> Cette règle se déclenche dans le contexte racine Elle sélectionne n importe quel élément "item" qui a comme attribut "val=forte"

Introduction à XPath - 3. Les Chemins de localisation 3.3 Récapitulatif de chemins simples de localisations xml-xpath-12 Elément Exemple d un Exemple d un match réussi par rapport au (Type de chemin) syntaxique chemin chemin indiqué à gauche balise nom d élément project <project>... </project> / sépare enfants directs project/title <project><title>... </title> / (correspond à l élément racine) // descendant project//title <project><problem><title>...</title> //title <racine>...<title>..</title> (n mporte où) * "wildcard" */title <bla><title>..</title> et <bli><title>...</title> opérateur "ou" title head <title>...</title> ou <head>...</head> * / @* (tous les éléments: les enfants, la racine et les attributs de la racine). élément courant.../ élément supérieur../problem <project> @ nom d attribut @id <xyz id="test">...</xyz> project/@id <project id="test"...>... </project> @attr= type list[@type= ol ] <list type="ol">... </list>

Introduction à XPath - 4. Les fonctions XPath 4. Les fonctions XPath xml-xpath-13 XPath définit un certain nombre de fonctions Chaque fonction retourne soit une valeur booléenne (vrai/faux), un nombre, un string (chaîne de caractères), ou encore une liste de noeuds Une fonction est identifié par le fait qu elle a des "()" à la fin. Il existe des fonctions avec zéro, un ou plusieurs arguments, et finalement un nombre arbitraire d arguments Par rapport à XSLT: Certaines fonctions peuvent être utilisées dans des chemins de localisation, d autre seulement avec <xsl:value-of select=""./> 4.1 Fonctions pour les ensembles de noeuds Voici les fonctions les plus importantes last() La fonction last retourne le nombre de noeuds qui se trouvent dans le contexte (qui ont le même parent) position() La fonction position retourne le nombre de la position contextuelle (context position) d un élément par rapport à son parent. count(node-set) La fonction count retourne le nombre de noeuds de l'ensemble de noeuds passés en arguments.

Introduction à XPath - 4. Les fonctions XPath xml-xpath-14 4.2 Choix de fonctions pour les chaînes de caractères et les nombres Voir un manuel ou la spécification pour les détails starts-with(string, string) retourne TRUE si le deuxième string se trouve au début du premier contains(string, string) retourne TRUE si le deuxième (!) string se trouve dans le premier string-length(string?) retourne la longeur d un string number(object?) transforme un objet en nombre sum(node-set) la somme de nombres trouvés dans un ensemble de noeuds. Effectue une conversion de strings si nécessaire, comme number() round(number) arrondit un nombre selon les conventions habituelles: 1.4 devient 1 et 1.7 devient 2 Exemples //Etudiant[starts-with(Prenom, Bernadette )]" //Employee[contains(FirstName, John )] Pour les autres fonctions, voir un manuel il existe d autres fonctions "strings/numbers", ainsi qu une catégorie fonctions booléennes

Introduction à XPath - 4. Les fonctions XPath 4.3 Expressions xml-xpath-15 Calculs arithmétiques On utilise des expressions habituelles, sauf pour la division!! (div au lieu de /") Syntaxe: + - * div mod mod est intéressant pour calculer des tableaux et autres visualisations 5 mod 2 retourne 1, "7 mod 2" et "3 mod 2" aussi on pourrait donc utiliser cette information pour placer ces éléments dans une colonne... Opérateurs booléens XSLT utilise la notation habituelle. Selon règles de précédence des opérateurs: <=, <, >=, > =,!= and or Exemples l expression suivante choisit le titre de tous les exercices ayant une note qui dépasse 5. //exercise[note>5]/title l expression suivante additionne 2 variables Retourner tous les noeuds Participant ayant un contenu de Nom dépassant 7 caractères: "//Participant[string-length(Nom)>=8]" Retourner les 5 derniers éléments d une liste author [(last() - 4) <= position()) and (position() <= last())]

Introduction à XPath - 5. Chemins de localisation non abrégés 5. Chemins de localisation non abrégés xml-xpath-16 Principe d un chemin de localisation Un chemin de localisation est définit comme une séquence d étapes de localisations Ces étapes de localisation sont séparées par des "/" Syntaxe: (simplifiée) RelativeLocationPath ::= Step RelativeLocationPath / Step Les étapes de localisation (step) Syntaxe: (simplifiée) Step ::= AxisName :: NodeTest Predicate* Une étape de localisation (step) contient 2 éléments obligatoires et un élément à option: 1. Un axe (AxisName): définit dans quelle direction il faut chercher 2. Un noeud test (NodeTest): définit parmi quels noeuds il faut chercher 3. Un ou plusieurs prédicats à option: pour raffiner la sélection obtenu avec (1) et (2). Exemples: chercher la valeur de l attribut "val" pour l enfant child, de l enfant solution child::solutions/child::item/@val correspond à: solutions/item/@val Quand utiliser? Lorsque la syntaxe simple ne s avère pas assez puissant pour identifier un axe de recherche