Bonjour,
J'aimerai transformer un fichier XML afin de ne conserver que la dernière occurrence d'un noeud. Mon critère pour "grouper les noeuds" est sur la valeur d'un noeud fils du noeud à conserver.
J'y suis arrivé en codant en dur la valeur d'un noeud fils, mais je n'arrive pas à le faire sans la mettre en dur.
Un exemple:
<A>
<B>
<C1>1</C1>
<C2>toto</C2>
</B>
<B>
<C1>2</C1>
<C2>titi</C2>
</B>
<B>
<C1>1</C1>
<C2>tutu</C2>
</B>
<B>
<C1>2</C1>
<C2>tyty</C2>
</B>
<B>
<C1>2</C1>
<C2>tete</C2>
</B>
</A>
Je veux obtenir:
<A>
<B>
<C1>1</C1>
<C2>tutu</C2>
</B>
<B>
<C1>2</C1>
<C2>tete</C2>
</B>
</A>
Mon XSL avec la valeur de C1 en dur:
<xsl:template match="A">
<A>
<xsl:for-each select="B[C1='1'][position()=last()]">
<B>
<xsl:copy-of select="*" />
</B>
</xsl:for-each>
</A>
</xsl:template>
j'obtiens bien la derniere occurrence du noeud B dont la valeur de C1 est "1":
<A>
<B>
<C1>1</C1>
<C2>tutu</C2>
</B>
</A>
, mais je voudrais que cela fonctionne quelque soit la valeur de C1.
Merci pour votre aide, ça fait 2 jours que je fais plein d'essais sans succès (notamment en créant des keys...).
Partager