Die Umwandlung, die ich schreibe, muss einen kommagetrennten Zeichenfolgenwert aus einem gegebenen Knotensatz bilden. Die resultierende Zeichenfolge muss nach einer zufälligen (nicht alphabetischen) Zuordnung für das erste Zeichen in den Eingabewerten sortiert werden.XSL-assoziative Sortierung mithilfe eines Feld-Teilstrings
kam ich mit auf den Punkt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:tmp="http://tempuri.org"
exclude-result-prefixes="tmp"
>
<xsl:output method="xml" indent="yes"/>
<tmp:sorting-criterion>
<code value="A">5</code>
<code value="B">1</code>
<code value="C">3</code>
</tmp:sorting-criterion>
<xsl:template match="/InputValueParentNode">
<xsl:element name="OutputValues">
<xsl:for-each select="InputValue">
<xsl:sort select="document('')/*/tmp:sorting-criterion/code[@value=substring(.,1,1)]" data-type="number"/>
<xsl:value-of select="normalize-space(.)"/>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Es funktioniert nicht und sieht aus wie die XPath document('')/*/tmp:sorting-criterion/code[@value=substring(.,1,1)]
nicht beurteilen, wie ich erwartet. Ich habe überprüft, um die substring(.,1,1)
für ein Literal zu ersetzen und es bewertet den richtigen Wert.
Also, fehlt mir etwas, das die Sortierung von XPath-Ausdruck nicht wie erwartet auswerten lässt oder ist es einfach unmöglich, es auf diese Weise zu tun?
Wenn es nicht möglich ist, einen XPath-Ausdruck zu erstellen, der funktioniert, gibt es eine Arbeit um meinen Zweck zu erreichen?
Hinweis: ich XSLT-1.0 gezwungen bin
Probe Input:
<?xml version="1.0" encoding="utf-8"?>
<InputValueParentNode>
<InputValue>A input value</InputValue>
<InputValue>B input value</InputValue>
<InputValue>C input value</InputValue>
</InputValueParentNode>
Erwartet ouput:
<?xml version="1.0" encoding="utf-8"?>
<OutputValues>B input value,C input value,A input value</OutputValues>
Könnten Sie beispielsweise Eingangs- und erwartete Ausgabe zur Verfügung stellen? – wdebeaum
@wdebeaum: Frage bearbeitet, um beide zu enthalten. Prost. –