XPath Syntaxe


XPath utilise des expressions de chemin pour sélectionner des nœuds ou des ensembles de nœuds dans un document XML. Les nœuds sont sélectionnés en suivant un chemin ou des étapes.


Document XML d'exemple

Nous utiliserons ce document XML dans les exemples ci-dessous.

Exemple

<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="eng">Apprentissage XML</title> <price>39.95</price> </book> </bookstore>


Sélection de nœuds

XPath utilise des expressions de chemin pour sélectionner des nœuds dans un document XML. Les nœuds sont sélectionnés en suivant un chemin ou des étapes. Les expressions de chemin les plus utiles sont listées ci-dessous :

Expression Description
nodename Sélectionne tous les nœuds enfants de ce nœud.
/ Sélectionne à partir du nœud racine (prend les nœuds enfants).
// Sélectionne les nœuds du document à partir du nœud courant qui correspondent à la sélection, indépendamment de leur position (prend les nœuds descendants).
. Sélectionne le nœud actuel.
.. Sélectionne le parent du nœud actuel.
@ Sélectionne les attributs.

Dans le tableau ci-dessous, nous avons listé quelques expressions de chemin et les résultats des expressions :

Expression de chemin Résultat
bookstore Sélectionne tous les nœuds nommés bookstore.
/bookstore

Sélectionne l'élément racine bookstore.

Remarque : Si le chemin commence par une barre oblique ( / ), ce chemin représente toujours un chemin absolu vers un élément !

bookstore/book Sélectionne tous les éléments book qui sont des enfants de bookstore.
//book Sélectionne tous les éléments enfants book, quelle que soit leur position dans le document.
bookstore//book Sélectionne tous les éléments book qui sont des descendants de l'élément bookstore, quel que soit leur emplacement sous bookstore.
//@lang Sélectionne tous les attributs nommés lang.


Prédicats

Les prédicats sont utilisés pour trouver un nœud spécifique ou un nœud qui contient une valeur spécifiée.

Les prédicats sont intégrés entre crochets.

Dans le tableau ci-dessous, nous avons listé quelques expressions de chemin avec des prédicats, et les résultats des expressions :

Expression de chemin Résultat
/bookstore/book[1] Sélectionne le premier élément book qui est un enfant de bookstore.
/bookstore/book[last()] Sélectionne le dernier élément book qui est un enfant de bookstore.
/bookstore/book[last()-1] Sélectionne l'avant-dernier élément book qui est un enfant de bookstore.
/bookstore/book[position()<3] Sélectionne les deux premiers éléments book qui sont des enfants de l'élément bookstore.
//title[@lang] Sélectionne tous les éléments title qui ont un attribut nommé lang.
//title[@lang='eng'] Sélectionne tous les éléments title qui ont un attribut lang dont la valeur est eng.
/bookstore/book[price>35.00] Sélectionne tous les éléments book de l'élément bookstore, et la valeur de leur élément price doit être supérieure à 35.00.
/bookstore/book[price>35.00]//title Sélectionne tous les éléments title des éléments book dans l'élément bookstore, et la valeur de leur élément price doit être supérieure à 35.00.


Sélection de nœuds inconnus

Les caractères génériques XPath peuvent être utilisés pour sélectionner des éléments XML inconnus.

Joker Description
* Correspond à n'importe quel nœud élément.
@* Correspond à n'importe quel nœud attribut.
node() Correspond à n'importe quel type de nœud.

Dans le tableau ci-dessous, nous avons répertorié quelques expressions de chemin et les résultats de ces expressions :

Expression de chemin Résultat
/bookstore/* Sélectionne tous les éléments enfants de l'élément bookstore.
//* Sélectionne tous les éléments du document.
//title[@*] Sélectionne tous les éléments title qui possèdent des attributs.


Sélection de plusieurs chemins

En utilisant l'opérateur "|" dans les expressions de chemin, vous pouvez sélectionner plusieurs chemins.

Dans le tableau ci-dessous, nous avons répertorié quelques expressions de chemin et les résultats de ces expressions :

Expression de chemin Résultat
//book/title | //book/price Sélectionne tous les éléments title et price des éléments book.
//title | //price Sélectionne tous les éléments title et price du document.
/bookstore/book/title | //price Sélectionne tous les éléments title des éléments book qui appartiennent à l'élément bookstore, ainsi que tous les éléments price du document.
Autres extensions