XML 1.0解析器可能会或可能不会接受解析版本号与"1.0"不同的文档。您的XML解析器的行为取决于它符合哪个XML 1.0建议的版本。
第一版
W3C XML建议书的第1版和第2版如下:
版本号"1.0"应用于表示符合此规范的版本;如果文档不符合此规范,则使用值"1.0"是错误的。
...
如果处理器收到带有不支持的版本标签的文档,它们可以发出错误信号。
在XML声明中,version
的有效值为:
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
参考:http://www.w3.org/TR/1998/REC-xml-19980210#sec-prolog-dtd
第三版
这在第三版中已有更改。我引用的那段话已被删除,version
的值被固定为 1.0
。
[26] VersionNum ::= '1.0'
这实际上意味着,XML 1.0解析器应将其他版本号视为错误。
参考:
http://www.w3.org/XML/xml-V10-2e-errata#E38
第五版允许解析其他版本,当一个新的变化实际上扭转了先前的变化。增加了两个新段落。
“即使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]+
概述
在使用XML文档时,除了版本号为1.0
的版本外,使用其他版本号存在风险,因为解析器可能会拒绝处理它。如果您做出这样的更改,则需要知道该文档只能使用与XML 1.1兼容的工具进行处理(或者使用XML 1.0第5版兼容的工具,但那样您将无法使用任何XML 1.1功能)。
参考文献:http://www.w3.org/XML/xml-V10-4e-errata#E10
XmlReader
来读取它。如果XmlReader
无法读取它,那么其他什么都无法读取了。 - John Saunders