Опубликован: 08.08.2007 | Уровень: для всех | Доступ: платный
Лекция 9:

Связи и запросы

Аннотация: Описывается проект XML Information Set. Рассматриваются: создание ссылок на языке Xlink ; уточненные ссылки Xpointer ; адресация на языке Xpath. Коротко описываются особенности языка запросов XQuery.

Для того чтобы язык XML мог полностью задействовать свой потенциал, необходимо иметь способ реализации ссылок между документами XML, указатели на них и запросы к ним.

В связи с тем, что в документах XML сохраняется все 6ольше информации, возникает необходимость в разработке способа получения структурированного доступа к этой информации. Также необходимы способ определения связей между частями документов и обращения к фрагментам (или ресурсам) внутри документов, которые связаны с другими ресурсами. Эти ресурсы могут быть фрагментами как того же, так и других документов, или вовсе не относиться к формату XML.

XML Information Set

Проект The XML Information Set, или Infoset, - рабочий проект W3C описания различных фрагментов информации, составляющих правильно оформленный документ XML.

Целью проекта является создание общего словаря для описания содержания документов XML. Любой процессор XML, возвращающий информацию о содержании документа XML, будет описывать содержание в терминах данных информационных пунктов.

Информационные пункты

Имеющиеся пятнадцать различных пунктов информации совместно составляют правильно оформленный документ XML. Некоторые из этих пунктов должны присутствовать в грамматически разобранном (проанализированном) представлении документа XML, чтобы он мог быть конгруэнтным (по стандартам W3C ) оригинальному документу, другие можно при желании опустить. Назовем типы информации (информационных пунктов):

  1. Один информационный пункт документа (обязателен)
  2. Один или больше информационных пунктов элементов (обязательно)
  3. Информационные пункты атрибутов (обязательны)
  4. Информационные пункты команд обработки (обязательны)
  5. Информационные пункты символов (обязательны)
  6. Ссылка на пропущенные информационные пункты сущностей (обязательны)
  7. Информационные пункты комментариев (необязательны)
  8. Информационный пункт декларации пункта документа (необязательны)
  9. Информационные пункты объектов (обязательны для не анализируемых сущностей, необязательны для анализируемых сущностей)
  10. Информационные пункты нотации (обязательны)
  11. Информационные пункты маркера начала сущности (необязательны)
  12. Информационные пункты маркера конца сущности (необязательны)
  13. Информационные пункты маркера начала раздела CDATA (необязательны)
  14. Информационные пункты маркера конца раздела CDATA (необязательны)
  15. Информационные пункты декларации пространства имен (обязательны)

Необязательные пункты являются необязательными в том смысле, что они требуются в грамматически разобранном представлении документа для того, чтобы оно было достаточно конгруэнтно оригиналу в соответствии с определением InfoSet консорциума W3C.

Документ

Информационный пункт документа должен быть всегда ровно один, он содержит информацию о документе в целом и имеет следующие свойства:

  1. Список порожденных информационных пунктов в порядке их следования в оригинальном документе. Сюда входит, по крайней мере, один информационный пункт элемента. Кроме того, список должен содержать все информационные пункты команд обработки, определенные вне контекста корневого элемента документа. По желанию разработчика в этот список могут входить также информационные пункты комментариев, находящихся вне корневого элемента документа, а также информационные пункты декларации типа документа (если в оригинальном документе такая информация определена).
  2. Неупорядоченный набор из информационных пунктов нотаций для всех нотаций документа.
  3. Неупорядоченный набор из информационных пунктов сущностей для всех не анализируемых сущностей документа. По желанию разработчика в этот список могут входить также информационные пункты для анализируемых сущностей, для сущности документа и для внешнего множества DTD.
  4. При желании разработчик может включить сюда также идентификатор URI обрабатываемого документа.

Элемент

Для каждого элемента документа XML должен существовать один информационный пункт.

Информационные пункты элемента имеют следующие свойства:

  1. Упорядоченный список информационных пунктов порожденных элементов, команд обработки, ссылок на пропущенные сущности и символов в порядке их следования в документе. Этот список может быть пустым. При желании разработчика в него можно включить также информационные пункты комментариев. Кроме того, в список могут входить также информационные пункты маркеров: начала сущности, конца сущности, начала данных типа CDATA и конца данных типа CDATA ; эти пункты могут входить только соответствующими парами (не должно быть маркера начала без маркера конца и наоборот).
  2. Не упорядоченный список информационных пунктов атрибутов, по одному для каждого атрибута элемента. В набор входят также и атрибуты по умолчанию. Обратите внимание: если у элемента имеется атрибут пространства имен, а анализатор не распознает пространства имен, то атрибут включен в этот список для спецификации пространства имен; в противном случае он не будет туда включен. Этот список может быть пустым.
  3. Содержащийся в имени элемента фрагмент, соответствующий универсальному идентификатору ресурса ( URI ), предоставляемый процессором пространства имен. Если анализатор не осуществляет обработки пространств имен или если пространство имен для элемента не определено, URI будет равен нулю.
  4. Локальная часть имени элемента. Если анализатор не обрабатывает пространства имен, эта часть содержит все имя целиком (включая название пространства имен и двоеточие при наличии идентификатора пространства имен в имени элемента). В противном случае она представляет собой только локальную часть имени (после двоеточия) или имя целиком (если пространство имен не указано).
  5. Неупорядоченный набор ссылок на информационные пункты деклараций пространства имен. Они соответствуют пространствам имен, объявленным в составе этого элемента.
  6. По желанию разработчика сюда может входить также неупорядоченный список информационных пунктов деклараций пространств имен, которые соответствуют пространствам имен, объявленным в области действия этого элемента (т.е. в самом элементе или в одном из его предков).

Атрибут

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

У информационных пунктов атрибутов имеются следующие свойства:

  1. Фрагмент URI имени атрибута, при наличии.
  2. Локальная часть имени атрибута.
  3. Упорядоченный список информационных пунктов символов для каждого символа в (нормализованном) значении атрибута. При желании в этот список можно также включить информационные пункты маркеров начала и конца сущностей для всех ссылок на объекты в значении атрибута.
  4. По желанию разработчика можно указать флаг, определяющий, значение этого атрибута определено либо задано по умолчанию в определении DTD или в схеме.
  5. По желанию разработчика можно указать значение атрибута по умолчанию из DTD.
  6. По желанию разработчика можно указать тип, объявленный для атрибута в определении DTD.

Команды обработки

Для каждой команды обработки документа должен существовать информационный пункт команды обработки. Декларация ХМL и декларации внешних анализируемых объектов сами по себе командами обработки не считаются.

Информационные пункты команд обработки содержат следующие свойства:

  1. Цель команды обработки. Это первый знак, следующий за символами "<?" в теге команды обработки.
  2. Содержание команды обработки. Это остальной текст в теге перед закрывающими символами "?>", из которого удалено предшествующее ему пустое пространство. Может представлять собой, пустую строку.
  3. Разработчик может указать также идентификатор URI объекта, первоначально содержавшего команду обработки (если команда обработки объявлена в тексте, это будет URI обрабатываемого документа, если он известен).
Вадим Новицкий
Вадим Новицкий
Беларусь, Минск
Trololo Пукпрук
Trololo Пукпрук
Беларусь