0% ont trouvé ce document utile (0 vote)
72 vues22 pages

Introduction à XPath et ses expressions

Le document décrit XPath, un langage permettant de naviguer dans un document XML et sélectionner des éléments. XPath utilise des expressions de chemin composées d'étapes incluant une direction, un sélecteur et éventuellement un prédicat.

Transféré par

Aicha
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
72 vues22 pages

Introduction à XPath et ses expressions

Le document décrit XPath, un langage permettant de naviguer dans un document XML et sélectionner des éléments. XPath utilise des expressions de chemin composées d'étapes incluant une direction, un sélecteur et éventuellement un prédicat.

Transféré par

Aicha
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

XPath

Expressions de chemin

1
XPath : XML Path Language
 Recommandation du W3C :
 XML Path Language Version 1.0 W3C Recommendation 16
November 1999
[Link]
 XML Path Language (XPath) 2.0
W3C Recommendation 23 January 2007
[Link]
 XML Path Language (XPath) 2.0 (Second Edition)
W3C Recommendation 14 December 2010
[Link]
 XML Path Language (XPath) 3.0
W3C Recommendation 08 April 2014
[Link]

2
XPath : XML Path Language
 XPath est à la base de toute navigation dans
un document XML
 Utilisé aussi bien dans XQuery que dans
XSLT, XPointer et XLink
 Permet de spécifier des expressions pour
désigner des objets (éléments ou attributs)
dans l’arborescence d’un document XML
 Syntaxe non XML

3
XPath : XML Path Language
 XSLT se base sur XPath pour faire référence aux
différents noeuds (d’un document XML) qu’on veut
manipuler .

 Notamment, dans les attributs :


 "match" de la balise "template",

 "select" de la balise "apply-templates"

 "select" de la balise "value-of",

 …

4
XPath : Expressions de chemin
 Un chemin XPath est composé d’une expression

 Une expression XPath :


 Permet de naviguer dans un arbre XML et sélectionner des noeuds particuliers.
 Constituée d’une ou de plusieurs étapes :
/étape1/étape2/... /étapeN
Ex.
//child::notice/child::auteurs/child::auteur[attribute::type="pers-mora"]

 Une étape dans une expression de chemin comprend :


 une direction (Axe)  suivie de ::
 un sélecteur (Test)
 un prédicat (Condition)  mis entre 2 crochets [ ].

direction::sélecteur[prédicat]

Ex. //child::auteur[@type="pers-mora"]

5
Expressions de chemin : Étape
 Direction (Axe ) :
Définit le sens de la relation entre le nœud courant et le jeu de
nœuds à localiser
 Descente : child, descendant, descendant-or-self
 Remontée : parent, ancestor, ancestor-or-self
 Traversée : preceding-sibling, following-sibling
preceding, following

 Sélecteur (Test) : nom du noeud à localiser

 Prédicat (Condition) : pour affiner la sélection (optionnel, répétable)


(mis entre “[” et “]”)

6
Etape : Direction (Axe)
 self
 Child
 Parent
 descendant, descendant-or-self
 ancestor, ancestor-or-self
 following, following-sibling
 preceding, preceding-sibling
(Voir pages 11-
14)

7
Etape : Sélecteur (Test)
 Nom
 *
 Type
 node()
 text()
 comment()
 processing-instruction()

8
Etape : Prédicat (condition)

 ‘[‘ Condition ‘]’


 Quelques conditions
 [position()<3]
 [position()=last()-1]
 [2]
 [attribute::type="pers-mora"]
 Prédicats peuvent être chaînés [ ][ ]

9
Exemples Xpath (Location Path)
 //child::auteur[position()>1]
 //descendant::nom[position()=3]
 //child::auteur[attribute::type="pers-phys"][position()=2]
 //child::auteurs/preceding-sibling::*
 //child::auteurs/preceding::*
 //child::nom/following-sibling::*
 //child::nom/following::*
 //child::nom/ancestor::auteurs
 //self::auteurs

10
XPath : Expressions de chemin

Child Parent

11
XPath : Expressions de chemin

Descendant Ancestor

12
XPath : Expressions de chemin

Preceding-sibling Following-sibling

13
XPath : Expressions de chemin

Preceding Following

14
Abréviations
 child peut être implicite
 child::auteur/child::nom => auteur/nom

 attribute peut être remplacé par « @ »


 //attribute::type => @type
 Self::node() peut être remplacé par un point « . »
 //auteurs/self::node() => //auteurs/.
 parent::node() peut être remplacé par ..
 //auteurs/parent::node() => //auteurs/..

15
XPath : Expressions de chemin
Sélecteur Nœud sélectionné
/* racine du document
// un chemin demandant tous les descendants d'un
nœud plutôt que juste les enfants immédiats
. nœud courant
//* tous les noeuds de type « élément »
//e l’élément « e »
//@a l'attribut « a »
//@* tous les attributs
//node() n’importe quel noeud
//text() tout nœud textuel
//processing-instruction() toute instruction de traitement

16
<!--Le document XML sur lequel seront basés nos exemples est " [Link] “--> :

<?xml-stylesheet type="text/xsl" href=“[Link]"  ?>


<notice type="procite">
<accès>
<restreint />
</accès>
<lisibilité>
<restreint />
</lisibilité>
<auteurs>
<auteur type="pers-mora">
<nom>Bombardier International</nom>
<initiales>BI</initiales></auteur>
<auteur type="pers-phys">
<nom>Renaud Beauchesne</nom>
<initiales>RB</initiales></auteur>
<auteur type="pers-phys">
<nom>Morency et filles</nom>
<initiales>RB</initiales></auteur>
</auteurs>
<cote valeur="456.789" />
<titre>L'automne</titre>
<anpub>1998</anpub>
<résumé>
<par>Les auteurs, très nombreux, se régalent de métaphores sur leur saison préférée,
qui est l'automne. Bien peu de pages sont consacrées aux autres saisons, savoir: l'été,
l'hiver et le printemps.</par>
</résumé>
</notice>

17
Quelques exemples d’expressions XPath
 //node() : tout nœud
 //* : tout élément
 Forme développée : //child::*
 //text() : tout nœud textuel (contenu textuel)
 //titre/text() : le contenu textuel de l’élément nom
 //auteur : tout élément auteur
 Forme développée : //child::auteur
 //auteur/nom/text() : le contenu textuel de l’élément nom fils de auteur
 //auteur/node() : tout nœud (élément) qui vient directement sous auteur
 //auteur/nom : tout élément nom avec un père auteur
 Forme développée : //child::auteur/child::nom
 //auteurs/auteur/nom : tout élément nom avec un père auteur et un grand-père auteurs
 //auteurs/*/nom : tout élément nom avec un grand-père auteurs
 //notice//nom : tout élément nom avec un ancêtre notice
 //auteurs/auteur[@type="pers-mora"]/nom : tout élément nom fils d’un élément auteur
qui un père auteurs et un attribut type dont la valeur est pers-mora
 //auteur[nom="Bombardier International"] : tout élément auteur qui a comme fils
un élément nom dont le contenu textuel est Bombardier International

18
Quelques exemples d’expressions XPath
 //child::auteur/ancestor::* : tout élément qui vient au-dessus de auteur
 (parent et ancêtres)
 //child::auteur/parent::* : l’élément qui vient directement au-dessus de auteur  (parent)
 //child::auteurs/descendant::* : tout élément qui vient au-dessous de auteur
 (fils et descendants)
 //child::auteurs/child::* : tous les fils directs de l’élément auteurs
 //child::auteurs/following-sibling::* : tout élément qui suit directement l’élément auteurs et
qui se trouve au même niveau (frères)
 //child::auteurs/following::* : tout élément qui suit l’élément auteurs et qui se trouve soit
au même niveau (frères) ou dans un niveau inférieur (descendants des frères) ou supérieur
(ancêtres des frères) à l’exception des ancêtres et des descendants directes de l’élément
courant.
 //processing-instruction() : toute instruction de traitement
 //auteur[2] : tout élément auteur qui est le deuxième fils auteur de son père
 //auteur[position()=2] : idem
 //*[position()=2 and self::auteur] : idem
 //auteur[position()=last()] : tout élément auteur qui est le dernier fils auteur de son père
 //nom[last()=1] : tout élément nom qui est le seul fils nom de son père
 //auteurs/auteur[position()>1] : tout élément auteur qui à un père auteurs et qui n'est pas le
premier fils auteur de son père
 //auteur[position() mod 2 = 1] : tout élément auteur qui est un fils auteur impair
 //@type : tout attribut type
 //@* : tout attribut

19
Fonctions XPath

 Fonctions applicables aux nœuds :


 count()
 count(//auteur)
 position()
 //auteur[position()=2]
 last()
 //auteur[last()-1]

20
Fonctions XPath
 Fonctions applicables aux chaînes de caractères :
 concat() concaténation de chaînes de caractères
 concat('Le livre dont le titre est ', //titre, ' a été écrit par ', //auteur[1]/nom, '
et ', //auteur[2]/nom, ' et ', //auteur[3]/nom, ' et a comme cote: ', //@valeur)
 string-length
 string-length(//auteur[2])
 translate
 translate(//titre, "abcdefghijklmnopqrstuvwxyz",
"ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 Substring, substring-before et substring-after
 substring(chaine1, decalage, longueur)
 substring("information", 3, 5)  donne forma
 substring-before(chaine1, chaine2) / substring-after(chaine1, chaine2)
 substring-before(« Maroc", "a")  donne: fr
 substring-after(« Maroc", "a")  donne: nce

21
Références
 XML Path Language (XPath) 3.0
W3C Recommendation 08 April 2014
[Link]
 Langage XML Path (XPath) Version 1.0
Recommandation du W3C du 16 Novembre 1999
[Link]
 XPath : Localiser les données. (OpenClassrooms website) :
[Link]
xml/1769083-xpath-localiser-les-donnees
 XPath Tutorial (W3 Schools :
[Link]
 XPath Tutorial. (W3 Schools) : [Link]
 XPath. (MDN website) :
[Link]
 [Link]

22

Vous aimerez peut-être aussi