Hallo,
ich bin recht neu im Thema XSLT und hoffe mir kann hier geholfen werden. Mein Problem ist folgendes:
Ich möchte ein XSLT-Template schreiben, welches als Parameter einen beliebigen Knoten bekommen kann. Die Elemente, die dann unter diesem Knoten auftauchen, sollen auf doppelte Elemente untersucht werden, so dass ich am Ende eine Sequenz von einzigartigen Elementen bekomme.
Um das ganze etwas zu veranschaulichen:
so sieht eine Beispiel-XML-Struktur aus:
Nach der Transformation sollen keine Elemente des gleichen Typs mehrmals vorkommen:
Ich bin schon lange am rumprobieren und mein letzter Stand ist folgender:
Leider funktioniert das Ganze so nicht . Ich wäre sehr dankbar, wenn mir jemand auf die Sprünge helfen könnte.
Grüße,
Paul L.
ich bin recht neu im Thema XSLT und hoffe mir kann hier geholfen werden. Mein Problem ist folgendes:
Ich möchte ein XSLT-Template schreiben, welches als Parameter einen beliebigen Knoten bekommen kann. Die Elemente, die dann unter diesem Knoten auftauchen, sollen auf doppelte Elemente untersucht werden, so dass ich am Ende eine Sequenz von einzigartigen Elementen bekomme.
Um das ganze etwas zu veranschaulichen:
so sieht eine Beispiel-XML-Struktur aus:
Code:
<Wurzel> <Element typ="A"/> <Element typ="A"/> <Element typ="B"/> <Element typ="C"/> <Element typ="C"/> <Element typ="A"/> <Element typ="C"/> </Wurzel>
Code:
<Wurzel> <Element typ="A"/> <Element typ="B"/> <Element typ="C"/> </Wurzel>
Code:
<xsl:template match="*"> <xsl:call-template name="merge_multiple"> <xsl:with-param name="string" select="."/> </xsl:call-template> </xsl:template> <xsl:template name="merge_multiple"> <xsl:param name="string" select="."/> <xsl:for-each select="$string"> <xsl:sort select="." /> <xsl:if test="not(preceding-sibling=.)"> <xsl:value-of select="."/> </xsl:if> </xsl:for-each> </xsl:template>
Grüße,
Paul L.
Comment