Les axes nodaux permettent aux X-Pointeurs de localiser une ressource dans l'arborescence d'un document XML.

Voir le document XML qui sert de support aux exemples de cette section.

L'axe nodal ancestor sélectionne tous les noeuds ancètres, c'est-à-dire le parent du noeud courant ainsi que tous les noeuds ascendants jusqu'au noeud racine du document XML.

xpointer(//logiciel[@code = '13413363'])/ancestor::*[position() = 1])

Le pointeur sélectionne dans ce cas l'élément parent <categorie nom="Editeur"> placé en première position avant l'élément <logiciel> dont le code est égal à 13413363.

L'axe ancestor-or-self sélectionne comme l'axe précédent les noeuds ancètres y compris le noeud courant.

xpointer(/1/1/3/3/ancestor-or-self::*[position() = 1]/child::nom)

Ce pointeur sélectionne l'élément <nom>CoffeeCup HTML Editor 8.9</nom> enfant du premier parent <logiciel> de l'élément <editeur lien="...">CoffeeCup Inc.</lien> étant le troisième élément de son ancètre <logiciel> qui est également le troisième élément de <categorie> qui lui même correspond au premier élément de son unique père <logitheque> du noeud racine du document XML.

L'axe attribute sélectionne les attributs du noeud courant.

xpointer(//logiciel[position() = 4]/editeur/attribute::lien)

Cette expression sélectionne lien="http://xmleverywhere.com/cooktop/", l'attribut appartenant à l'élément <editeur lien="...">XML Everywhere</editeur> du quatrième élément dans l'arborescence du document XML.

L'axe child sélectionne les éléments enfants du noeud courant.

xpointer(//logiciel[count(*) = 5]/child::nom)

L'expression atteint l'élément <nom>Cooktop 2.200</nom> du noeud <logiciel> dont le nombre d'éléments est égal à 5.

L'axe descendant sélectionne tous les éléments descendants du noeud courant, c'est-à-dire les fils, petit-fils, etc..

xpointer(/descendant::logiciel[position() = 5])

Cette expression atteint le cinquième élément <logiciel> petit-fils du noeud racine.

L'axe descendant-or-self sélectionne tous les éléments descendants ainsi que le noeud courant lui-même.

xpointer(//categorie/descendant-or-self::logiciel[nom = 'BBEdit 6.1'])

Ce pointeur cible tous l'élément <logiciel> dont la valeur de <nom> est égale à BBEdit 6.1 ainsi que tous ses noeuds descendants <nom>, <commentaire>, etc..

L'axe following sélectionne tous les éléments suivant le noeud courant hormis les attributs et espaces de noms.

xpointer(//logiciel[@code = '13413363']
                                 /prix/following::*[position() = 7])

Cette expression atteint le septième élément dans l'arborescence du document XML après l'élément <prix> étant lui-même dans le noeud <logiciel> dont le code est 13413363. Ce septième élément est <prix...>49,00</prix> du noeud <logiciel> qui suit. Pour parvenir à cet endroit, les éléments ont été comptés sans tenir compte de leur niveau hiérarchique dans l'ordre suivant :

  1. <logiciel>
  2. <nom>CoffeeCup HTML Editor 8.9</nom>
  3. <commentaire>Un logiciel...</commentaire>
  4. <editeur lien="...">CoffeeCup Inc.</editeur>
  5. <langue>US</langue>
  6. <plateforme>Win</plateforme>
  7. <prix monnaie="$US">49,00</prix>

L'axe following-sibling sélectionne les éléments suivants dont le parent est le même que celui du noeud courant.

xpointer(//logiciel[nom = 'XML Spy 3.5']
                             /commentaire/following-sibling::*[position() = 4])

Le pointeur récupère l'élément < prix> positionné en quatrième position après le noeud <commentaire> de l'élément <logiciel> dont la valeur de son élément <nom> est égale à XML Spy 3.5. Une position au-delà de 4 provoquerait une erreur puisqu'il n'existe pas d'autres éléments frères après <prix>.

L'axe parent sélectionne l'élément parent du noeud courant.

xpointer(//nom[position() = 6]/parent::*)

Cette expression cible le père <logiciel code="13404148">...<logiciel> du sixième élément <nom>Web Expert 2000</nom> dans l'arborescence du document.

L'axe preceding sélectionne, sans tenir compte du niveau hiérarchique, tous les noeuds précédant le noeud courant hormis les attributs et les espaces de noms.

xpointer(//logiciel[last()]/preceding::*[position() = 1]

Le pointeur sélectionne l'élément <prix monnaie="$US">199,00<prix> précédant le dernier élément <logiciel code="13404148">.

L'axe preceding-sibling sélectionne tous les noeuds précédents qui ont le même père que l'élément courant.

xpointer(//plateforme[self::* = Win][1]/preceding-sibling::nom)

Le XPointer localise l'élément frère <nom>Dreamweaver 4</nom> du premier noeud <plateforme> rencontré ayant la valeur Win.

Laxe self sélectionne le noeud courant.

xpointer(/self::node())

L'expression pointe le noeud racine du document XML.