16

假设我有这个给定的 XML 文件:

<root>
    <node>x</node>
    <node>y</node>
    <node>a</node>
</root>

我希望显示以下内容:

ayx

使用类似于:

<xsl:template match="/">
    <xsl:apply-templates select="root/node"/>
</xsl:template>
<xsl:template match="node">
    <xsl:value-of select="."/>
</xsl:template>
4

3 回答 3

32

简单的!

<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>
于 2008-09-08T15:06:30.690 回答
3

您可以使用xsl:sort. 设置很重要,data-type="number"因为否则,位置将作为字符串排序,因此结束,第 10 个节点将在第 2 个节点之前考虑。

<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>
于 2008-09-08T15:05:09.320 回答
0
<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>
于 2018-04-25T06:18:25.250 回答