两个兄弟姐妹实现的顺序是否相关?

Ram*_*uri 2 xml documentation tree xquery

如果我有一个这样的 XML 文档:

<people>
    <person>
        <name> Mario </name>
        <age> 25 </age>
    </person>
    <person>
        <name> Lucas </name>
        <age> 32 </age>
    </person>
</people>
Run Code Online (Sandbox Code Playgroud)

是否总是保证在文档顺序中,Mario 出现在 Lucas 之前?所以卢卡斯始终是马里奥的追随者,还是依赖于实现?

kjh*_*hes 5

与属性不同,根据XML 建议其中的顺序无关紧要

请注意,开始标签或空元素标签中属性规范的顺序并不重要。

元素顺序在 XML 中很重要

然而,令人惊讶的是,XML 建议并没有对元素顺序的一般重要性做出明确、明确的声明。语法暗示元素排序是重要的,但与属性不同,没有关于元素顺序的重要性的明确声明。

元素类型声明的情况下有以下语句

定义:在这种情况下,约束包括一个内容模型,一个控制子元素允许类型及其出现顺序的简单语法。

但这是参考 DTD 元素类型声明。XSD 可以类似地声明排序对于文档有效性来说是重要的(via xsd:sequence)还是不重要的(via xsd:all)。对于任何给定的应用程序,顺序可能还是无关紧要——这取决于应用程序。 [感谢@CM Sperberg-McQueen 在有效性相关性与任何给定应用程序目的之间的差异之间做出的有益澄清。]

元素排序的重要性在第 2.2 节元素信息项中的XML 信息集建议中得到解决:

元素信息项具有以下属性:

[...]

  1. [children]子信息项的有序列表,按文档顺序排列。该列表包含元素、处理指令、未展开的实体引用、字符和注释信息项,每个元素、处理指令、对未处理的外部实体的引用、数据字符和立即出现在当前元素中的注释一个。如果元素为空,则此列表没有成员。

  • @RamyAlZuhouri,不,不是这样。XML 规范对这个问题保持沉默,但 XML 信息集和 XPath 数据模型并没有保持沉默。任何显示不同顺序的 XQuery 实现都将是不一致的(或使用从 XML 到 XDM 的非标准映射)。 (2认同)