<?xml... > 可以作为 dtd 的第一行吗?

May <?xml... > be the first line of an dtd?

该行可以是外部dtd的第一行吗?我对此有过争论,但我们找不到像 dtd 语言规范这样的来源来获得解决方案。

是的,可以。虽然这不是必需的(即使在 XML 1.1 DTD 中)。

来自spec

Well-formedness constraint: External Subset

The external subset, if any, must match the production for extSubset.

规范将 extSubset 定义为:

[30]  extSubset        ::=      TextDecl? extSubsetDecl 
[31]  extSubsetDecl    ::=      ( markupdecl | conditionalSect | DeclSep)*

TextDecl(根据上述定义允许出现零次或一次)如:

[77]  TextDecl         ::=      '<?xml' VersionInfo? EncodingDecl S? '?>'