2015-04-17 5 views
2

Это хорошо сформированный XML без пространства имен по умолчанию.Элементы без пространства имен в XML

<?xml version="1.0" encoding="UTF-8"?> 
<Zoo xmlns:Staff="URN:STAFF" xmlns:Animal="URN:ANIMAL"> 
    <Staff:Security name="John" surname="Connor"/> 
    <Animal:Dog name="Hachico"/> 
    <Visitor name="Arnold" surname="Schwarzenegger"/> 
</Zoo> 
  1. В каком пространстве имен есть атрибут имя тега животных: собаки?
  2. В каком пространстве имен есть элемент ?

ответ

4

Они не принадлежат ни к одному пространству имен.

The relevant section of the XML Namespaces spec включает в себя это заявление:

Если нет объявления пространства имен по умолчанию не в области видимости, имя пространства имен не имеет значения.

В терминологии этой спецификации «расширенное имя» состоит из пары значений, «имени пространства имен» и «локального имени». Таким образом, вы можете представить элемент <Animal:Dog /> как-то вроде {'URN:ANIMAL', 'Dog'}, а элемент <Visitor /> - {null, 'Visitor'}.

префиксов атрибуты немного более любопытно, как обсуждалось в this related question, потому что они не принимают на пространство имен по умолчанию, даже если один находится в области видимости:

имя пространства имен для имени атрибута без префикса всегда имеет неважно.

Многие люди будут свободно интерпретировать атрибут как находящийся в том же пространстве имен, что и элемент, в котором он включен, но это не так. <Animal:Dog name="Hachico" /> is не так же, как <Animal:Dog Animal:name="Hachico" />.

Смежные вопросы