XSLT:使用XSLT重新排序XML中的属性

时间:2011-05-06 08:10:52

标签: xml xslt

有没有办法使用XSLT在XML中重新排序属性?

例如,我有一个类似

的XML
<?xml version="1.0" encoding="UTF-8"?>
 <books>
    <book author="Anonymous" qty="10" price="100" title="Basic XML"/>
    <book author="Anonymous" qty="20" price="200" title="Basic XLST"/>
 </books>

转型后,我希望它喜欢:

<?xml version="1.0" encoding="UTF-8"?>
 <books>
    <book title="Basic XML" author="Anonymous" price="100" qty="10"/>
    <book title="Basic XLST" author="Anonymous" price="200" qty="20"/>
 </books>

提前致谢。

2 个答案:

答案 0 :(得分:5)

XML中没有属性顺序。您显示的xml文件与完全相同的东西略有不同,任何看到它们之间差异的东西都不是(表现为)xml解析器。

诚实。正确的xml解析器看不到两者之间的任何差异。

可能有个别的xslt实现可以创建这种差异,我不知道。但一般来说,xslt只讨论xml,而不是关于xml的文本表示,并且因为在那个级别上没有区别,所以没有标准的xslt方法来实现你正在寻找的结果就不足为奇了。

当然,你可以做的是采取任何xml解析器/编写器并更改写入部分以按所需顺序发出属性。就个人而言,我会使用类似ruby的rexml,因为ruby允许在运行时重新定义方法而不修改原始代码。

答案 1 :(得分:0)

我认为你的xml应该是这样的:

<books>
    <book>
        <author>Anonymous</author>
        <qty>10</qty>
        <price>100</price>
        <title>Basic XML</title>
    </book>
    <book>
        <author>Anonymous</author>
        <qty>20</qty>
        <price>200</price>
        <title>Basic XsLt</title>
    </book>
</books>

然后你可以按照自己的意愿重新排序。 Here您会找到大量信息和样本。