XML 声明后面必须有新行吗?

问题描述 投票:0回答:2

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

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

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

xml
2个回答
15
投票

规范(请参阅2.8 Prolog 和文档类型声明)不要求(但允许)在 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
在这里是可选的,换行符可以(但不是必须)跟在声明之后。


2
投票

新行等不属于规范的一部分。例如,当您使用 XMLOutputter 类(Java 中)编写 XML 文档时,您将得到一个没有换行符的文件。换行符是给人类用的。

© www.soinside.com 2019 - 2024. All rights reserved.