Подтвердить что ты не робот

Различия между "локальным именем" и "квалифицированным именем" в атрибуте xml

Не могли бы вы помочь мне понять, в чем разница между "локальным именем" и "квалифицированным именем" в атрибуте xml? Из http://developer.android.com/reference/org/xml/sax/Attributes.html:

/** Look up an attribute local name by index. */
abstract String getLocalName(int index)

/** Look up an attribute XML qualified (prefixed) name by index. */    
abstract String getQName(int index)

В этом примере

<anelement attr1="test" attr2="test2"> </anelement>

Какая разница?

4b9b3361

Ответ 1

Квалифицированное имя включает как префикс пространства имен, так и локальное имя: att1 и foo:att2.

Пример XML

<root 
    xmlns="http://www.example.com/DEFAULT" 
    att1="Hello" 
    xmlns:foo="http://www.example.com/FOO" 
    foo:att2="World"/>

Код Java:

att1

Атрибуты без префикса пространства имен не выбирают пространство имен по умолчанию. Это означает, что пространство имен для элемента root "http://www.example.com/DEFAULT", пространство имен для атрибута att1 равно "".

int att1Index = attributes.getIndex("", "att1");
attributes.getLocalName(att1Index);  // returns "att1"
attributes.getQName(att1Index);  // returns "att1"
attributes.getURI(att1Index);  // returns ""

ATT2

int att2Index = attributes.getIndex("http://www.example.com/FOO", "att2");
attributes.getLocalName(att2Index);  // returns "att2"
attributes.getQName(att2Index);  // returns "foo:att2"
attributes.getURI(att2Index);  // returns "http://www.example.com/FOO"

Ответ 2

Локальное имя - это имя, которое не определено пространством имен. Полностью квалифицированный включает пространство имен, если оно есть.

Возможно, стоит прочитать рекомендацию W3C по именам XML, чтобы получить полную информацию.

В принципе, если у вас нет xmlns в любом месте вашего XML файла, вам, вероятно, не нужно будет беспокоиться о пространствах имен. Если у вас есть пространства имен, вы, вероятно, захотите создать полное имя при проверке имен элементов и т.д.

Обратите внимание, что атрибуты, как правило, с меньшей вероятностью используют пространства имен, чем элементы, по моему опыту.