数据集 - 无法读取XML 1.1?

时间:2011-02-16 14:59:31

标签: c# xml dataset xml-1.1

这是对的吗?我已经更改为我的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.

1 个答案:

答案 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功能)。