Я пытаюсь понять правильную интерпретацию определения "Namespaces in XML 1.0 (Third Edition)" для неквалифицированных пространств имен атрибутов.
"Имя пространства имен для имени без префикса атрибута всегда не имеет значения."
И позже в том же разделе:
"Значение атрибута в объявлении пространства имен по умолчанию МОЖЕТ быть пустым. Это имеет тот же эффект в пределах области объявления, что пространство имен по умолчанию отсутствует."
Итак, если я хочу объявить пространство имен по умолчанию для элемента (и его дочерних элементов), мне также нужно объявить сопоставление пространства имен префиксов для любых атрибутов, которые находятся внутри этого пространства имен?
Например, в этом примере
<parent xmlns="http://example.com/foo">
<child attrib="value">text</child>
<parent>
Я бы интерпретировал вышеприведенное определение, чтобы сказать, что пространство имен attrib
пусто.
Итак, если мне нужно attrib
иметь такое же пространство имен, что и parent
, тогда я был бы вынужден сделать это?
<foo:parent xmlns:foo="http://example.com/foo">
<foo:child foo:attrib="value">text</foo:child>
<foo:parent>
или это?
<parent xmlns="http://example.com/foo" xmlns:foo="http://example.com/foo">
<child foo:attrib="value">text</child>
<parent>
Это кажется мне глупым, поскольку он, кажется, побеждает цель пространства имен по умолчанию. Я надеюсь, что я просто недопонимаю спецификацию.