XML 1.0 解析器可能会也可能不会接受解析版本号不是1.0
. XML 解析器的行为取决于它所遵循的 XML 1.0 推荐版本。
第一版
W3C XML 推荐版本 1 和 2 说:
应该使用版本号“1.0”来表示符合本规范的这个版本;如果文档不符合本规范的此版本,则使用值“1.0”是错误的。
...
如果处理者收到标有他们不支持的版本的文档,他们可能会发出错误信号。
version
XML 声明中的有效值为
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
参考:http ://www.w3.org/TR/1998/REC-xml-19980210#sec-prolog-dtd
第三版
第 3 版对此进行了更改。我上面引用的段落已被删除,并且值version
被固定为1.0
[26] VersionNum ::= '1.0'
这实际上意味着 XML 1.0 解析器应该将其他版本号视为错误。
参考:http ://www.w3.org/XML/xml-V10-2e-errata#E38
第五版
在第 5 版中再次允许解析其他版本,当时新的更改实际上逆转了之前的更改。添加了两个新段落
即使 VersionNum 产品匹配任何形式为 '1.x' 的版本号,XML 1.0 文档不应该指定除 '1.0' 之外的版本号。
注意:当 XML 1.0 处理器遇到指定 1.x 版本号而不是 '1.0' 的文档时,它将作为 1.0 文档处理。这意味着 XML 1.0 处理器将接受 1.x 文档,前提是它们不使用任何非 1.0 功能。
现在的有效值version
有形式1.x
[26] VersionNum ::= '1.' [0-9]+
参考:http ://www.w3.org/XML/xml-V10-4e-errata#E10
概括
使用除 XML 1.0 文档之外的其他版本号是有风险的1.0
,因为解析器可能拒绝处理它。如果您进行此类更改,您需要知道该文档将仅使用 XML 1.1 兼容工具(或 XML 1.0 第 5 版兼容工具,但您不能使用任何 XML 1.1 功能)处理。