Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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_Validation_Tags - Fatal编程技术网

标记顺序是否与有效的XML相关?

标记顺序是否与有效的XML相关?,xml,validation,tags,Xml,Validation,Tags,换言之: <?xml version="1.0" encoding="UTF-8"?> <root> <tag1> <tag1.1></tag1.1> </tag1> <tag2 /> <root> 同: <?xml version="1.0" encoding="UTF-8"?> <root> <tag2 /> <

换言之:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <tag1>
  <tag1.1></tag1.1>
 </tag1>
 <tag2 />
<root>

同:

<?xml version="1.0" encoding="UTF-8"?>
    <root>
     <tag2 />
     <tag1>
      <tag1.1></tag1.1>
     </tag1>     
    <root>


这取决于语言定义的DTD(或模式)。

这取决于使用XML的内容。元素的顺序对于格式良好的XML文档可能并不重要(取决于XSD),但某些程序/API希望按字母顺序读取XML(例如.NET中的DataContractSerializer)


此外,顺序在语义上可能很重要(例如,如果XML表示文档,则顺序非常重要)

XML维护文档的顺序——它们被视为两个不同的文档

<>你的申请可能会或可能不考虑元素的顺序是重要的。例如,元素的顺序在XHTML中是必不可少的。如果要根据架构或类似内容进行验证,则这取决于该架构是否两个文档都有效


但是请注意,属性的顺序并不重要(仅在元素属性顺序上不同的XML文档被视为相同)。

这对于XML本身并不重要。当然,这两个文档都是格式良好的XML文档。但是,它们可能不是有效的;使用XML模式进行验证时,可以指定顺序,如果不按该顺序提供元素,则根据该模式,文档将无效。这可以通过所描述的
xsd:sequence
元素来完成,正如所示的那样详细,您的两个示例在语义上是相同的


对XML的一个常见误解是,在格式良好的XML文档中,同级元素的顺序很重要。指定属性是无序的,但是它没有说明元素。因此,XML处理器可以自由地按任意顺序报告元素同级

也就是说,我不认为任何常用的XML处理器报告元素的顺序与它们在文档中出现的顺序不同


您询问一个“有效”文档–这意味着DTD或模式正在使用,因此可能(也可能不)与顺序相关。DTD或模式有一些机制可以指定元素顺序在文档中是相关的。但是,您的示例没有显示DTD或模式的使用。

我要更明确地区分有效(即符合某些DTD/模式)和格式良好(即语法合法的XML)。现在我很想说这个论点是不正确的,因为它使用了“有效”这个词。@Andrzej-很好的观点。我更新了我的答案,使用格式良好而不是有效。元素的顺序对于格式良好来说永远都不重要,XSD与格式良好无关。@David-这就是我在看Jonas H的anshwer之前所想的。-这个答案说XSD可以指定顺序,而不遵循所说的顺序会导致错误使文档无效。它还说,该文件仍将是格式良好的。(这就是我所说的)事实上有一个DTD。谢谢。“对XML的一个常见误解是,在格式良好的XML文档中,元素的顺序很重要。”这不是误解。见3.2.1。当然,XML处理器可以处理序列约束,并且仍然以不同的顺序返回元素。它也可以旋转所有的文本节点。@Robert Rossney-我已经编辑过,改为“兄弟元素”,但是,我看不出3.2.1与格式良好的文档中兄弟元素的排序有什么关联。你能详细说明一下吗?序列约束的存在意味着元素顺序是重要的。事实上,除了属性之外,XML文档中所有信息的排序都是重要的,这是因为该建议明确指出排序是无关紧要的。我认为约束是为了有效性,而不是良好的格式。规范中没有明确说明格式良好的文档中的元素顺序。当然,我们不应该从规范中得到暗示——它们应该是明确的,不是吗?特别是在这样的基本概念上。