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