Salut,
J'ai mis le sommaire du manuel d'utilisation de ma calculatrice dans un fichier à part :
1 2 3 4 5 6 7 8 9 10 11 12
| <?xml version="1.0" encoding="iso-8859-1" ?>
<sommaire>
<page>presentation</page>
<page>premier_calcul</page>
<page>liste_type</page>
<page>syntaxe</page>
<page>operateur</page>
<page>fonction</page>
<page>commande</page>
<page>fonction_util</page>
<page>programmation</page>
</sommaire> |
Ce qui me permet de générer le sommaire automatiquement, plutôt pratique !
Le titre des pages est situé dans le document XML associé (balise <h1>).
Maintenant, j'aimerai bien calculer la position d'une page dans ce sommaire : si la page syntaxe est affichée, j'aimerai récupérer la position 4. J'ai pondé ce premier jet :
1 2 3 4 5 6 7 8 9 10
| <xsl:template match="h1">
<h1>
<xsl:for-each select="document('xml/sommaire.xml')/sommaire/page">
<xsl:if test="text()=$page">
<xsl:number value="position()" format="I. " />
</xsl:if>
</xsl:for-each>
<xsl:value-of select="." />
</h1>
</xsl:template> |
Mais un for-each, c'est un peu lourd. Y'a pas plus simple ? J'ai fait deux/trois tests avec xsl:number, mais je ne m'en suis pas sorti :-(
L'idéal serait une commande du style :
<xsl:value-of select="document('xml/sommaire.xml')/sommaire/page[text()=$page]/position()" />
@+ Haypo
Partager