必须在XML声明后面添加新行吗?

时间:2011-12-05 11:24:52

标签: xml

这是一个有效的XML实例吗?它在XML声明和根节点之间没有任何内容。

<?xml version="1.0" encoding="UTF-8"?><data></data>

我自己在XML规范中找不到合适的位置,希望有人能帮助我......

2 个答案:

答案 0 :(得分:9)

规范(参见2.8 Prolog and Document Type Declaration)不要求(但允许)新行遵循XML声明。

正式将其写成:

  

[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
  ...
  [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
  [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
  ...
  [27] Misc ::= Comment | PI | S

正如您在[22] prolog中看到的那样,XML声明是可选(请参阅符号后面的问号)和零,一个或多个(见星号)Misc可以遵循以下内容:评论,其他处理说明(PI)或空白(S)。空白包括换行符。

由于此处Misc是可选的,因此声明后可以但不必遵循换行符。

答案 1 :(得分:2)

新行或左右不是规范的一部分。例如,当您使用XMLOutputter类(在Java中)编写XML文档时,您将获得没有换行符的文件。新线适用于人类。