Почему атрибут XML без префикса XMLNS не равен префиксному атрибуту с тем же локальным именем? - PullRequest
2 голосов
/ 02 ноября 2011

Если пространство имен по умолчанию и пространство имен с префиксом разрешается в одном и том же 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 для элемента, но нет пространства имен для атрибутов.

1 Ответ

1 голос
/ 03 ноября 2011

Краткий ответ: атрибуты без префиксов всегда находятся в пустом пространстве имен, то есть у них нет пространства имен.

В примере:

<good a="1"     n1:a="2" />

первый а расширится до

{}a

тогда как второй расширится до:

{http://www.w3.org}a

В вашем примере с атомом все атрибуты находятся в пустом пространстве имен.

...