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