如果我有这样的XML文档:
<people>
<person>
<name> Mario </name>
<age> 25 </age>
</person>
<person>
<name> Lucas </name>
<age> 32 </age>
</person>
</people>
总是保证在文件顺序中,马里奥出现在卢卡斯之前?所以卢卡斯总是跟随马里奥的兄弟,或者它依赖于实施?
答案 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中解决:
元素信息项具有以下属性:
[...]
- [儿童] 文档中的子信息项的有序列表 订购。此列表包含元素,处理指令,未展开 实体引用,字符和注释信息项,一个用于 每个element,处理指令,对未处理的引用 外部实体,数据字符和评论立即出现 在当前元素内。如果元素为空,则此列表没有 成员。
醇>
答案 1 :(得分:3)
尽管正如@kjhughes所说,XML建议书没有明确说明,但所有基于XML构建的API和工具都假设元素顺序很重要,并由解析器保留并报告给应用程序
毕竟,您不希望随机改组Word文档中的段落。 (这可能是因为XML设计人员专注于建模文档而他们没有说什么:它显而易见,它不需要说。)