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