Exemple 1
La syntaxe XPath de base est similaire à la recherche de fichiers dans un système de fichiers. Si le chemin commence par une barre oblique /, alors le chemin représente un chemin absolu vers un élément.
/AAA
Sélectionnez l'élément racine AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<JJ>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/CCC
Sélectionnez tous les éléments enfants CCC de AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<JJ>
<BBB/>
</DDD>
<CCC/>
</AAA>
/AAA/DDD/BBB
Sélectionne tous les éléments enfants de DDD, un élément enfant de AAA
<AAA>
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<JJ>
<BBB/>
</DDD>
<CCC/>
</AAA>
Exemple 2
Si le chemin commence par une double barre oblique //, cela signifie que tous les éléments du document qui satisfont aux règles après la double barre oblique // sont sélectionnés (quelle que soit la relation hiérarchique) //BBB
Sélectionnez tous les éléments BBB
<AAA>
<BBB/>
<CCC/>
<BBB/>
<JJ>
<BBB/>
</DDD>
<CCC>
<JJ>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
//DDD/BBB
Sélectionnez tous les éléments BBB dont l'élément parent est DDD
<AAA>
<BBB/>
<CCC/>
<BBB/>
<JJ>
<BBB/>
</DDD>
<CCC>
<JJ>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
Exemple 3
L'astérisque* signifie sélectionner tous les éléments situés par le chemin avant l'astérisque
/AAA/CCC/DDD/*
Sélectionnez tous les éléments avec des chemins attachés à /AAA/CCC/DDD
<AAA>
<XXX>
<JJ>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<JJ>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
/*/*/*/BBB
Sélectionnez tous les éléments BBB qui ont 3 éléments ancêtres
<AAA>
<XXX>
<JJ>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<JJ>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
//*
Sélectionnez tous les éléments
<AAA>
<XXX>
<JJ>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</XXX>
<CCC>
<JJ>
<BBB/>
<BBB/>
<EEE/>
<FFF/>
</DDD>
</CCC>
<CCC>
<BBB>
<BBB>
<BBB/>
</BBB>
</BBB>
</CCC>
</AAA>
Exemple 4
L'expression dans le nombre carré peut spécifier davantage l'élément, où le nombre représente la position de l'élément dans le jeu de sélection, et la fonction last() représente le dernier élément du jeu de sélection
/AAA/BBB[1]
.
Sélectionnez le premier élément enfant BBB de AAA
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
/AAA/BBB[dernière()]
Sélectionnez le dernier élément enfant BBB de AAA
<AAA>
<BBB/>
<BBB/>
<BBB/>
<BBB/>
</AAA>
Exemple 5
//@identifiant
Sélectionnez tous les attributs d'identifiant
<AAA>
<ID BBB = "b1"/>
<ID BBB = "b2"/>
<Nom BBB = "bbb"/>
<BBB/>
</AAA>
//BBB[@id]
Sélectionnez les éléments BBB avec les attributs id
<AAA>
<ID BBB = "b1"/>
<ID BBB = "b2"/>
<Nom BBB = "bbb"/>
<BBB/>
</AAA>
//BBB[@nom]
Sélectionnez l'élément BBB avec l'attribut name
<AAA>
<ID BBB = "b1"/>
<ID BBB = "b2"/>
<Nom BBB = "bbb"/>
<BBB/>
</AAA>
//BBB[@*]
Sélectionnez les éléments BBB avec n'importe quel attribut
<AAA>
<ID BBB = "b1"/>
<ID BBB = "b2"/>
<Nom BBB = "bbb"/>
<BBB/>
</AAA>
//BBB[pas (@*)]
Sélectionnez les éléments BBB sans attributs
<AAA>
<ID BBB = "b1"/>
<ID BBB = "b2"/>
<Nom BBB = "bbb"/>
<BBB/>
</AAA>
Exemple 6
La valeur de l'attribut peut être utilisée comme critère de sélection. La fonction normalize-space supprime les espaces de début et de fin et remplace les chaînes d'espaces consécutives par un seul espace
//BBB[@id='b1']
Sélectionnez l'élément BBB qui contient l'identifiant d'attribut et sa valeur est 'b1'
<AAA>
<ID BBB = "b1"/>
<Nom BBB = " bbb "/>
<Nom BBB = "bbb"/>
</AAA>
//BBB[@name='bbb']
Sélectionnez l'élément BBB qui contient le nom de l'attribut et sa valeur est 'bbb'
<AAA>
<ID BBB = "b1"/>
<Nom BBB = " bbb "/>
<Nom BBB = "bbb"/>
</AAA>
//BBB[normalize-space (@name)='bbb']
Sélectionnez l'élément BBB qui contient le nom de l'attribut et sa valeur (après avoir supprimé les espaces de début et de fin à l'aide de la fonction normalize-space) est 'bbb'
<AAA>
<ID BBB = "b1"/>
<Nom BBB = " bbb "/>
<Nom BBB = "bbb"/>
</AAA>
Exemple 7
La fonction count() peut compter le nombre d'éléments sélectionnés
//*[count(BBB)=2]
Sélectionnez des éléments avec 2 éléments enfants BBB
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<JJ>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
//*[compte(*)=2]
Sélectionnez un élément avec 2 enfants
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<JJ>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
//*[compte(*)=3]
Sélectionnez un élément avec 3 éléments enfants
<AAA>
<CCC>
<BBB/>
<BBB/>
<BBB/>
</CCC>
<JJ>
<BBB/>
<BBB/>
</DDD>
<EEE>
<CCC/>
<DDD/>
</EEE>
</AAA>
Exemple 8
La fonction name() renvoie le nom de l'élément, la fonction start-with() renvoie true lorsque la première chaîne de paramètre de la fonction commence par le deuxième caractère de paramètre et la fonction contain() renvoie true lorsque son premier paramètre de chaîne renvoie true lorsque le deuxième paramètre de chaîne est inclus
//*[name()='BBB']
Sélectionnez tous les éléments nommés BBB (ici équivalent à //BBB)
<AAA>
<Cci>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
//*[commence par(nom(),'B')]
Sélectionnez tous les éléments dont les noms commencent par "B"
<AAA>
<Cci>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
//*[contient(nom(),'C')]
Sélectionnez tous les éléments dont les noms contiennent "C"
<AAA>
<CCI>
<BBB/>
<BBB/>
<BBB/>
</BCC>
<DDB>
<BBB/>
<BBB/>
</DDB>
<BEC>
<CCC/>
<DBD/>
</BEC>
</AAA>
Exemple 9
Plusieurs chemins peuvent être combinés à l'aide du délimiteur |
//CCC //BBB
Sélectionnez tous les éléments CCC et BBB
<AAA>
<BBB/>
<CCC/>
<JJ>
<CCC/>
</DDD>
<EEE/>
</AAA>
/AAA/EEE //BBB
Sélectionnez tous les éléments BBB et tous les éléments EEE qui sont des enfants de AAA
<AAA>
<BBB/>
<CCC/>
<JJ>
<CCC/>
</DDD>
<EEE/>
</AAA>
/AAA/EEE //DDD/CCC |
Il n'y a pas de limite au nombre de chemins pouvant être fusionnés
<AAA>
<BBB/>
<CCC/>
<JJ>
<CCC/>
</DDD>
<EEE/>
</AAA>
Exemple 10
L'axe enfant contient les éléments enfants du nœud contextuel. En tant qu'axe par défaut, il peut être ignoré
.
Équivalent à /enfant ::AAA
<AAA>
<BBB/>
<CCC/>
</AAA>
/enfant::AAA
Équivalent à /AAA
<AAA>
<BBB/>
<CCC/>
</AAA>
/AAA/BBB
Équivalent à /enfant::AAA/enfant::BBB
<AAA>
<BBB/>
<CCC/>
</AAA>
/enfant::AAA/enfant::BBB
Équivalent à /AAA/BBB
<AAA>
<BBB/>
<CCC/>
</AAA>
/enfant::AAA/BBB
Les deux peuvent être combinés
<AAA>
<BBB/>
<CCC/>
</AAA>
Exemple 11
L'axe descendant contient les descendants du nœud de contexte. Un descendant fait référence à un nœud enfant ou au nœud enfant d'un nœud enfant, etc., donc l'axe descendant ne contient pas de nœuds d'attribut et d'espace de noms
/descendant::*.
Sélectionne tous les descendants de l'élément racine du document. Autrement dit, tous les éléments sont sélectionnés.
<AAA>
<BBB>
<JJ>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<JJ>
<EEE>
<JJ>
<FFF/>
</DDD>
</EEE>
</DDD>
</CCC>
</AAA>
/AAA/BBB/descendant::*
Sélectionne tous les éléments descendants de /AAA/BBB
<AAA>
<BBB>
<JJ>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
<CCC>
<JJ>
<EEE>
<JJ>
<FFF/>
</DDD>
</EEE>
</DDD>
</CCC>
</AAA>
//CCC/descendant::*
Sélectionnez tous les éléments qui ont CCC parmi leurs ancêtres
<AAA>
<BBB>
<JJ>
<CCC>
<DDD/>
<EEE/>
</CCC>
</DDD>
</BBB>
</AAA>