我正在使用xslt转换来转换某些xml文件。为了格式化输出,我使用的是xsl样式表中的两个标签。更改xml属性的排序
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
但问题是,在Windows中我得到一个类型的输出,而当我在UNIX机器上运行的程序,我得到一个不同类型的输出。 如:
<Book name="Godfather" author="MarioPuzo"
/>
但是在UNIX中,我所得到的是,
<Book author="MarioPuzo" name="Godfather" />
这是一种奇怪的问题。任何帮助表示赞赏。
虽然我不知道为什么这是,我很好奇,为什么这会导致你的问题。你的程序是否期望特定的属性顺序? – Utkanos 2012-07-11 10:20:10
我认为这将有助于我们看到XML输入文件和XSLT文件,谢谢! – 2012-07-11 10:33:23
在XML中,元素的属性集中没有定义标准排序 - 这可能因实现而异。另外,如果两个XML文档之间的唯一区别是属性顺序,则它们被认为是“相等的” - 例如XPath 2.0函数deep-equal($ doc1,$ doc2)'生成true()'。即使发现某些特性按照特定的顺序出现在XML解析器和XSLT处理器的特定实现中),但这种破解并不能保证与本实现的下一个版本一起工作。 – 2012-07-11 12:15:57