在文档格式良好的XML中是多个XML声明?

在相同的文档格式良好的XML中有两个XML声明?

<?xml version="1.0" encoding="UTF-8"?> <a> <?xml version="1.0" encoding="UTF-8"?> <b> hello </b> </a> 

我相信这不是,但是我找不到一个资料来支持我。

来自可扩展标记语言(XML)1.0

定义:XML文档应该以一个XML声明开始,该声明指定了正在使用的XML的版本。

讨厌的词“应该”在那里。 它说,理想情况下,文档从一个XML声明开始。 它没有提到在文件中有另外一个。

文档types声明必须出现在文档的第一个元素之前。

这很接近,但是它并不谈论XML声明本身,即使它应该在它之前。

在格式良好的XML中允许有一个 XML声明,并且任何地方都必须在顶部

必须在顶部

请参阅XMLbuild议书的格式 良好的XML文档部分中的文档定义 :

 [1] document ::= prolog element Misc* 

然后检查prolog

 [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? 

然后XMLDecl

 [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' 

所以,我们看到EBNF允许在文档顶部的XML声明。

只有一个

处理说明

 [16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>' [17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l')) 

…一般可能在其他地方发生,但由于PITarget的定义和PITarget声明,第二个XML声明被排除:

目标名称“XML”,“xml”等在本规范的这个版本或未来版本中保留用于标准化。