Беларусь, Минск |
Связи и запросы
Для того чтобы язык XML мог полностью задействовать свой потенциал, необходимо иметь способ реализации ссылок между документами XML, указатели на них и запросы к ним.
В связи с тем, что в документах XML сохраняется все 6ольше информации, возникает необходимость в разработке способа получения структурированного доступа к этой информации. Также необходимы способ определения связей между частями документов и обращения к фрагментам (или ресурсам) внутри документов, которые связаны с другими ресурсами. Эти ресурсы могут быть фрагментами как того же, так и других документов, или вовсе не относиться к формату XML.
XML Information Set
Проект The XML Information Set, или Infoset, - рабочий проект W3C описания различных фрагментов информации, составляющих правильно оформленный документ XML.
Целью проекта является создание общего словаря для описания содержания документов XML. Любой процессор XML, возвращающий информацию о содержании документа XML, будет описывать содержание в терминах данных информационных пунктов.
Информационные пункты
Имеющиеся пятнадцать различных пунктов информации совместно составляют правильно оформленный документ XML. Некоторые из этих пунктов должны присутствовать в грамматически разобранном (проанализированном) представлении документа XML, чтобы он мог быть конгруэнтным (по стандартам W3C ) оригинальному документу, другие можно при желании опустить. Назовем типы информации (информационных пунктов):
- Один информационный пункт документа (обязателен)
- Один или больше информационных пунктов элементов (обязательно)
- Информационные пункты атрибутов (обязательны)
- Информационные пункты команд обработки (обязательны)
- Информационные пункты символов (обязательны)
- Ссылка на пропущенные информационные пункты сущностей (обязательны)
- Информационные пункты комментариев (необязательны)
- Информационный пункт декларации пункта документа (необязательны)
- Информационные пункты объектов (обязательны для не анализируемых сущностей, необязательны для анализируемых сущностей)
- Информационные пункты нотации (обязательны)
- Информационные пункты маркера начала сущности (необязательны)
- Информационные пункты маркера конца сущности (необязательны)
- Информационные пункты маркера начала раздела CDATA (необязательны)
- Информационные пункты маркера конца раздела CDATA (необязательны)
- Информационные пункты декларации пространства имен (обязательны)
Необязательные пункты являются необязательными в том смысле, что они требуются в грамматически разобранном представлении документа для того, чтобы оно было достаточно конгруэнтно оригиналу в соответствии с определением InfoSet консорциума W3C.
Документ
Информационный пункт документа должен быть всегда ровно один, он содержит информацию о документе в целом и имеет следующие свойства:
- Список порожденных информационных пунктов в порядке их следования в оригинальном документе. Сюда входит, по крайней мере, один информационный пункт элемента. Кроме того, список должен содержать все информационные пункты команд обработки, определенные вне контекста корневого элемента документа. По желанию разработчика в этот список могут входить также информационные пункты комментариев, находящихся вне корневого элемента документа, а также информационные пункты декларации типа документа (если в оригинальном документе такая информация определена).
- Неупорядоченный набор из информационных пунктов нотаций для всех нотаций документа.
- Неупорядоченный набор из информационных пунктов сущностей для всех не анализируемых сущностей документа. По желанию разработчика в этот список могут входить также информационные пункты для анализируемых сущностей, для сущности документа и для внешнего множества DTD.
- При желании разработчик может включить сюда также идентификатор URI обрабатываемого документа.
Элемент
Для каждого элемента документа XML должен существовать один информационный пункт.
Информационные пункты элемента имеют следующие свойства:
- Упорядоченный список информационных пунктов порожденных элементов, команд обработки, ссылок на пропущенные сущности и символов в порядке их следования в документе. Этот список может быть пустым. При желании разработчика в него можно включить также информационные пункты комментариев. Кроме того, в список могут входить также информационные пункты маркеров: начала сущности, конца сущности, начала данных типа CDATA и конца данных типа CDATA ; эти пункты могут входить только соответствующими парами (не должно быть маркера начала без маркера конца и наоборот).
- Не упорядоченный список информационных пунктов атрибутов, по одному для каждого атрибута элемента. В набор входят также и атрибуты по умолчанию. Обратите внимание: если у элемента имеется атрибут пространства имен, а анализатор не распознает пространства имен, то атрибут включен в этот список для спецификации пространства имен; в противном случае он не будет туда включен. Этот список может быть пустым.
- Содержащийся в имени элемента фрагмент, соответствующий универсальному идентификатору ресурса ( URI ), предоставляемый процессором пространства имен. Если анализатор не осуществляет обработки пространств имен или если пространство имен для элемента не определено, URI будет равен нулю.
- Локальная часть имени элемента. Если анализатор не обрабатывает пространства имен, эта часть содержит все имя целиком (включая название пространства имен и двоеточие при наличии идентификатора пространства имен в имени элемента). В противном случае она представляет собой только локальную часть имени (после двоеточия) или имя целиком (если пространство имен не указано).
- Неупорядоченный набор ссылок на информационные пункты деклараций пространства имен. Они соответствуют пространствам имен, объявленным в составе этого элемента.
- По желанию разработчика сюда может входить также неупорядоченный список информационных пунктов деклараций пространств имен, которые соответствуют пространствам имен, объявленным в области действия этого элемента (т.е. в самом элементе или в одном из его предков).
Атрибут
У каждого атрибута документа должен быть один информационный пункт. Если процессор распознает пространства имен, то используемые для их определения атрибуты в списке данных информационных пунктов представлены не будут.
У информационных пунктов атрибутов имеются следующие свойства:
- Фрагмент URI имени атрибута, при наличии.
- Локальная часть имени атрибута.
- Упорядоченный список информационных пунктов символов для каждого символа в (нормализованном) значении атрибута. При желании в этот список можно также включить информационные пункты маркеров начала и конца сущностей для всех ссылок на объекты в значении атрибута.
- По желанию разработчика можно указать флаг, определяющий, значение этого атрибута определено либо задано по умолчанию в определении DTD или в схеме.
- По желанию разработчика можно указать значение атрибута по умолчанию из DTD.
- По желанию разработчика можно указать тип, объявленный для атрибута в определении DTD.
Команды обработки
Для каждой команды обработки документа должен существовать информационный пункт команды обработки. Декларация ХМL и декларации внешних анализируемых объектов сами по себе командами обработки не считаются.
Информационные пункты команд обработки содержат следующие свойства:
- Цель команды обработки. Это первый знак, следующий за символами "<?" в теге команды обработки.
- Содержание команды обработки. Это остальной текст в теге перед закрывающими символами "?>", из которого удалено предшествующее ему пустое пространство. Может представлять собой, пустую строку.
- Разработчик может указать также идентификатор URI объекта, первоначально содержавшего команду обработки (если команда обработки объявлена в тексте, это будет URI обрабатываемого документа, если он известен).