我听说过几次 XML 规范表明 XML 是无序的(例如,如果您期望有序,那么它就不是真正的 XML)。据我所知,XML 规范没有说明元素的顺序。既不是它明确无序,也不是暗示没有顺序。
我已经知道了
- 顺序对于解析 xml 的程序通常很重要
- 您可以声明一个强制执行顺序的模式
但我想知道的是:XML 规范(任何版本)是否说明了元素的顺序?
我听说过几次 XML 规范表明 XML 是无序的(例如,如果您期望有序,那么它就不是真正的 XML)。据我所知,XML 规范没有说明元素的顺序。既不是它明确无序,也不是暗示没有顺序。
我已经知道了
但我想知道的是:XML 规范(任何版本)是否说明了元素的顺序?
是的,XML 规范关心元素顺序。XML 文档类型声明 (DTD) 是 XML 规范的一部分。它们可用于强制执行特定的元素顺序。该规范明确讨论了元素顺序,例如这里:
...管理子元素的允许类型以及允许它们出现的顺序。
遵循其 DTD 的 XML 文档被认为是有效的。
但是,如果您只是在谈论格式良好而不是有效性,那么元素的顺序并不重要。
通常假定父元素中子元素的顺序可能很重要,并且解析器将按照原始顺序向应用程序报告元素。但是,当我上次查看时,规范并没有明确说明。这种疏忽可能是因为对于主要对使用 XML 来表示文档感兴趣的规范作者来说是完全显而易见的,显然需要保留一节中的段落顺序。
规范确实明确指出元素内属性的顺序并不重要。也许这就是你所想的。
在 XML 模式定义中,您可以使用all
或来控制它sequence
。在这里讨论。