Apply-Templates in umgekehrter Reihenfolge
Frage
Angenommen, ich habe diese angegebene XML-Datei
<root>
<node>x</node>
<node>y</node>
<node>a</node>
</root>
und ich möchte, dass Folgendes angezeigt wird
ayx
etwas Ähnliches verwenden
<xsl:template match="/">
<xsl:apply-templates select="root/node"/>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
Lösung
Einfach!
<xsl:template match="/">
<xsl:apply-templates select="root/node">
<xsl:sort select="position()" data-type="number" order="descending"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
Andere Tipps
Sie können dies mit xsl:sort tun.Es ist wichtig, den Datentyp = „Nummer“ festzulegen, da sonst die Position als Zeichenfolge sortiert wird und daher der 10. Knoten vor dem 2. berücksichtigt wird.
<xsl:template match="/">
<xsl:apply-templates select="root/node">
<xsl:sort
select="position()"
order="descending"
data-type="number"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="root/node[3]"/>
<xsl:apply-templates select="root/node[2]"/>
<xsl:apply-templates select="root/node[1]"/>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow