2012-12-19 145 views
4

我想使用XSLT 1.0排序xml文档。使用xslt 1.0排序

我的XML看起来如下:

<?xml version="1.0" encoding="UTF-8"?> 
<testMain> 
<test name="test1" enabled="false"> 
<field name="abc" enabled="false" description="test1"> 
</field> 
<field name="dac" enabled="false" description="test2"> 
</field> 
<field name="aaa" enabled="false" description="test4"> 
</field> 
<field name="cat" enabled="false" description="test3"> 
</field> 
</test> 
</testMain> 

结果应在以下格式,按名称排序:

<?xml version="1.0" encoding="UTF-8"?> 
<testMain> 
<test name="test1" enabled="false"> 
<field name="aaa" enabled="false" description="test4"> 
</field> 
<field name="abc" enabled="false" description="test1"> 
</field> 
<field name="cat" enabled="false" description="test3"> 
</field> 
<field name="dac" enabled="false" description="test2"> 
</field> 
</test> 
</testMain> 

我在XSLT代码如下:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
<xsl:copy> 
<xsl:apply-templates select="node()|@*"/> 
</xsl:copy> 
    </xsl:template> 

    <xsl:template match="test"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*"/> 
     <xsl:apply-templates select="field"> 
     <xsl:sort select="name" data-type="text"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

我不确定为什么不生成所需的输出。任何帮助非常感谢。

谢谢

回答

0

由于name是你需要与@

<xsl:sort select="@name" data-type="text"/> 
+0

感谢您访问它的属性。工作很好:-) –