XML 文档可以以除“<”以外的任何其他内容开头吗?

Can a XML document start with anything else than a "<"?

XML 文档能否以 < 字符以外的任何字符开头?

这是我的一个随机想法,当时我试图定义如何区分包含 XML 的字符串和包含 XML.

路径的字符串

我认为答案是否定的,但我希望确定。

只有 < 或空白字符可以开始 well-formed XML 文档。

W3C XML Recommendation includes a EBNF which definitively defines an XML document:

 [1] document ::= prolog element Misc*
[22] prolog   ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl  ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[27] Misc     ::= Comment | PI | S
 [3] S        ::= (#x20 | #x9 | #xD | #xA)+

根据这些规则,XML 文档可以以空白字符或来自以下任一构造的 < 字符开头:

  • XML声明
  • 评论
  • PI
  • 文档类型声明
  • 元素

XML 文档不能以其他字符开头。

备注:

  1. 这些规则的含义是,如果 XML 文档包含 XML 声明,它必须出现在顶部(否则你会收到一个 somewhat cryptic error message)。因此,对于 XML 文档 XML 声明,第一个字符必须是 < 和 不能是空格。
  2. BOM 可能出现在 XML 文档实体的开头以 指示正在使用的字符编码的字节顺序。这些 两个字节通常不被视为 XML 的一部分 文档本身,而不是 实体的 存储单元 结构 支持XML 文档。一个 BOM,连同一个 XML声明,协助XML处理器进行字符编码 检测[BOM 提及的建议感谢 JonHanna]

well-formed XML 文档实体始终将“<”作为其第一个 non-whitespace 字符。

A well-formed 外部通用解析实体不需要以“<”开头。

所以如果 "a XML" 你的意思是 "a well-formed XML document entity",那么答案是 "no"。