Если пространство имен по умолчанию и пространство имен с префиксом разрешается в одном и том же URI пространства имен, почему атрибут без префикса не равен атрибуту с префиксом, если оба имеют одинаковое локальное имя?
Пространства имен вСпецификация XML "просто говорит, что это так, но очень кратко объясняет, почему. Кто-нибудь знает, почему это так?
Выдержка из раздела "6.3 Уникальность атрибутов" в http://www.w3.org/TR/xml-names11/#uniqAttrs:
Например, каждый изнедопустимые теги пустых элементов недопустимы в следующих случаях:
<!-- http://www.w3.org is bound to n1 and n2 -->
<x xmlns:n1="http://www.w3.org"
xmlns:n2="http://www.w3.org" >
<bad a="1" a="2" />
<bad n1:a="1" n2:a="2" />
</x>
Однако каждое из следующих значений является допустимым, второе, поскольку пространство имен по умолчанию не применяется к именам атрибутов:
<!-- http://www.w3.org is bound to n1 and is the default -->
<x xmlns:n1="http://www.w3.org"
xmlns="http://www.w3.org" >
<good a="1" b="2" />
<good a="1" n1:a="2" />
</x>
Я думаю, что это только усложняет анализ XML с пространством имен, так как парсер должен проверить наличие обоих атрибутов и выбрать один.
В моем случае я хотел бы добавить ссылки Atom кмои XML-документы выглядят так:
<root xmlns="..." xmlns:atom="...">
<atom:link rel="self" type=".." href=".." />
</root>
Я думаю, что атрибуты на atom: link будут наследовать пространство имен элементов.При анализе XML с помощью DOM в Java сообщалось о пространстве имен Atom для элемента, но нет пространства имен для атрибутов.