Salut,

J'ai mis le sommaire du manuel d'utilisation de ma calculatrice dans un fichier à part :
Code : Sélectionner tout - Visualiser dans une fenêtre à 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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<xsl:value-of select="document('xml/sommaire.xml')/sommaire/page[text()=$page]/position()" />
@+ Haypo