xsl:使用apply-templates排序而不排序

Chr*_*her 12 xslt

我有一个很大的XSL文档,用于执行许多操作的赋值.它已接近完成,但我错过了必须进行排序的要求,我无法使其正常工作.这是正在发生的事情的SSCCE.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!--   Root Document    -->
<xsl:template match="/">

    <html>
    <body>

        <xsl:apply-templates select="staff">
            <xsl:sort select="member/last_name" />
        </xsl:apply-templates>

    </body>
    </html>

</xsl:template>

<xsl:template match="member">
    <xsl:value-of select="first_name" />&#160;<xsl:value-of select="last_name" /> <br/>
</xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

XML文件看起来像这样

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="sort.xsl"?>

<staff>
    <member>
        <first_name>Joe</first_name>
        <last_name>Blogs</last_name>
    </member>

    <member>
        <first_name>John</first_name>
        <last_name>Smith</last_name>
    </member>

    <member>
        <first_name>Steven</first_name>
        <last_name>Adams</last_name>
    </member>

</staff>
Run Code Online (Sandbox Code Playgroud)

我期待工作人员按姓氏列出,但他们没有得到排序.请记住,我对XSLT非常缺乏经验.

Dav*_*sle 27

    <xsl:apply-templates select="staff">
        <xsl:sort select="member/last_name" />
    </xsl:apply-templates>
Run Code Online (Sandbox Code Playgroud)

选择staff元素并对它们进行排序,但只有一个staff元素,所以这是一个no-op.

改成

    <xsl:apply-templates select="staff/member">
        <xsl:sort select="last_name" />
    </xsl:apply-templates>
Run Code Online (Sandbox Code Playgroud)

然后选择所有成员元素并对其进行排序.