这是对的吗?我已经更改为我的DS读取的1.0到1.1的XML版本,现在我得到一个错误,说它无法读取此版本。反正有吗?
我这样做的原因是v1.1能够解释单位分隔符等问题。
这是我收到的例外情况:
An unhandled exception of type 'System.Xml.XmlException'
occurred in System.Xml.dll
Additional information: Version number '1.1' is invalid. Line 1, position 16.
答案 0 :(得分:4)
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
第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处理器 遇到指定a的文档 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
使用除1.0
之外的其他版本号(也适用于XML 1.0文档)是有风险的,因为解析器可能会拒绝处理它。如果进行此类更改,则需要知道该文档仅使用XML 1.1兼容工具(或XML 1.0 5th Ed。兼容工具处理,但您不能使用任何XML 1.1功能)。