2010-11-29 103 views
7

一直在寻找一个教程,它具有以下XML和XSD:你是否总是需要一个具有xml/xsd的根节点?

http://yfrog.com/b9xsdandxmlj

什么我不知道是你有在这个例子中使用根节点?似乎没有任何指向'employeeS'节点的xsd类型定义。

你总是必须有一个XML格式的根节点或者你可以有

<xml version="1.0"> 
<employee><employee> 
<employee><employee> 
<employee><employee> 
+0

我认为是需要一个根节点。但是很想知道。 – sje397 2010-11-29 13:14:44

回答

9
从XML规范

http://www.w3.org/TR/REC-xml/(第五版)第二章

这是说

“每个XML文档都有一个逻辑结构和一个物理结构,在物理上,文档由被称为实体的单元组成,实体可以引用其他实体使其包含在文档中,文档以“根”或文档实体开始。 “

“[定义:只有一个元素,称为根或文档元素,它的任何部分都不会出现在任何其他元素的内容中。]对于所有其他元素,如果start-tag位于内容中在另一个元素中,结束标签位于同一元素的内容中,更简单地说,由开始标签和结束标签分隔的元素相互嵌套在一起。

所以基本上是的,你总是需要一个根元素。

2

从简短description of XML at Wikipedia,它从the official XML spec总结了几种良好性规则:

有包含所有其他元件的单个“根”元素。

+0

维基百科不是一个非常强大的参考;发布的规范是参考...让我们说维基重写这篇文章:您的参考将会丢失 – Jaywalker 2010-11-30 09:56:37

0

是的,您需要有一个且只有一个根节点。

1

根节点是强制性的。它在W3C的术语中也被称为“文档元素”。

定义:有一个元素,称为根,或文档元素,没有其中的一部分出现在其他任何元素的内容(参考:section 2.1 of W3C XML specs

2

是的,你总是有有一个根节点。但是,您可以拥有一个文件,该文件包含一个XML文档片段,该文件作为解析的实体导入到另一个文件中。所有包括文件需要做的是有这样的声明在其DTD:

<!ENTITY SomeName SYSTEM "/path/to/file.xml"> 

然后,它可以只包起来是这样的:

<SomeOuterTag> 
    &SomeName; 
</SomeOuterTag> 
相关问题