代码之家  ›  专栏  ›  技术社区  ›  Kilazur

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

  •  1
  • Kilazur  · 技术社区  · 6 年前

    XML文档能否以 < 性格

    当我试图定义如何区分包含XML的字符串和包含XML路径的字符串时,我有一个随机的想法。

    我相信答案是否定的,但我想确定一下。

    2 回复  |  直到 4 年前
        1
  •  4
  •   kjhughes agonzalezmc    6 年前

    仅a < 或者空白字符可以开始于 well-formed XML文档。

    这个 W3C XML Recommendation 包括明确定义 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
    • Doctype声明
    • 要素

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

    备注:

    1. 这些规则的一个含义是,如果XML文档包含 XML声明,它必须出现在顶部(或者您可以收到 somewhat cryptic error message )。因此,对于具有 一个XML声明,第一个字符必须是 < 和 不能为空白。
    2. A. BOM 可能出现在XML文档实体的开头,以 指示正在使用的字符编码的字节顺序。这些 两个字节通常不被视为XML的一部分 文档本身,而不是 存储单元 physical structure 支持XML文档。BOM表,以及 XML声明,帮助XML处理者 character encoding detection [物料清单提及建议,感谢 JonHanna]
        2
  •  2
  •   Michael Kay    6 年前

    格式良好的XML文档实体始终具有“<”作为其第一个非空白字符。

    格式良好的外部常规分析实体不需要以“<”开头。

    因此,如果“XML”是指“格式良好的XML文档实体”,那么答案是“否”。