4

これは正しいです?DS が読み取る XML のバージョンを 1.0 から 1.1 に変更しましたが、このバージョンを読み取ることができないというエラーが表示されます。とにかくこのあたりはありますか?

私がこれを行っている理由は、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.
4

1 に答える 1

4

XML 1.0 パーサーは、.xml 以外のバージョン番号を持つドキュメントの解析を受け入れる場合と受け入れない場合があり1.0ます。XML パーサーの動作は、準拠している XML 1.0 勧告のエディションによって異なります。

初版

W3C XML 勧告の第 1 版と第 2 版では、次のように述べられています。

バージョン番号「1.0」は、この仕様のこのバージョンへの適合を示すために使用する必要があります。この仕様のこのバージョンに準拠していない場合、ドキュメントが値「1.0」を使用するのはエラーです。

...

プロセッサがサポートしていないバージョンのラベルが付いたドキュメントを受け取った場合、プロセッサはエラーを通知することがあります。

versionXML 宣言の有効な値は次のとおりです。

[26]    VersionNum  ::=     ([a-zA-Z0-9_.:] | '-')+

参照: http://www.w3.org/TR/1998/REC-xml-19980210#sec-prolog-dtd

第3版

これは第 3 版で変更されました。上で引用した段落は削除され、値はversionに修正されました1.0

[26]    VersionNum     ::=      '1.0'

これは実質的に、XML 1.0 パーサーが他のバージョン番号をエラーとして認識する必要があることを意味していました。
参照: http://www.w3.org/XML/xml-V10-2e-errata#E38

第 5 版

他のバージョンの解析は第 5 版で再び許可され、新しい変更によって以前の変更が実質的に取り消されました。2つの新しい段落が追加されました

VersionNum 生成は「1.x」形式の任意のバージョン番号と一致しますが、XML 1.0 ドキュメントは「1.0」以外のバージョン番号を指定すべきではありません。

注: XML 1.0 プロセッサは、「1.0」以外の 1.x バージョン番号を指定するドキュメントを検出すると、それを 1.0 ドキュメントとして処理します。これは、1.0 以外の機能を使用しない限り、XML 1.0 プロセッサが 1.x ドキュメントを受け入れることを意味します。

現在有効な値の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 第 5 版互換ツール、ただし XML 1.1 機能は使用できません) でのみ処理されることを知っておく必要があります。

于 2011-02-16T16:18:37.707 に答える