Mik*_*ike 5 xml xml-declaration
在同一个文档格式良好的XML中有两个XML声明吗?
<?xml version="1.0" encoding="UTF-8"?>
<a>
<?xml version="1.0" encoding="UTF-8"?>
<b>
hello
</b>
</a>
Run Code Online (Sandbox Code Playgroud)
我相信它不是,但我找不到支持我的消息来源.
定义:XML文档应该以XML声明开头,该声明指定所使用的XML的版本.
那个讨厌的词"应该"就在那里.理想情况下,文档以XML声明开头.它没有说明在文档中有另一个.
文档类型声明必须出现在文档中的第一个元素之前.
这很接近,但它没有谈论XML声明本身,即使它应该在它之前.
在格式良好的XML中只允许一个 XML声明,并且它必须位于顶部(如果有的话).
请参阅XML建议书document的Well-Formed XML Documents部分中的定义:
[1] document ::= prolog element Misc*
Run Code Online (Sandbox Code Playgroud)
然后检查prolog:
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
Run Code Online (Sandbox Code Playgroud)
然后XMLDecl:
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
Run Code Online (Sandbox Code Playgroud)
因此,我们看到EBNF允许在文档顶部进行XML声明.
处理说明 ......
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
Run Code Online (Sandbox Code Playgroud)
...通常可能在其他地方发生,但是凭借定义PITarget和本声明排除了第二个XML声明:
目标名称"XML","xml"等保留用于本规范的此版本或未来版本中的标准化.