Набор данных - Невозможно прочитать XML 1.1?

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

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

Решение

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

ссылка: http://www.w3.org/TR/1998/REC-xml-19980210

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

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

[26]    VersionNum     ::=      '1.0'

Это фактически означало, что парсер XML 1.0 должен видеть другие номера версий как ошибки.
ссылка: http://www.w3.org/XML/xml-V10-2e-errata

Пятое издание

Разбор других версий был снова разрешен в 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]+

ссылка: http://www.w3.org/XML/xml-V10-4e-errata

Резюме

Рискованно использовать другой номер версии, кроме 1.0 (также для документов XML 1.0), так как анализатор может отказаться обрабатывать его. Если вы сделаете такое изменение, вам нужно знать, что документ будет обрабатываться только с помощью инструментов, совместимых с XML 1.1 (или инструментов, совместимых с XML 1.0 5th Ed., Но тогда вы не сможете использовать какие-либо функции XML 1.1).

Другие вопросы по тегам