Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мультимедиа.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
233.67 Кб
Скачать

15. Пространства имен xml. Использование пространств имен, префиксы. Уникальные идентификаторы в форме url и urn.

Множество элементов и атрибутов, которые содержатся в ХМL-документе, называется словарем. Словарь может оказаться очень полезным, если он моделирует многократно используемую информацию. Например, можно создать финансовый или химический словарь. Наличие пространства имен позволяет предотвратить возможные конфликты, так как словарям могут быть присвоены уникальные имена. А благодаря этому словари можно использовать в разных приложениях. 

Пространство имен XML – это идентифицируемая с помощью ссылки URI коллекция имен, используемых в XML документах для обозначения типов элементов и именования атрибутов.

Идентификаторы пространства имен XML также должны соответствовать определенному синтаксису — синтаксису для ссылок Универсального идентификатора ресурса (Uniform Resource Identifier (URI)). Это значит, что идентификаторы пространства имен XML должны следовать шаблонному синтаксису для URI, определенному в RFC 2396.

URI определяется как составная строка символов для определения абстрактного или физического ресурса. В большинстве ситуаций ссылки URI используются для определения физических ресурсов (Web-страниц, файлов для загрузки и т.д.), но в случае с пространствами имен XML ссылки URI определяют абстрактные ресурсы, а именно, пространства имен.

Согласно URI-спецификации, существует две основные формы URI: Унифицированные указатели информационного ресурса (Uniform Resource Locators (URL)) и Унифицированные имена информационного ресурса (Uniform Resource Names (URN)). Любой тип URI может использоваться как идентификатор пространства имен.

Ниже приведен пример двух URL, которые могут использоваться в качестве идентификаторов пространства имен:

http://www.develop.com/student

http://www.ed.gov/elementary/students

И вот несколько примеров URN, которые также могут использоваться как идентификаторы пространства имен:

urn:www-develop-com:student

urn:www.ed.gov:elementary.students

urn:uuid:E7F73B13-05FE-44ec-81CE-F898C4A6CDB4

Наиболее важным атрибутом пространства имен является то, что он уникален. Регистрируя имя домена в Internet-администрации присваивания имен, авторы могут гарантировать уникальность URL. Затем автор отвечает за обеспечение уникальности всех строк, используемых после имени домена.

URN работает так же. Вот основной синтаксис URN:

urn:<namespace identifier>:<namespace specific string>

Чтобы гарантировать уникальность URN, авторы снова должны регистрировать идентификатор пространства имен в Internet-администрации присваивания имен. Далее автор несет ответственность за следование схеме генерирования уникальных, характерных для пространства имен строк.

Использование пространств имен.

Имена элементов и атрибутов на самом деле образуются из двух частей: имени пространства имен и локального имени. Такие двойные имена известны как составные имена или QName.

В XML-документе мы используем префикс пространства имен, чтобы определить локальные имена элементов или атрибутов. На самом деле, префикс – это просто аббревиатура идентификатора пространства имен (URI), который обычно слишком длинный. Сначала префикс преобразовывается в идентификатор пространства имен через описание пространства имен. Синтаксис описания пространства имен следующий:

xmlns:<prefix>="<namespace identifier>"

Описание пространства имен выглядит просто как атрибут (элемента), но в рамках логической структуры документа нет официально принятых атрибутов (т.е. они не появятся в коллекции атрибутов элемента при использовании DOM).

Префикс пространства имен рассматривается в области видимости элемента описания, так же как и наследующихся от него элементов. Будучи объявленным, префикс может использоваться перед именем любого элемента или атрибута, отделенным от него двоеточием (как s:student). Это полное имя, включая префикс, является лексической формой составного имени (QName):

QName = <prefix>:<local name>

Префикс ассоциирует элемент или атрибут с идентификатором пространства имен, в настоящее время преобразованным в префикс в области видимости.

Давайте предположим, что разработчик хочет использовать пространство имен the XSLT 1.0. Ему понадобится предоставить описание пространства имен, которое преобразовывает произвольный префикс в официальный идентификатор пространства имен XSLT 1.0 (http://www.w3.org/1999/XSL/Transform). Затем перед каждым элементом или атрибутом из пространства имен XSLT 1.0, которые разработчик хочет использовать, просто надо поставить соответствующий префикс, как показано в следующем примере:

<x:transform version="1.0"

xmlns:x="http://www.w3.org/1999/XSL/Transform"

>

<x:template match="/">

<hello_world/>

</x:template>

</x:transform>

Предыдущий пример показывает синтаксис обращения к элементам в пространстве имен. Каждый элемент, имеющий префикс "x", из пространства имен http://www.w3.org/1999/XSL/Transform, в то время как любой элемент, не имеющий префикса, не относится к пространству имен (например, hello_world). Теперь обработчик может различать программные конструкции XSLT 1.0 и буквенные элементы, которые предназначены для вывода, как, например, hello_world. Если в имени пространства имен XSLT 1.0 сделана хотя бы одна ошибка, обработчик XSLT 1.0 не сможет распознать документ как словарь, который он понимает.