Bonjour,
J'ai un petit souci pur récupérer des données.
J'ai un fichier xml (non fait par moi et impossible à changer) que je dois transformer vers un autre codage xml :
le fichier en question (c'est un fichier test, en fait mon fichier est un export open office) :
<doc>
<entree>
<vedette>vedette</vedette>
<test>
<term forme="P34">F</term>
</test>
<test>
<term forme="P34">M</term>
</test>
</entree>
</doc>
Je souhaite avoir :
<doc>
<entree>
<vedette/>
<termF>F</termF>
<termM>M</termM>
</entree>
</doc>
En faisant une seule template sur <entree>, j'y arrive sans problème mais je préfère faire des templates sur chaque balises
J'ai donc fait :
<xsl:template match="term[@forme='P34']">
<xsl:for-each select="ancestor-or-self::entree//term[@forme='P34']">
<xsl:if test="position()=1">
<xsl:element name="termF">
<xsl:apply-templates/>
</xsl:element>
</xsl:if>
<xsl:if test="position()=2">
<xsl:element name="termM">
<xsl:apply-templates/>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:template>
Mais comme résultat
<doc>
<vedette>vedette</vedette>
<termF>F</termF><termM>M</termM>
<termF>F</termF><termM>M</termM>
</doc>
Il répète deux fois les infos, où se trouve mon erreur, ou ya-til une autre solution ?
Merci d'avoir pris le temps de me lire