Académique Documents
Professionnel Documents
Culture Documents
Expressions de chemin
1
XPath : XML Path Language
Recommandation du W3C :
XML Path Language Version 1.0 W3C Recommendation 16
November 1999
http://www.w3.org/TR/1999/REC-xpath-19991116
XML Path Language (XPath) 2.0
W3C Recommendation 23 January 2007
http://www.w3.org/TR/xpath20
XML Path Language (XPath) 2.0 (Second Edition)
W3C Recommendation 14 December 2010
http://www.w3.org/TR/xpath20
XML Path Language (XPath) 3.0
W3C Recommendation 08 April 2014
http://www.w3.org/TR/xpath-30
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 .
…
4
XPath : Expressions de chemin
Un chemin XPath est composé d’une expression
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
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)
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
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 " notice.xml “--> :
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
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
http://www.w3.org/TR/xpath-30
Langage XML Path (XPath) Version 1.0
Recommandation du W3C du 16 Novembre 1999
http://xmlfr.org/w3c/TR/xpath
XPath : Localiser les données. (OpenClassrooms website) :
https://openclassrooms.com/fr/courses/1766341-structurez-vos-donnees-avec-
xml/1769083-xpath-localiser-les-donnees
XPath Tutorial (W3 Schools :
http://www.w3schools.com/xpath/xpath_examples.asp
XPath Tutorial. (W3 Schools) : https://www.w3schools.com/xml/xpath_intro.asp
XPath. (MDN website) :
https://developer.mozilla.org/fr/docs/Web/XPath
https://developer.mozilla.org/fr/docs/Utilisation_de_XPath
22