/ / XSLT - Ajoute l'attribut d'identifiant incrémentant aux nœuds - xml, xslt, xslt-2.0

XSLT - Ajout d'un attribut d'incrémentation aux nœuds - xml, xslt, xslt-2.0

J'ai un xml comme ça,

<doc>
<section>1<section>
<section>1<section>
<p>22</p>
<p>22</p>
<p>22</p>
<footer></footer>
<footer></footer>
<footer></footer>
</doc>

ce que je dois faire id ajouter un nouvel attribut à <footer> nœuds. Donc, la sortie serait

<doc>
<section>1<section>
<section>1<section>
<p>22</p>
<p>22</p>
<p>22</p>
<footer id="number-1"></footer>
<footer id="number-2"></footer>
<footer id="number-3"></footer>
</doc>

Je peux ajouter un nouvel attribut à <footer> noeud mais le problème auquel je suis confronté est d’ajouter des identifiants d’incrémentation dans XSLT.

<xsl:template match="footer">
<xsl:copy>
<xsl:attribute name="id"><xsl:value-of select=""number-"[position()]"/></xsl:attribute>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

J’ai essayé d’utiliser la variable xsl, mais comme elle ne peut pas changer comme d’autres langues, je n’ai pas pu le faire. J’ai aussi essayé avec position() fonction mais elle ne donne que la position du nœud actuel.so i ce numéro de cas est indiqué à partir de 6.

Pouvez-vous me suggérer une solution? Merci d'avance

Réponses:

2 pour la réponse № 1

tu pourrais utiliser

<xsl:attribute name="id">
<xsl:value-of select=""number-""/>
<xsl:number level="any"/>
</xsl:attribute>