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...).