Syntaxe XPath

XPath utilise des expressions de chemin pour sélectionner des noeuds ou des ensembles de noeuds dans un document XML. Les noeuds sont sélectionnés en suivant un chemin (path) ou des étapes (steps).

Document XML d'exemple

Nous allons utiliser ce document XML dans les exemples suivants.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Sélectionnez le noeud

XPath utilise des expressions de chemin pour sélectionner des noeuds dans un document XML. Les noeuds sont sélectionnés en suivant un chemin ou un étape.

Voici les expressions de chemin les plus utiles :

Expression Description
nodename Sélectionnez tous les descendants de ce noeud.
/ Sélectionnez à partir du noeud racine.
// Choisissez des noeuds dans le document qui correspondent à la sélection actuelle, sans tenir compte de leur position.
. Sélectionnez le noeud actuel.
.. Sélectionnez le parent du noeud actuel.
@ Sélectionnez l'attribut.

Exemple

Dans le tableau suivant, nous avons répertorié certains expressions de chemin et leurs résultats :

Expression de chemin Résultat
bookstore Sélectionnez tous les descendants de l'élément bookstore.
/bookstore

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

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

bookstore/book Sélectionnez tous les éléments book qui sont des éléments enfants de bookstore.
//book Sélectionnez tous les éléments book sous éléments, peu importe leur position dans le document.
bookstore//book Sélectionnez tous les éléments book descendants de l'élément bookstore, peu importe leur position sous bookstore.
//@lang Sélectionnez toutes les propriétés nommées lang.

Prédicats (Predicates)

Les prédicats sont utilisés pour trouver un nœud spécifique ou un nœud contenant une valeur spécifique.

Les prédicats sont encadrés par des crochets.

Exemple

Dans le tableau suivant, nous avons énuméré quelques expressions de chemin avec des prédicats ainsi que leurs résultats :

Expression de chemin Résultat
/bookstore/book[1] Sélectionnez le premier élément book qui est un enfant de l'élément bookstore.
/bookstore/book[last()] Sélectionnez le dernier élément book qui est un enfant de l'élément bookstore.
/bookstore/book[last()-1] Sélectionnez le deuxième dernier élément book qui est un enfant de l'élément bookstore.
/bookstore/book[position()<3] Sélectionnez les deux premiers éléments book qui sont des enfants de l'élément bookstore.
//title[@lang] Sélectionnez tous les éléments de titre qui ont une propriété nommée lang.
//title[@lang='eng'] Sélectionnez tous les éléments de titre qui ont une propriété lang égale à eng.
/bookstore/book[price>35.00] Sélectionnez tous les éléments book de l'élément bookstore, et dont l'élément price a une valeur supérieure à 35.00.
/bookstore/book[price>35.00]/title Sélectionnez tous les éléments de titre des éléments book de l'élément bookstore, et dont l'élément price a une valeur supérieure à 35.00.

Sélectionner des nœuds inconnus

Les mots dièse de XPath peuvent être utilisés pour sélectionner des éléments XML inconnus.

Mot dièse Description
* Correspondre à tout nœud d'élément.
@* Correspondre à tout nœud d'attribut.
node() Correspondre à tout type de nœud.

Exemple

Dans le tableau suivant, nous avons énuméré quelques expressions de chemin ainsi que leurs résultats :

Expression de chemin Résultat
/bookstore/* Sélectionnez tous les éléments enfants de l'élément bookstore.
//* Sélectionnez tous les éléments du document.
//title[@*] Sélectionnez tous les éléments de titre portant des attributs.

Sélectionner plusieurs chemins

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

Exemple

Dans le tableau suivant, nous avons énuméré quelques expressions de chemin ainsi que leurs résultats :

Expression de chemin Résultat
//book/title | //book/price Sélectionnez tous les éléments de titre et de prix de l'élément book.
//title | //price Sélectionnez tous les éléments title et price du document.
/bookstore/book/title | //price Sélectionnez tous les éléments title appartenant à l'élément bookstore et tous les éléments price du document.