Cette question nécessite un peu réponse plus détaillée que juste en montrant une bonne source Muenchian Grouping.
La raison est que le regroupement nécessaire nécessite d'identifier à la fois les noms de tous les enfants d'un élément «ele [SomeString]» et leur parent. Such grouping nécessite de définir une clé qui est définie de manière unique par les deux sources uniques, généralement via la concaténation.
Cette transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:key name="kElByName" match="*"
use="concat(generate-id(..), '+',name())"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[starts-with(name(), 'ele')]">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select=
"*[generate-id()
=
generate-id(key('kElByName',
concat(generate-id(..), '+',name())
)[1])
]"
/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
lorsqu'il est appliqué sur ce document XML:
<Root>
<ele1>
<child1>context1</child1>
<child2>test1</child2>
<child1>context1</child1>
</ele1>
<ele2>
<child1>context2</child1>
<child2>test2</child2>
<child1>context2</child1>
</ele2>
<ele3>
<child2>context2</child2>
<child2>test2</child2>
<child1>context1</child1>
</ele3>
</Root>
produit le résultat recherché:
<Root>
<ele1>
<child1>context1</child1>
<child2>test1</child2>
</ele1>
<ele2>
<child1>context2</child1>
<child2>test2</child2>
</ele2>
<ele3>
<child2>context2</child2>
<child1>context1</child1>
</ele3>
</Root>
Ceci est plus d'un soupçon qu'une réponse. Les gens ont besoin de réponses sérieuses et responsables. –
Démontrez de quelle manière cela est irresponsable ou insignifiant. Veuillez fournir une URL qui indique clairement que toutes les réponses sur l'offre à commandes doivent être complètes et définitives, quelle que soit la qualité de la question. Indiquez ce que vous espériez accomplir avec vos commentaires ** mois ** après que la question a été posée. – annakata
Je suis content que vous ayez trouvé le temps de baisser celui-ci Dimitre, je pense qu'il y en a d'autres et vous aurez le set. – annakata