Ich habe eine XML-Schnipsel wie folgt aus:XSLT 1.0 verschachtelte Gruppierung
<root>
<order>
<item>
<item_type>A</item_type>
<item_type>A</item_type>
<item_type>B</item_type>
<item_type>C</item_type>
</item>
</order>
<order>
<item>
<item_type>A</item_type>
<item_type>B</item_type>
<item_type>C</item_type>
<item_type>C</item_type>
</item>
</order>
<order>
<item>
<item_type>C</item_type>
<item_type>C</item_type>
<item_type>B</item_type>
</item>
</order>
</root>
und ich brauche es durch ITEM_TYPE Element Gruppe, sondern auf „Ordnung“ Element Umfang, so wäre mein Wunsch ausgegeben werden:
<root>
<order>
<item>A</item>
<item>B</item>
<item>C</item>
</order>
<order>
<item>A</item>
<item>B</item>
<item>C</item>
</order>
<order>
<item>B</item>
<item>C</item>
</order>
</root>
Ich benutze diese XSLT Version 1.0, aber ich kann es nicht herausfinden.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:key name="groups" match="order/item" use="item_type">
</xsl:key>
<xsl:template match="/">
<xsl:for-each select="//root/order">
<order>
<xsl:for-each select="item[generate-id() = generate-id(key('groups', item_type))]">
<item>
<xsl:value-of select="key('groups', item_type)"/>
</item>
</xsl:for-each>
</order>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Lösung muss in xslt 1.0 sein.
Hmm .. ich wusste, dass ich den Schlüssel „irgendwie anders“ zu komponieren, aber ich xslt verwenden sehr selten und die Muench-Gruppierung in XSLT 1.0 sieht wenig mir fremd. Das verpasste Root-Element war nur ein Tippfehler in der Transformation. Ihre Lösung funktioniert wie ein Zauber, danke :) – paYa