Bonjour à tous,
Je travaille actuellement à produire une édition HTML d'un court texte pour lequel j'ai la volonté de faire quelques notes de renvois en bas de page.
Voici mon XML source :
Voici ma tentative de transformation XSLT :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <text> <p ana="description">Voici le texte d'un paragraphe<note>Ceci est une note.</note> descriptif.</p> <said ana="replique" who="JM">- Bonjour, ceci est ma première réplique</said> <p>Ceci est un paragraphe comprenant un autre mot<note>Définition de "mot".</note> à définir.</p></text>
Ma volonté est simplement de générer un fichier HTML où, pour chaque note, celles-ci porteraient un nombre qui aurait été généré automatiquement (par ma fonction for-each). Je voudrais, à terme, établir des liens (aller-retour) entre l'endroit où se trouve l'appel de note, et ladite note en bas de page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <xsl:template match="note"> <xsl:variable name="Notetraitée"><xsl:value-of select="."/></xsl:variable> <xsl:if test="not(preceding::note[.=$Notetraitée])"> <!-- ou, ici "not(preceding::persName=$Notetraité)" = NE PAS AVOIR DE PREDECESSEUR QUI S'APPELLE NOTE ET QUI SOIT EGAL A LA VARIABLE Notetraite EN COURS DE TRAITEMENT --> <xsl:element name="note"> <xsl:attribute name="n"> <xsl:value-of select="count(/text/descendant::note[.=$Notetraitée])"/> </xsl:attribute> <xsl:attribute name="place">foot</xsl:attribute> <xsl:apply-templates/> </xsl:element> <!-- dans le cas du test, affichage de la valeur --> <!-- on compte le nombre de <note> qui ont la même valeur, dans tout le document (on va chercher tous les descendants qui ont la même valeur que l'élément en cours de traitement --> <xsl:for-each select="following::note[.=$Notetraitée]"> <xsl:element name="note"> <xsl:attribute name="n"> <xsl:value-of select="count(/text/descendant::note[.=$Notetraitée])+1"/> </xsl:attribute> <xsl:attribute name="place">foot</xsl:attribute> </xsl:element> </xsl:for-each> </xsl:if> </xsl:template>
J'ai essayé maintes transformations, mais cela ne fonctionne pas et je m'arrache les cheveux.
Je vous remercie par avance pour les éclaircissements que vous pourrez m'apporter.
Jonas
Partager