Les axes nodaux permettent de sélectionner des parties de l'arborescence d'un document XML à partir du noeud courant.

En fait, les axes nodaux ouvrent des directions de recherche indiquées par des préfixes situé avant le pattern et séparé par un double deux-points.

préfixe::pattern

L'expression suivante sélectionne l'attribut nom des noeuds éléments fils directs de l'élément service.

following-sibling::service/@nom
Axe nodal Description
ancestor:: représente les noeuds parents du noeud courant jusqu'au noeud racine.
ancestor-or-self:: représente le noeud lui-même avec les mêmes caractèristiques que ancestor.
descendant:: représente les noeuds fils du noeud courant jusqu'au noeud terminal.
descendant-or-self:: représente le noeud lui-même avec les mêmes caractèristiques que descendant.
self:: représente le noeud lui-même.
parent:: représente les noeuds parents directs.
child:: représente les noeuds fils directs.
attribute:: représente les noeuds attributs du noeud courant.
following:: représente tous les noeuds suivant le noeud courant hormis les noeuds attributs et espaces de noms.
following-sibling:: représente la même chose que following mais essentiellement les noeuds qui ont le même parent que le noeud courant.
preceding:: représente tous les noeuds précédant le noeud courant hormis les noeuds attributs et espaces de noms.
preceding-sibling:: représente la même chose que preceding mais essentiellement les noeuds qui ont le même parent que le noeud courant.
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="./axe.xsl"?>
<arriereGrandParent>
  <nom>Arrieres Grands-Parents</nom>
  <GrandOncle>
  <nom>Fils des Arrieres Grands-Parents</nom>
  </GrandOncle>
  <GrandParent>
  <nom>Grand-Parents</nom>
  <Tante>
      <nom>Fille des Grands-Parents</nom>
  </Tante>
  <parent>
      <nom>Parents</nom>
      <Fille>
        <nom>Fille ainée</nom>
      </Fille>
      <Fils>
        <nom>Fils</nom>
        <petitFils>
        <nom>Petit-Fils de Fils</nom>
        </petitFils>
        <petitFille>
        <nom>Petite-Fille de Fils</nom>
        </petitFille>
      </Fils>
      <Fille>
        <nom>Fille</nom>
        <petitFils>
        <nom>Petit-Fils de Fille</nom>
        </petitFils>
        <petitFille>
        <nom>Petite-Fille de Fille</nom>
        </petitFille>
      </Fille>
  </parent>
  </GrandParent>
</arriereGrandParent>
<!-- Feuille de style : axe.xsl -->
<xsl:template match="Fils">
  <h3>
      <xsl:apply-templates select="nom"/> (<xsl:value-of select="name()"/>)</h3>
  <h4>Tous les ancètres</h4>
  <ul>
      <xsl:for-each select="ancestor-or-self::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Les ancètres</h4>
  <ul>
      <xsl:for-each select="ancestor::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Tous les descendants</h4>
  <ul>
      <xsl:for-each select="descendant-or-self::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Les descendants</h4>
  <ul>
      <xsl:for-each select="descendant::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Les parents</h4>
  <ul>
      <xsl:for-each select="parent::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Le noeud courant</h4>
  <ul>
      <xsl:for-each select="self::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Les enfants</h4>
  <ul>
      <xsl:for-each select="child::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Les suivants directs</h4>
  <ul>
      <xsl:for-each select="following-sibling::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Tous les suivants</h4>
  <ul>
      <xsl:for-each select="following::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Les précédents directs</h4>
  <ul>
      <xsl:for-each select="preceding-sibling::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  <h4>Tous les précédents</h4>
  <ul>
      <xsl:for-each select="preceding::*">
        <li>
        <xsl:value-of select="nom"/> (<xsl:value-of select="name()"/>)</li>
      </xsl:for-each>
  </ul>
  </xsl:template>
En savoir plus :
Découvrez cet élément sur le site du W3CDécouvrez cet élément sur le site de Microsoft
Sommaire