按属性排序 XML

Sort XML by attribute

我想对 XML 文件进行排序。

假设,我们有以下 XML:

<test>
     <a attribute="sortme2">
        <b>
           <c donttouchme="aaa"/>
        </b>
     </a>
     <a attribute="sortme">
        <b>
           <c donttouchme="aaa"/>
        </b>
     </a>
     <a attribute="sortme1">
        <b>
           <c donttouchme="aaa"/>
        </b>
     </a>
</test>

我想要以下输出:

<test>
     <a attribute="sortme">
        <b>
           <c donttouchme="aaa"/>
        </b>
     </a>
     <a attribute="sortme1">
        <b>
           <c donttouchme="aaa"/>
        </b>
     </a>
     <a attribute="sortme2">
        <b>
           <c donttouchme="aaa"/>
        </b>
     </a>
</test>

你能帮帮我吗?我会很高兴!谢谢。

应用以下 XSLT:

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

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:qi="http://webqi.org/XMLSchema" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">

<!-- match the root node-->
    <xsl:template match="/">
        <xsl:apply-templates select="*" />
    </xsl:template>

    <xsl:template match="@*|node()">
<!-- copy all elements and attributes-->
        <xsl:copy>
            <xsl:apply-templates select="@*|node()">
<!-- sort on the attribute attribute-->
                <xsl:sort select="@attribute" />
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

要将 xml 连接到 xsl,将上面的内容保存为 'yourxsl.xsl',然后将其添加到 xml 的顶部:

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

-如此处所述:

How to link up XML file with XSLT file?