确定将注释放在XML声明之前吗?

确定将注释放在XML声明之前吗?,xml,xml-declaration,Xml,Xml Declaration,在XML文件中,将注释放在XML声明之前可以吗 <!-- Is this bad to do? --> <?xml version="1.0" encoding="utf-8"?> <someElement /> 不,不好 说: 因为每个XML实体都不是 伴随着外部编码 信息,而非UTF-8或UTF-16格式 编码必须以XML开头 编码声明,其中 第一个字符必须是“

在XML文件中,将注释放在XML声明之前可以吗

<!--
Is this bad to do?
-->
<?xml version="1.0" encoding="utf-8"?>
<someElement />

不,不好

说:

因为每个XML实体都不是 伴随着外部编码 信息,而非UTF-8或UTF-16格式 编码必须以XML开头 编码声明,其中 第一个字符必须是“<?xml”,任何 合格的处理器可以在 两到四个八位字节的输入,其中 以下情况适用

啊,但是,你说,F部分是不规范的

给出了格式良好的XML文档的结果,因此:

[1]     document       ::=       prolog element Misc*
…在这部电影中,我们得到了《序言》的制作:

[22]序言::=XMLDecl?杂项*(doctypedecl杂项*)?
[23]XMLDecl::=''
因此,可以省略<?xml声明,但不能在其前面加任何前缀

(顺便说一句,“杂项”是评论所属的类别)。

根据,这是非法的:

在向XML代码添加引用注释时,请记住它们不能位于文档的最顶端。在XML中,只有XML声明可以放在第一位:



XML声明指定了文档编码,这对于注释和结构化XML都很重要。因此,宣言应该放在第一位。如果许多XML读者能够处理这个问题,我不会感到惊讶,但这是一个坏主意。

不,这不符合XML标准,但注释是好的。

我同意你的看法。事实上,解析器必须知道如何读取文档,因为他也无法读取编码。因此,只在这个评论中输入多字节字符应该是不允许的…当你尝试它时,发生了什么?嘿!不要指责我的坏习惯,先问后做实验^_^实验只会让你说“好吧,它在我的电脑上工作”,这是没有帮助的。有些XML处理器可能允许,有些可能不允许。但是如果您遵循规范,那么所有XML处理器(现在和将来)都有更大的机会处理您的文件。无论如何,我想这是不允许的——原因是为什么:D,如果您的解析器将其标记为正确(这不是很好,但可能),那么实验无论如何也没有真正的帮助……漂亮的答案,伟大的研究正是我所需要的+1.
[22]    prolog     ::=       XMLDecl? Misc* (doctypedecl Misc*)?
[23]    XMLDecl    ::=      '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'