Axes XPath (axes)

Document d'instance 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>

Axe XPath

L'axe peut définir un ensemble de noeuds par rapport au noeud courant.

Nom de l'axe Résultat
ancestor Sélectionner tous les ancêtres du noeud courant (parent, grand-père, etc.).
ancestor-or-self Sélectionner tous les ancêtres du noeud courant (parent, grand-père, etc.) ainsi que le noeud courant lui-même.
attribute Sélectionnez toutes les propriétés du nœud courant.
child Sélectionnez tous les éléments enfants du nœud courant.
descendant Sélectionner tous les éléments descendants du noeud courant (fils, petits-enfants, etc.).
descendant-or-self Sélectionner tous les éléments descendants du noeud courant (fils, petits-enfants, etc.) ainsi que le noeud courant lui-même.
following Sélectionner tous les noeuds après la balise de fin du noeud courant dans le document.
namespace Sélectionner tous les noeuds de l'espace de noms du noeud courant.
parent Sélectionner le noeud parent du noeud courant.
preceding Sélectionner tous les noeuds avant la balise de début du noeud courant dans le document.
preceding-sibling Sélectionner tous les noeuds de même niveau avant le noeud courant.
self Sélectionner le noeud courant.

Expression du chemin d'emplacement

Le chemin d'emplacement peut être absolu ou relatif.

L'chemin absolu commence par une barre oblique (/), tandis que le chemin relatif ne le fait pas. Dans les deux cas, le chemin d'emplacement comprend un ou plusieurs étapes, chaque étape étant séparée par une barre oblique :

Chemin de position absolu :

/step/step/...

Chemin de position relatif :

step/step/...

Chaque étape est calculée en fonction des nœuds du jeu de nœuds courant.

Étape (step) inclut :

Axe (axis)
Définir la relation d'arbre entre le nœud sélectionné et le nœud courant
Test de nœud (node-test)
Identifier les nœuds à l'intérieur d'un axe
Zéro ou plusieurs prédicats (predicate)
Affiner davantage le jeu de nœuds sélectionnés

Syntaxe des étapes :

Nom d'axe::test de nœud [prédicat]

Instance

Exemple Résultat
child::book Sélectionnez tous les nœuds book appartenant à tous les éléments enfants du nœud courant.
attribute::lang Sélectionnez la propriété lang du nœud courant.
child::* Sélectionnez tous les éléments enfants du nœud courant.
attribute::* Sélectionnez toutes les propriétés du nœud courant.
child::text() Sélectionnez tous les nœuds enfants textuels du nœud courant.
child::node() Sélectionnez tous les nœuds enfants du nœud courant.
descendant::book Sélectionnez tous les descendants book du nœud courant.
ancestor::book Sélectionnez tous les ancêtres book du nœud courant.
ancestor-or-self::book Sélectionnez tous les ancêtres book du nœud courant ainsi que le nœud courant (si ce nœud est un nœud book)
child::*/child::price Sélectionnez tous les descendants price du nœud courant.