В качестве примера я буду ссылаться на следующий пример XML:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пространство имен
Пространство имен - это логический контейнер, в котором определен элемент. Пространство имен XML-схемы (с uri: http://www.w3.org/2001/XMLSchema).. В приведенном выше документе на него ссылаются в строке 2. Обработка XML-документа может происходить с использованием синтаксического анализатора XML, который осведомлен о пространстве имен или нет, но документы с использованием пространств имен как правило, должны анализироваться анализаторами пространства имен.
Пространства имен определены так, чтобы: а) они могли каталогизироваться синтаксическим анализатором, и б) чтобы элементы с одинаковыми именами в разных пространствах имен могли существовать в одном и том же документе, не становясь неоднозначно определенными.
Приставка
Префикс - это сокращенная клавиша, используемая для обозначения пространства имен. В приведенном выше примере xs
используется для ссылки на пространство имен схемы XML.
Локальное имя (часть)
Элемент в документе имеет имя, как оно определено в пространстве имен. В приведенном выше примере вы можете найти schema
, element
, complexType
, sequence
и element
в качестве локальных имен. Локальные имена могут быть неоднозначными, если у вас есть несколько пространств имен, на которые есть ссылки в вашем документе, и одно или несколько из этих пространств имен определяют элементы с одинаковыми именами.
Полное имя (qName)
Полное имя состоит из префикса для пространства имен (опционально, некоторые реализации могут использовать пространство имен uri), за которым следует :
, за которым следует локальное имя элемента. В приведенном выше примере вы можете найти xs:schema
, xs:element
, xs:complexType
, xs:sequence
и xs:element
в качестве квалифицированных имен. Эти имена однозначны и могут быть обработаны синтаксическим анализатором и проверены.