Пространство имен XML
Вступление
Поскольку XML позволяет дизайнерам выбирать свои собственные имена тегов, возможно, что два или более дизайнеров могут выбрать одинаковые имена тегов для некоторых или всех своих элементов. Пространство имен XML решает эту проблему. Он предоставляет способ различать элементы XML, которые имеют одинаковое локальное имя, но фактически находятся в разных словарях. Это делается путем связывания элемента с пространством имен. Пространство имен действует как область действия для всех элементов, связанных с ним.
Синтаксис
<префикс: localname xmlns: prefix = 'URI пространства имен' /> <префикс: localname xmlns: prefix = 'URI пространства имен'> </ prefix: localname /> <префикс: localname xmlns: prefix = 'URI пространства имен'> children </ prefix: localname />
Этот XML содержит список учебных пособий для клиентских инструментов веб-разработки:
<?xml version="1.0" ?>
<tutorial>
<name>html</name>
<name>css</name>
<name>javascript</name>
</tutorial>
Этот XML содержит список учебных пособий для серверных инструментов веб-разработки:
<?xml version="1.0" ?>
<tutorial>
<name>php</name>
<name>asp</name>
<name>jsp</name>
</tutorial>;
Если эти два экземпляра XML объединить, так как оба они содержат элементы с именем тэга, это создаст конфликт имен. Синтаксический анализатор XML не сможет понять смысл использования учебного элемента на самом деле для разных целей. Используя пространство имен, эту проблему можно решить:
<?xml version="1.0" ?>
<cl:tutorial xmlns:cl="/client-side-tutorials">
<cl:name>html</cl:name>
<cl:name>css</cl:name>
<cl:name>javascript</cl:name>
</cl:tutorial>
<srv:tutorial xmlns:srv="/server-side-tutorials">
<srv:name>php</srv:name>
<srv:name>asp</srv:name>
<srv:name>jsp</srv:name>
</srv:tutorial>
Сами пространства имен также имеют имена. Имя пространства имен - это унифицированный идентификатор ресурса (URI). Такой URI служит уникальной строкой. Имя пространства имен и локальное имя элемента вместе образуют глобально уникальное имя, известное как квалифицированное имя.
В этом примере мы показали использование квалифицированного имени.
<?xml version="1.0" ?>
<srv:tutorial xmlns:srv='urn:
/server-side-tutorial'>
<name>php</name>
<name>asp</name>
<name>jsp</name>
</srv:tutorial>
Это еще один пример использования квалифицированных элементов с использованием объявления пространства имен по умолчанию:
<?xml version="1.0" ?>
<tutorial xmlns:srv='urn:
/server-side-tutorial'>
<name>php</name>
<name>asp</name>
<name>jsp</name>
</tutorial>
Объявления пространства имен появляются внутри начального и конечного тега элемента и используются для сопоставления префикса пространства имен. Синтаксис для объявления пространства имен: xmlns: prefix = "URI" .
Также возможно сопоставить имя пространства имен без префикса, используя объявление пространства имен по умолчанию. Синтаксис для объявления пространства имен по умолчанию: xmlns = "URI" .
В обоих случаях URI могут появляться в одинарных или двойных кавычках. В элементе может отображаться только одно объявление пространства имен по умолчанию. В элементе может отображаться любое количество объявлений пространства имен, отличных от заданных по умолчанию, при условии, что все они имеют разные префиксные части. Допустимо, хотя и не особенно полезно, отображать один и тот же URI более чем на один префикс.
Все объявления пространства имен имеют область действия, то есть набор элементов, к которым они могут применяться. Объявление пространства имен находится в области видимости для элемента, для которого оно объявлено, и всех потомков этого элемента. Отображение в рамках данного префикса в имя пространства имен может быть переопределено путем предоставления нового сопоставления для этого префикса в элементе-потомке. Пространство имен по умолчанию в области действия можно переопределить, предоставив новое объявление пространства имен по умолчанию для элемента-потомка.
Имена всех элементов в документе, которые соответствуют пространствам имен в спецификации пространства имен XML, являются QNames. Синтаксически все QNames имеют локальное имя и необязательный префикс.
Пример QNames:
И локальное имя, и префикс - NCNames. NCName названо без двоеточия в нем. Синтаксис для элемента с префиксом - префикс, за которым следует двоеточие, а затем локальное имя. Пространство имен элемента с заданным префиксом - это пространство имен, указанное в объявлении пространства имен в области действия для этого префикса. Это ошибка, если в области видимости нет такого объявления пространства имен. Пространство имен элементов без префикса - это пространство имен, указанное в объявлении пространства имен в области действия по умолчанию, если оно есть. Если в области действия нет объявления пространства имен по умолчанию, то такие элементы не находятся ни в одном пространстве имен. Элементы, не входящие ни в какое пространство имен, называются неквалифицированными элементами. Имя пространства имен неквалифицированных элементов - пустая строка "" . Если объявление области имен по умолчанию находится в области действия и требуется неквалифицированный элемент, объявление пространства имен по умолчанию можно замаскировать, предоставив декларацию пространства имен в форме xmlns = '' для элемента.
Предыдущая: Элементы XML
Далее: атрибут XML
Новый контент: Composer: менеджер зависимостей для PHP , R программирования