Bonjour à tous,
Dans le but de générer un sommaire, j'analyse un fichier XML et j'applique un template sur les h2 qui corresponde à une partie. Sauf que ces titres n'ont pas tout le temps un id donc il n'est pas possible de faire d'ancre.
C'est pourquoi je cherche à mettre un id en fonction de l'occurence de h2.
Voici un XML en entrée : XML
Voici le XSL complet : XSL
En sortie, j'obtiens 4 id :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <!-- Mettre des id aux h2 --> <xsl:template match="h2"> <xsl:if test="not(string-length(./@id) > 0)"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:attribute name="id"> <xsl:text>title-</xsl:text> <xsl:value-of select="position()" /> </xsl:attribute> <xsl:apply-templates /> </xsl:copy> </xsl:if> </xsl:template>
- title-14
- title-26
- title-64
- title-81
Je souhaiterais obtenir
- title-1
- title-2
- title-3
- title-4
S'il n'est pas possible de le faire directement dans le h2, je suppose qu'il faut que je me fasse une fonction qui boucle sur chaque h2 et qui incrémente le compteur.
Mais j'ai du mal à voir où l'insérer dans mon XSL.
Note: Je n'ai pas la main sur le fichier XML en entrée
EDIT: Les h2 ne sont pas obligatoirement définis au même niveau (un h2 peut être au niveau 1, comme au niveau 2, 3, ...)
Partager