je XML quelque chose comme ceci:XSLT: supprimer tous, mais la première occurrence d'un noeud donné
<MyXml>
<RandomNode1>
<TheNode>
<a/>
<b/>
<c/>
</TheNode>
</RandomeNode1>
<RandomNode2>
</RandomNode2>
<RandomNode3>
<RandomNode4>
<TheNode>
<a/>
<b/>
<c/>
</TheNode>
</RandomNode4>
</RandomNode3>
</MyXml>
Où <TheNode>
apparaît dans le XML, mais pas au même niveau, souvent profond dans d'autres nœuds. Ce que je dois faire est d'éliminer toutes les occurrences de <TheNode>
SAUF le premier. Le reste est redondant et prend de la place. Quel serait le XSL qui pourrait faire cela?
J'ai quelque chose comme ceci:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="//TheNode[position()!=1]">
</xsl:template>
</xsl:stylesheet>
Mais ce n'est pas correct. Aucune suggestion?
Il n'y a pas besoin d'un départ ' // 'opérateur dans les modèles. –