Die Funktion distinct-values()
gibt eine Sequenz von Werten zurück, die Sie durchlaufen können. Das Ergebnis wird sozusagen "tokenisiert".
fn:distinct-values('AL', 'AL', 'NL')
gibt die Sequenz ('AL', 'NL')
zurück.
Wenn Sie die Variable mit xsl:value-of
ausgeben, wird nur die Zeichenfolge "AL NL" zurückgegeben, da das Standardsequenztrennzeichen für xsl:value-of
ein einzelnes Leerzeichen ist. Dies ist etwas, das man mit dem @separator
Attribut ändern könnte:
Eingang
<?xml version="1.0" encoding="UTF-8"?>
<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<xsl:variable name="FormStates" select="distinct-values(States/State)"/>
<xsl:comment>xsl:value-of</xsl:comment>
<xsl:value-of select="$FormStates" separator=":"/>
<xsl:comment>xsl:for-each</xsl:comment>
<xsl:for-each select="$FormStates">
<xsl:value-of select="."/>
<xsl:text>:</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Ausgabe
<?xml version="1.0" encoding="UTF-8"?>
<!--xsl:value-of-->
AL:NM
<!--xsl:for-each-->
AL:NM:
Wie immer ist es das, was Problem, das Sie haben nicht klar. Erfahren Sie, wie Sie Folgendes bereitstellen: 1. Das Quell-XML-Dokument. 2. Das gewünschte Ergebnis. 3. Die erforderlichen Eigenschaften der Transformation. –
Ich habe diese Frage SCHLIESSEN gewählt. Es ist nicht wirklich eine Frage - keine Frage wird gestellt. Das Problem ist nicht definiert und nicht klar. –
Sorry, ich habe die Frage hoffentlich geklärt. – johkar