两个兄弟姐妹的实施顺序是否依赖?

时间:2015-02-01 22:30:21

标签: xml tree documentation xquery

如果我有这样的XML文档:

<people>
    <person>
        <name> Mario </name>
        <age> 25 </age>
    </person>
    <person>
        <name> Lucas </name>
        <age> 32 </age>
    </person>
</people>

总是保证在文件顺序中,马里奥出现在卢卡斯之前?所以卢卡斯总是跟随马里奥的兄弟,或者它依赖于实施?

2 个答案:

答案 0 :(得分:3)

与属性不同,where order is insignificant根据XML Recommendation

  

请注意start-tag或中的属性规范的顺序   空元素标签不重要。

元素订单在XML中是重要的

然而,令人惊讶的是,XML建议书没有明确,明确地声明元素顺序的重要性。语法暗示元素排序是重要的,但是,与属性不同,没有关于元素顺序的重要性的明确陈述。

following statement的情况为Element Type Declarations

  

定义:在这种情况下,约束包括内容模型,a   简单的语法管理子元素的允许类型和   它们被允许出现的顺序。

但这是对DTD元素类型声明的引用。 XSD可以类似地声明排序是重要的(通过xsd:sequence)或无意义的(通过xsd:all用于文档有效性。订单仍然可能或可能不会对任何给定的应用程序产生影响 - 这取决于应用程序。 [感谢@C。 M. Sperberg-McQueen对有效性与任何特定应用的目的之间的差异进行了有用的澄清。]

元素排序的重要性在XML Information Set Recommendation中的Section 2.2 Element Information Items中解决:

  

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

     

[...]

     
      
  1. [儿童] 文档中的子信息项的有序列表   订购。此列表包含元素,处理指令,未展开   实体引用,字符和注释信息项,一个用于   每个element,处理指令,对未处理的引用   外部实体,数据字符和评论立即出现   在当前元素内。如果元素为空,则此列表没有   成员。
  2.   

答案 1 :(得分:3)

尽管正如@kjhughes所说,XML建议书没有明确说明,但所有基于XML构建的API和工具都假设元素顺序很重要,并由解析器保留并报告给应用程序

毕竟,您不希望随机改组Word文档中的段落。 (这可能是因为XML设计人员专注于建模文档而他们没有说什么:它显而易见,它不需要说。)