Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xml属性顺序的更改_Xml_Xslt - Fatal编程技术网

xml属性顺序的更改

xml属性顺序的更改,xml,xslt,Xml,Xslt,我正在使用xslt转换来转换一些xml文件。为了格式化输出,我使用的是xsl样式表中的两个标记 <xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*"/> 但问题是,在windows中,我得到的是一种输出,而当我在unix机器上运行程序时,我得到的是另一种输出。 例如: 但在unix中,我得到的是 这是一个奇怪的问题。非常感谢您的帮助。在XML中,元素的属性集合中没有定义标准顺序

我正在使用xslt转换来转换一些xml文件。为了格式化输出,我使用的是xsl样式表中的两个标记

<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>

但问题是,在windows中,我得到的是一种输出,而当我在unix机器上运行程序时,我得到的是另一种输出。 例如:

但在unix中,我得到的是


这是一个奇怪的问题。非常感谢您的帮助。

在XML中,元素的属性集合中没有定义标准顺序——这可能因实现而异

另外,如果两个XML文档之间的唯一区别是属性的顺序,则将它们视为“相等”——例如XPath 2.0函数deep equal($doc1,$doc2)生成true()

这类似于一个类定义——两个类定义的唯一区别是属性(或方法)的顺序是相同的类定义,可以相互替换,而不会导致使用该类定义实例的任何程序产生不同的结果

这是一个演示如果两个文档的唯一区别是属性的顺序,那么它们被视为“相等”:

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:variable name="vDoc2">
     <t y="2"   x="1" />
    </xsl:variable>

 <xsl:template match="/">
     <xsl:sequence select="deep-equal(/, $vDoc2)"/>
 </xsl:template>
</xsl:stylesheet>

即使在给定的实现(XML解析器和XSLT处理器)中发现了一些以特定顺序显示属性的黑客行为,也不能保证这种黑客行为能够在下一版本的实现中使用

在XML中,元素的属性集合中没有定义标准顺序——这可能因实现而异

另外,如果两个XML文档之间的唯一区别是属性的顺序,则将它们视为“相等”——例如XPath 2.0函数deep equal($doc1,$doc2)生成true()

这类似于一个类定义——两个类定义的唯一区别是属性(或方法)的顺序是相同的类定义,可以相互替换,而不会导致使用该类定义实例的任何程序产生不同的结果

这是一个演示如果两个文档的唯一区别是属性的顺序,那么它们被视为“相等”:

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:variable name="vDoc2">
     <t y="2"   x="1" />
    </xsl:variable>

 <xsl:template match="/">
     <xsl:sequence select="deep-equal(/, $vDoc2)"/>
 </xsl:template>
</xsl:stylesheet>

即使在给定的实现(XML解析器和XSLT处理器)中发现了一些以特定顺序显示属性的黑客行为,也不能保证这种黑客行为能够在下一版本的实现中使用

虽然我不确定这是为什么,但我很好奇为什么这会给你带来问题。您的程序需要特定的属性顺序吗?我想如果我们看到XML输入文件和XSLT文件会有所帮助,谢谢!在XML中,在元素的属性集中并没有定义标准的顺序——这可能因实现而异。另外,如果两个XML文档之间的唯一区别是属性的顺序,则它们被视为“相等”——例如XPath 2.0函数
deep equal($doc1,$doc2)
生成
true()
。即使在给定的实现(XML解析器和XSLT处理器)中发现了某些以特定顺序显示属性的黑客行为,也不能保证这种黑客行为能够在下一版本的实现中使用。请您解释一下为什么这是一个问题?实际上,这不是一个问题,我只是好奇为什么会发生这种事虽然我不确定为什么会这样,但我很好奇为什么这会给你带来麻烦。您的程序需要特定的属性顺序吗?我想如果我们看到XML输入文件和XSLT文件会有所帮助,谢谢!在XML中,在元素的属性集中并没有定义标准的顺序——这可能因实现而异。另外,如果两个XML文档之间的唯一区别是属性的顺序,则它们被视为“相等”——例如XPath 2.0函数
deep equal($doc1,$doc2)
生成
true()
。即使在给定的XML解析器和XSLT处理器的实现中发现了某些以特定顺序显示属性的黑客行为,也不能保证这种黑客行为能够在下一版本的实现中使用。请您解释一下为什么这是一个问题?实际上,这不是一个问题,只是好奇为什么会发生这种情况
true