Syntaxe XPath

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 (path) ou des étapes (steps).

Document d'exemple XML

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é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.

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.
// À partir du noeud sélectionné, sélectionnez les noeuds du document sans considérer leur position.
. Sélectionnez le noeud courant.
.. Sélectionnez le noeud parent du noeud courant.
@ Sélectionnez les attributs.

Exemple

Dans le tableau suivant, nous avons répertorié certains expressions de chemin avec leur résultat :

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 un chemin absolu vers un élément !

bookstore/book Sélectionnez tous les éléments book qui sont descendants de l'élément bookstore.
//book Sélectionnez tous les éléments book qui sont descendants, peu importe leur position dans le document.
bookstore//book Sélectionnez tous les éléments book qui sont 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 noeud spécifique ou un noeud contenant une valeur spécifique.

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

Exemple

Dans le tableau suivant, nous avons répertorié certains expressions d'expression avec leur résultat :

Expression de chemin Résultat
/bookstore/book[1] Sélectionnez le premier élément book qui est un descendant de l'élément bookstore.
/bookstore/book[last()] Sélectionnez le dernier élément book qui est un descendant de l'élément bookstore.
/bookstore/book[last()-1] Sélectionnez le deuxième élément book en partant de la fin qui est un descendant de l'élément bookstore.
/bookstore/book[position()<3] Sélectionnez les deux premiers éléments book qui sont des descendants directs de l'élément bookstore.
//title[@lang] Sélectionnez tous les éléments title qui possèdent un attribut nommé lang.
//title[@lang='eng'] Sélectionnez tous les éléments title qui possèdent l'attribut lang avec la valeur eng.
/bookstore/book[price>35.00] Sélectionnez tous les éléments book de l'élément bookstore, et la valeur de l'élément price doit être supérieure à 35,00.
/bookstore/book[price>35.00]/title Sélectionner tous les éléments title des éléments book de l'élément bookstore, où la valeur de l'élément price doit être supérieure à 35.00.

Sélectionner des nœuds inconnus

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

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

Exemple

Dans le tableau suivant, nous listons quelques expressions de chemin et leurs résultats :

Expression de chemin Résultat
/bookstore/* Sélectionner tous les éléments enfants de l'élément bookstore.
//* Sélectionner tous les éléments du document.
//title[@*] Sélectionner tous les éléments title 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 listons quelques expressions de chemin et leurs résultats :

Expression de chemin Résultat
//book/title | //book/price Sélectionnez tous les éléments title et price des éléments 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 aux éléments book de l'élément bookstore, ainsi que tous les éléments price du document.