Является ли незаконным наличие неиспользуемых объявлений пространств имен в XML-документе?

Например, считается ли следующий XML-документ допустимым в соответствии с рекомендацией W3C XML 1.0? Обратите внимание, что пространство имен «будущее» нигде в документе не упоминается.

Хотя это не может считаться хорошим стилем, я считаю, что документ по-прежнему действителен независимо от неиспользуемого пространства имен. Кто-нибудь может подтвердить или опровергнуть это предположение?

Спасибо, Мэтт

<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns='http://foo.org/v1'  xmlns:future='http://bar.org/v1'>
    <child>1</child>
</root>

person Matty    schedule 11.06.2009    source источник


Ответы (4)


стандарт не указывает на иное. Раздел 7, «Соответствие документов», содержит несколько требований для того, чтобы называть документ «правильно сформированным пространством имен» и «действительным пространством имен», но ничто не говорит о том, что у вас не может быть объявления неиспользуемого пространства имен.

В разделе 3 приведен пример, который содержит неиспользуемое пространство имен:

<x xmlns:edi='http://ecommerce.example.org/schema'>
    <!-- the "edi" prefix is bound to http://ecommerce.example.org/schema
         for the "x" element and contents -->
</x>
person Adam Batkin    schedule 11.06.2009
comment
Спасибо Адам. Это именно то, что я искал. - person Matty; 11.06.2009

Нет, наличие неиспользуемых объявлений пространств имен в XML-документе не является незаконным.

person Josef Pfleger    schedule 11.06.2009

У W3C есть служба валидатора. Это подтверждается двумя предупреждениями: кодировкой и отсутствием типа документа.

person Charlie Martin    schedule 11.06.2009

Хотя большинство инструментов очистки удаляют неиспользуемые пространства имен, я не помню ничего в спецификации XML, говорящего о том, что их сохранение незаконно. И я не знаю ни одного синтаксического анализатора XML, который не принял бы такой документ (а таких документов много).

person drdaeman    schedule 11.06.2009
comment
Спасибо. Я работаю с клиентом, чей стек разработки оставляет желать лучшего. К сожалению, его XML-реализация имеет неприятную привычку вставлять неиспользуемые объявления пространств имен. Один из поставщиков, с которым мы работаем, отклоняет любые сообщения, содержащие неиспользуемые пространства имен, как недействительные в соответствии со спецификациями W3C. Проведя утро за просмотром рекомендаций, я не могу найти явного правила, утверждающего, что это незаконно. Однако я подумал, что мог что-то упустить из виду. Спасибо за отзыв. - person Matty; 11.06.2009