Набор данных - Невозможно прочитать XML 1.1? - PullRequest
3 голосов
/ 16 февраля 2011

Это правильно? Я изменил версию XML с 1.0 на 1.1, которую читает мой DS, и теперь я получаю сообщение об ошибке, в котором говорится, что он не может прочитать эту версию. Есть ли что-нибудь вокруг этого?

Причина, по которой я это делаю, заключается в способности версии 1.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 Ответ

4 голосов
/ 16 февраля 2011

Синтаксический анализатор 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_.:] | '-')+

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

Третийиздание

Это было изменено для 3-го издания.Абзац, который я цитировал выше, был удален, а значение version было установлено на 1.0

[26]    VersionNum     ::=      '1.0'

Это фактически означало, что анализатор XML 1.0 должен видеть другие номера версий как ошибки.
ref: 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]+

ref: 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).

...