Si avec le document XML suivant :
<records>
<record> truc </record>
<record> bidule </record>
<record> chouette </record>
</records>
On souhaite obtenir le tableau suivant :
1 | truc 2 | bidule 3 | chouette
et bien on aura le template suivant :
<xsl:template match="record"> <xsl:value-of select="count(./preceding-sibling::record) + 1" /> <xsl:text> | </xsl:text> <xsl:value-of select="text()" /> </xsl:template>
biensûr on aurait pu également l'écrire comme ceci :
<xsl:template match="records">
<xsl:for-each select="record">
<xsl:value-of select="position()" />
<xsl:text> | </xsl:text>
<xsl:value-of select="text()" />
</xsl:for-each>
</xsl:template>
L'utilisation de la fonction position() à la place de count(./preceding-sibling::record) + 1n'aurait pas donné le même résultat.