Académique Documents
Professionnel Documents
Culture Documents
Ahmed ZELLOU
zellou_ahmed@hotmail.com
ISI, ISRT & ISEM SupMTI, 2021-2022.
Plan
n Introduction
n Utilisation
n Expression de chemin
n Nœuds Xpath
n Sélection des nœuds
n Prédicats
n Les Axes Xpath
n Accès par Axe
n Exemple d’expressions Xpath
n Atelier
2
A.ZELLOU
Introduction
Axes Xpath
Exemple
Atelier 4
A.ZELLOU
XPath - Parcours d'arbre
section section
Technologie XML
Axes Xpath
XLS XPath
Exemple 5
Atelier
n Un document XML est traité sous forme d'un arbres
de nœuds. A.ZELLOU
Nœuds XPath
Exemple
n Théorie des Arbres : nœud, arc, chemin et contenu.
Atelier 6
A.ZELLOU
Relations entre nœuds
Exemple
Atelier 7
A.ZELLOU
Expression de chemin
Axes Xpath
Exemple
Atelier 9
A.ZELLOU
Sélection des nœuds
Expression Description
Nom_nœud Sélectionne le sous arbre du nœud nommé
/ Sélectionne à partir du nœud racine
// Sélectionne tous les nœuds du document à partir du nœud courant,
peu importe où ils sont
. Sélectionne le nœud courant
.. Sélectionne le parent du nœud courant
@ Sélectionne tous les attributs du nœud courant
comment() Sélectionne tous les commentaires
node() Sélectionne tous les nœuds
id(‘val’) Sélectionne l’élément d'identifiant val
10
A.ZELLOU
Sélection des nœuds
Expression Résultat
biblio Sélectionne l'élément biblio
/biblio Sélectionne l'élément racine biblio
biblio/livre Sélectionne l’élément livre qui est fils de biblio
//livre Sélectionne tous les éléments livre peu importe où ils se trouvent
dans le document
biblio//livre Sélectionne tous les éléments livre qui sont les descendants de
l'élément biblio, peu importe le chemin
//@lang Sélectionne tous les attributs qui sont nommés lang
11
A.ZELLOU
Prédicats
12
A.ZELLOU
Prédicats
13
A.ZELLOU
Prédicats
n Exemples :
Expression Résultat
/biblio/* Tous les nœuds fils de l'élément racine biblio
//* Tous les éléments du document
//titre[@*] Tous les éléments titre qui ont un attribut
14
A.ZELLOU
Sélectionner plusieurs chemins
Expression Résultat
//titre | //prix Sélectionner tous les éléments titre et prix du
document
/biblio/livre/titre | //prix Sélectionner tous les éléments titre fils des éléments
livre fils de l'élément racine biblio et tous les
éléments prix du document
15
A.ZELLOU
Les Axes XPath
Sélection des
n Un nœud de position.
nœuds
n Zéro ou plusieurs prédicats.
Prédicats
n L’expression a la syntaxe suivante :
n axe::nœud_de_position[prédicat]
Axes Xpath Ou :
n direction::sélecteur[predicat]
Exemple
n X::Y Signifie “select Y from X”
Atelier 17
A.ZELLOU
Accès par Axe
n Exemple :
Exemple Résultat
child::livre Sélectionner tous les fils du nœud livre
attribute::lang Sélectionner l'attribut lang du nœud courant
child::* Sélectionner tous les fils du nœud courant
attribute::* Sélectionner tous les attributs du nœud courant
child::text() Sélectionner le contenu (texte) du nœud fils du nœud courant
child::node() Sélectionner tous les nœuds fils du nœud courant
19
A.ZELLOU
Accès par Axe
n Exemple :
<library>
<livre> //chapter[2]/self::*
<chapter/>
<chapter> //chapter[2]/preceding::*
<section>
<paragraph/>
<paragraph/> //chapter[2]/following::*
</section>
</chapter> //chapter[2]/ancestor::*
<chapter/>
</livre>
<livre/> //chapter[2]/descendant::*
</library>
20
A.ZELLOU
Accès par Axe
n Exemple :
Exemple Résultat
ancestor::livre Sélectionner tous les ancêtres du nœud livre
21
A.ZELLOU
Fonctions Xpath
n Quelques fonctions:
n Node-set : last(), position(), count( node-set ), id( string ),
name( node-set ), namespace-uri( node-set ).
n String : concat($s1,...,$sn), starts-with($a,$b),
contains($a,$b), substring-before($a,$b), substring-
after($a,$b), substring($a,$n,$l), string-length($a), normalize-
space($a), translate($a,$b,$c).
n Boolean et Number : not($b), sum($s), floor($n), ceiling($n),
round($n).
22
A.ZELLOU
Implémentations Xpath
23
A.ZELLOU
Exemples d’expressions
Xpath
Exemples
n auteur
n Tous les éléments <auteur> dans le contexte actuel.
n ./auteur
n Tous les éléments <auteur> fils du contexte actuel.
n Expression équivalente à l'expression de la ligne précédente.
n /biblio
n L'élément racine (<biblio>) de ce document.
n //auteur
n Tous les éléments <auteur> du document.
25
A.ZELLOU
Exemples
n auteur/first-name
n Tous les éléments <first-name> qui sont des enfants d'un
élément <auteur>
n biblio//titre
n Tous les éléments <titre> à un ou plusieurs niveaux de
profondeur dans l'élément <biblio> (descendants arbitraires).
n biblio/*/titre
n Tous les éléments <titre> qui sont des petits-enfants
d'éléments <biblio>.
26
A.ZELLOU
Exemples
n biblio//livre/x//y
n Tous les éléments <y> situés n'importe où à l'intérieur
d'enfants <x> d'éléments <livre>, n'importe où à l'intérieur de
l'élément <biblio>
n .//titre
n Tous les éléments <titre> à un ou plusieurs niveaux de
profondeur dans le contexte actuel.
n auteur/*
n Tous les éléments qui sont les enfants d'éléments <auteur>.
27
A.ZELLOU
Exemples
n livre/*/last-name
n Tous les éléments <last-name> qui sont des petits-enfants
d'éléments <livre>.
n *[@specialty]
n Tous les éléments avec l'attribut specialty.
n prix/@exchange
n L'attribut exchange sur des éléments <prix> dans le contexte
actuel.
n prix/@exchange/total
n Retourne une collection de nœuds vide, car les attributs ne
contiennent pas d'éléments enfants.
28
A.ZELLOU
Exemples
n livre[@style]
n Tous les éléments <livre> avec des attributs style, dans le
contexte actuel.
n auteur[1]
n Le premier élément <auteur> dans le nœud de contexte actuel.
n auteur[first-name][3]
n Le troisième élément <auteur> ayant un enfant <first-name>.
n livre[last()]
n Le dernier élément <livre>
29
A.ZELLOU
Exemples
n livre/auteur[last()]
n Le dernier élément <auteur> de l’élément <livre>
n (livre/auteur)[last()]
n Le dernier élément <auteur> du dernier élément <livre>
n livre[livre]
n Tous les éléments <livre> qui contiennent au moins un
élément enfant <livre>.
n livre[livre]/titre
n Tous les éléments <titre> qui sont des enfants d'éléments
<livre> contenant au moins un élément enfant <livre>.
30
A.ZELLOU
Exemples
n livre[excerpt]/auteur[degree]
n Tous les éléments <auteur> qui contiennent au moins un
élément enfant <degree> et qui sont des enfants d'éléments
<livre> contenant au moins un élément <excerpt>.
n livre[@style = /biblio/@specialty ]
n Tous les éléments <livre> dont la valeur de l'attribut style est
égale à celle de l'attribut specialty de l'élément <biblio> à la
racine du document.
n livre[auteur/degree]
n Tous les éléments <livre> qui contiennent des enfants
<auteur> contenant à leur tour au moins un enfant <degree>.
31
A.ZELLOU
Exemples
33
A.ZELLOU
Exemples
n /*/*/*/paragraph
n Sélectionne chaque paragraphe qui a trois parents vers
l’élément racine
n //chapter[not(@num)]
n Sélectionne tous les chapitres sui n’ont pas d’attribut num
n //chapter[@*]
n Sélectionne tout chapitre qui a un attribut
n //chapter[not(@*)]
n Sélectionne tout chapitre qui n’a pas d’attribut
34
A.ZELLOU
Exemples
n auteur[last-name[1] = "Bob"]
n Tous les éléments <auteur> dont le premier élément enfant
<last-name> présente la valeur Bob.
n Equivalente à l'expression précédente.
n auteur[last-name [position()=1]= "Bob"]
n Tous les éléments <auteur> dont le premier élément enfant
<last-name> présente la valeur Bob.
n auteur[. = "Matthew Bob"]
n Tous les éléments <auteur> dont la valeur est Matthew Bob.
n auteur[last-name = "Bob" and ../prix > 50]
n Tous les éléments <auteur> dont un élément enfant <last-
name> a la valeur Bob et un élément frère <prix> a une valeur
35
supérieure à 50. A.ZELLOU
Exemples
n livre[position() ≤ 3]
n Les trois premiers livres (1, 2, 3).
n auteur[not(last-name = "Bob")]
n Tous les éléments <auteur> qui ne contiennent pas d'éléments
enfants <last-name> dont la valeur est Bob.
n auteur[first-name = "Bob"]
n Tous les éléments <auteur> qui contiennent au moins un
élément enfant <first-name> dont la valeur est Bob.
n auteur[* = "Bob"]
n Tous les éléments auteur contenant tout élément enfant dont la
valeur est Bob.
36
A.ZELLOU
Exemples
37
A.ZELLOU
Merci