Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Пространства имен XML используются для предоставления элементов и атрибутов с уникальными именами в документе XML . Они определены в рекомендации W3C . [1] [2] Экземпляр XML может содержать имена элементов или атрибутов из более чем одного словаря XML. Если каждому словарю дано пространство имен , можно разрешить неоднозначность между элементами или атрибутами с одинаковыми именами.

Простым примером может быть рассмотрение экземпляра XML, содержащего ссылки на клиента и заказанный продукт. И элемент клиента, и элемент продукта могут иметь дочерний элемент с именем id . Поэтому ссылки на элемент id будут неоднозначными; размещение их в разных пространствах имен устранит двусмысленность.

Имена пространств имен [ править ]

Имя пространства имен - это универсальный идентификатор ресурса (URI). Обычно URI, выбранный для пространства имен данного словаря XML, описывает ресурс, находящийся под контролем автора или организации, определяющей словарь, например URL-адрес веб-сервера автора. Однако спецификация пространства имен не требует и не предлагает использовать URI пространства имен для извлечения информации; он просто обрабатывается синтаксическим анализатором XML как строка. Например, сам документ по адресу http://www.w3.org/1999/xhtml не содержит никакого кода. Он просто описывает XHTMLпространство имен для читателей-людей. Использование URI (например, «http://www.w3.org/1999/xhtml») для идентификации пространства имен, а не простой строки (например, «xhtml»), снижает вероятность того, что разные пространства имен используют повторяющиеся идентификаторы.

Хотя термин URI пространства имен широко распространен, в Рекомендации W3C он упоминается как имя пространства имен . Спецификация не является полностью предписывающей относительно точных правил для имен пространств имен (в ней явно не говорится, что синтаксические анализаторы должны отклонять документы, в которых имя пространства имен не является допустимым универсальным идентификатором ресурса ), а многие синтаксические анализаторы XML позволяют использовать любую строку символов. В версии 1.1 рекомендации имя пространства имен становится интернационализированным идентификатором ресурса , который разрешает использование символов, отличных от ASCII, которые на практике уже были приняты почти всем программным обеспечением XML. URI пространства имен термина однако сохраняется не только в популярном использовании, но и во многих других спецификациях от W3C и других источников.

После публикации рекомендации пространств имен велись интенсивные дебаты о том, как следует обрабатывать относительный URI, причем некоторые активно утверждали, что его следует рассматривать просто как символьную строку, а другие убежденно утверждали, что его следует превратить в абсолютный URI. сопоставив его с базовым URI документа. [3] Результатом дебатов стало решение W3C, что относительные URI устарели. [4]

Использование URI в форме URL-адресов в схеме http (например, http://www.w3.org/1999/xhtml ) является обычным, несмотря на отсутствие каких-либо формальных отношений с протоколом HTTP. Спецификация пространств имен не говорит, что должно произойти, если такой URL разыменован (то есть, если программное обеспечение пытается получить документ из этого места). Одно из соглашений, принятых некоторыми пользователями, заключается в размещении документа RDDL в этом месте. [5] В целом, однако, пользователи должны предполагать, что URI пространства имен - это просто имя, а не адрес документа в сети.

Объявление пространства имен [ править ]

Пространство имен XML объявляется с использованием зарезервированного атрибута XML xmlnsили , значением которого должно быть допустимое имя пространства имен .xmlns:prefix

Например, следующее объявление отображает префикс «xhtml:» в пространство имен XHTML:

xmlns: xhtml = "http://www.w3.org/1999/xhtml"

Любой элемент или атрибут, имя которого начинается с префикса «xhtml:», считается находящимся в пространстве имен XHTML, если он или его предок имеет указанное выше объявление пространства имен.

Также возможно объявить пространство имен по умолчанию. Например:

xmlns = "http://www.w3.org/1999/xhtml"

В этом случае любой элемент без префикса пространства имен считается находящимся в пространстве имен XHTML, если он или его предок имеет указанное выше объявление пространства имен по умолчанию.

Если в области нет объявления пространства имен по умолчанию, имя пространства имен не имеет значения. [6] В этом случае считается, что элемент без явного префикса пространства имен не находится ни в каком пространстве имен.

Атрибуты никогда не подчиняются пространству имен по умолчанию. Считается, что атрибут без явного префикса пространства имен не входит ни в какое пространство имен.

Пространства имен в API и объектных моделях XML [ править ]

В разных спецификациях использовались разные подходы к тому, как информация о пространстве имен представляется приложениям.

Почти все модели программирования позволяют извлекать имя элемента или узла атрибута как имя из трех частей: локальное имя, префикс пространства имен и URI пространства имен. Приложениям не следует придавать какое-либо значение выбору префикса, но информация предоставляется, потому что она может быть полезна для читателей. Имена считаются равными, если совпадают URI пространства имен и локальное имя.

Кроме того, большинство моделей предоставляют способ определить, какие пространства имен были объявлены для данного элемента. Эта информация необходима, потому что некоторые словари XML допускают появление полных имен (содержащих префиксы пространств имен) в содержимом элементов или атрибутов, а также в их именах. Есть три основных способа предоставления этой информации:

  • В качестве узлов атрибутов с именами «xmlns» или «xmlns: xxx» точно так же, как пространства имен записаны в исходном XML-документе. Это модель, представленная DOM .
  • Как объявления пространств имен: отличаются от атрибутов, но взаимно однозначно соответствуют соответствующим атрибутам в исходном XML-документе. Это модель, представленная JDOM .
  • Как привязки пространств имен в области видимости: в этой модели приложение может определить, какие пространства имен находятся в области видимости для любого заданного элемента, но не может определить, какие элементы содержат фактические объявления. Эта модель используется в XPath , XSLT и XQuery .

См. Также [ править ]

Ссылки [ править ]

  1. ^ Брей, Тим; Дэйв Холландер; Эндрю Лэйман; Ричард Тобин; Генри С. Томпсон (декабрь 2009 г.). «Пространства имен в XML 1.0» . W3C . Проверено 9 октября 2010 года .
  2. ^ «Временная шкала стандартов XML и семантической сети W3C» (PDF) .
  3. Доддс, Ли (24 мая 2000 г.). «Известия из окопов» . O'Reilly Media, Inc.
  4. ^ Коннолли, Дэн (11 сентября 2000 г.), Пленарное решение W3C XML по относительным ссылкам URI в объявлениях пространств имен
  5. ^ Harold, Эллиотт Расти (20 февраля 2001). "RDDL Me This: Что находится в URL-адресе пространства имен?" . Архивировано из оригинального 7 -го мая 2017 года.
  6. ^ «Пространства имен в XML 1.0 (третье издание)» . W3C . Проверено 28 апреля 2017 года .

Внешние ссылки [ править ]

  • Пространства имен в XML 1.0 (третье издание)
  • Пространства имен в XML 1.1 (второе издание)
  • Ускоренный курс по пространствам имен (сеть разработчиков Mozilla)