XML-технология: элементы и атрибуты для реализации веб-сервисов - XML Infoset

« Prev
Next »

XML Infoset

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

Спецификация XML Information Set (XML Infoset) описывает абстрактную модель данных, представленных XML-документом, в виде набора информационных еди­ниц. Каждая информационная единица является абстрактным описанием опреде­ленной части XML-документа и имеет набор связанных с ней свойств.

Необязательно каждый XML-документ должен иметь информационное простран­ство XML Infoset. Информационное пространство XML Infoset имеют лишь XML- документы, отвечающие правилам XML-синтаксиса согласно спецификации XML и соответствующие пространству имен согласно спецификации XML Namespaces.

Таким образом, правильно оформленный XML-документ — это сериализованная форма определенного информационного пространства.

Модель XML Infoset реализуется различными языками программирования в виде объектов, обеспечивающих доступ к частям XML-документа.

Спецификация XML Infoset определяет для XML-документа 11 типов информаци­онных единиц — каждая с соответствующим набором свойств.

Информационное пространство XML-документа содержит как минимум корневую информационную единицу document. Все остальные информационные единицы информационного пространства XML-документа доступны с помощью свойств кор­невой информационной единицы document или свойств дочерних для document ин­формационных единиц.

Информационная единица document имеет следующие свойства:

  • [children] — список дочерних для document информационных единиц верхнего уровня, при этом список содержит как минимум одну информационную единицу — document element. Список также содержит информационные единицы processing instruction (инструкция по обработке информационной единицы) и comment (комментарий). Список может содержать информационный элемент document type declaration (DTD-описание или ссылка на DTD -описание структуры XML-документа);
  • [document element] — идентификатор информационной единицы document element;
  • [notations] — набор информационных единиц notation (нотации, которые дают возможность передавать приложениям различную информацию, например, спо­соб обработки сущности, не подлежащей разбору);
  • [unparsed entities] — набор информационных единиц unparsed entity (сущно­сти, не подлежащие разбору);
  • [base uri] — URI-идентификатор XML-документа;
  • [character encoding scheme] — символьная кодировка XML-документа;
  • [standalone] — если YES, тогда указывает автономность документа, т. е. воз­можность обработки XML-документа без привлечения других документов;
  • [version] — версия XML-документа;
  • [all declarations processed] — если true, тогда XML-процессор должен пол­ностью обработать DTD-описание структуры XML-документа.

Каждый XML-документ состоит из элементов, ограниченных тегами и представ­ляющих соответствующие информационные единицы element информационного пространства XML Infoset.

Информационные единицы element являются дочерними по отношению к инфор­мационной единице document element и имеют следующие свойства:

  • [namespace name] — URI-идентификатор пространства имен, к которому при­надлежит элемент;
  • [local name] — локальная часть имени элемента, которая вместе со свойством [namespace name] образует имя элемента;
  • [prefix] — префикс пространства имен элемента;
  • [children] — список дочерних информационных единиц, содержащий инфор­мационные единицы element, а также информационные единицы processing instruction (инструкции для обработки), unexpanded entity reference (ссылка на необработанную внешнюю сущность, подлежащую разбору), character (единица текста — последовательности символов) и comment (комментарии) для данного элемента;
  • [attributes] — набор информационных единиц attribute, представленный ат­рибутами элемента XML-документа;
  • [namespace attributes] — набор информационных единиц attribute, представ­ленный атрибутами элемента, объявляющими используемые элементом пространства имен;
  • [in-scope namespaces] — набор информационных единиц namespace (простран­ства имен, используемые элементом);
  • [base uri] — URI-идентификатор элемента;
  • [parent] — информационная единица, являющаяся родительской.

Атрибуты элементов в виде пар "имя/значение" XML-документа представляют ин­формационные единицы attribute информационного пространства XML Infoset. Атрибуты могут быть определены в XML-документе или установлены по умолча­нию.

Атрибуты подразделяются на три типа — строковые, лексемы (знаковый тип) и пе­речисления.

Информационная единица attribute имеет следующие свойства:

  • [namespace name] — URI-идентификатор пространства имен, к которому при­надлежит атрибут;
  • [local name] — локальная часть имени атрибута, которая вместе со свойством [namespace name] образует имя атрибута;
  • [prefix] — префикс пространства имен атрибута;
  • [normalized value] — нормализованное значение атрибута с преобразованием пробелов;
  • [specified] — флаг, указывающий, что атрибут определен в начальном теге элемента или установлен по умолчанию в DTD-описании;
  • [attribute type] — тип атрибута, объявленный в описании структуры XML- документа. Возможные значения — ID, IDREF, IDREFS (идентификаторы и ссылки на идентификаторы — знаковые типы), ENTITY, ENTITIES (имена сущностей, не подлежащих разбору — знаковые типы), NMTOKEN, NMTOKENS (лексемы имен — знаковые типы), NOTATION (информация, используемая приложением — строко­вый тип), CDATA (символьная строка — строковый тип) и ENUMERATION (список до­пустимых значений атрибута — перечисление);
  • [references] — если тип атрибута равен IDREF, IDREFS, ENTITY, ENTITIES или NOTATION, тогда список информационных единиц element, unparsed entity или notation; если тип атрибута — ID, NMTOKEN, NMTOKENS, CDATA или ENUMERATION, тогда свойство не имеет значения;
  • [owner element] — информационная единица element, к которой относится дан­ная единица attribute.

Информационная единица processing instruction, представленная инструкцией обработки элемента в XML-документе, имеет следующие свойства:

  • [target] — имя приложения, исполняющего инструкцию;
  • [content] — данные для приложения в виде пар "имя/значение";
  • [base uri] — URI-идентификатор инструкции;
  • [notation] — информационная единица notation, определяющая имя приложе­ния, которое исполняет инструкцию;
  • [parent] — информационная единица, к которой относится данная инструкция.

Информационная единица unexpanded entity reference представлена ссылкой на необработанную XML-процессором внешнюю сущность, подлежащую разбору. Эта информационная единица имеет следующие свойства:

  • [name] — имя сущности;
  • [system identifier] — системный идентификатор сущности в виде URI-адреса сущности;
  • [public identifier] — публичный идентификатор общедоступной сущности в виде URI-адреса сущности;
  • [declaration base uri] — базовый URI-адрес, относительно которого разреша­ется системный идентификатор;
  • [parent] — информационная единица element, к которой относится данная сущ­ность.

 

Информационная единица character представлена символьными данными XML- документа и имеет следующие свойства:

  • [character code] — символьная кодировка ISO 10646;
  • [element content whitespace] — если true, тогда символ является пробелом;
  • [parent] — информационная единица element, к которой относится данная ин­формационная единица character.

Информационная единица comment представлена комментариями XML-документа и имеет следующие свойства:

  • [content] — строка комментария;
  • [parent] — информационная единица document или element, к которой относится данный комментарий.

Информационная единица document type declaration представлена ссылкой или са­мим DTD-описанием структуры XML-документа и имеет следующие свойства:

  • [system identifier] — системный идентификатор внешнего DTD-описания в виде URI-адреса;
  • [public identifier] — публичный идентификатор общедоступного внешнего DTD-описания в виде URI-адреса;
  • [children] — список информационных единиц processing instruction, пред­ставленных инструкциями обработки DTD-описания;
  • [parent] — информационная единица document, к которой относится данное DTD -описание.

Информационная единица unparsed entity представлена сущностью, не подлежа­щей обработке XML-процессором и объявленной в описании структуры XML- документа. Обычно это ресурс в двоичном формате или другом не XML-фор­мате, например GIF, BMP и др. Информационная единица unparsed entity имеет свойства:

  • [name] — имя сущности;
  • [system identifier] — системный идентификатор сущности в виде URI-адреса сущности;
  • [public identifier] — публичный идентификатор общедоступной сущности в виде URI-адреса сущности;
  • [declaration base uri] — базовый URI-адрес, относительно которого разреша­ется системный идентификатор;
  • [notation name] — имя нотации, определяющей формат сущности, которая не подлежит обработке;
  • [notation] — информационная единица notation с именем, указанным в свойст­ве [notation name].

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

  • [name] — имя нотации;
  • [system identifier] — системный идентификатор нотации в виде URI-адреса;
  • [public identifier] — публичный идентификатор общедоступной нотации в виде URI-адреса;
  • [declaration base uri] — базовый URI-адрес, относительно которого разреша­ется системный идентификатор.

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

  • [prefix] — часть имени, следующая после xmlns:, если префикс отсутствует, тогда пространство имен является установленным по умолчанию;
  • [namespace name] — пространство имен, следующее после префикса.

Как уже было сказано, XML-документы предназначены для хранения данных. Но приложение, использующее XML-документ, работает не непосредственно с документом, а с его информационным пространством XML Infoset, получаемым как ре­зультат разбора XML-документа XML-процессором. Однако информационное про­странство XML Infoset может быть получено и другими способами, например, с использованием библиотек API DOM. В этом случае такое информационное пространство называется синтетическим.

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

При использовании XML-документа, не имеющего правил, вся ответственность за корректность написания документа лежит на его авторе.

Однако чаще всего XML-документы имеют описание своей структуры — XML- схему, представляющую собой набор логических и структурных правил. В этом случае проверку документа на соответствие правилам, определенным в описании структуры документа, производит XML-процессор.

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

Описание структуры XML-документа, накладывающее ограничения на структуру и содержание документов данного типа, может быть создано с помощью различных языков, таких как Document Type Definition (DTD), XML Schema, RELAX NG и др.

Первым языком для создания XML-схем был язык Document Type Definition (DTD). Язык DTD является компактным и позволяет включать описание структуры XML- документа непосредственно в сам XML-документ. Но синтаксис языка DTD отли­чается от XML-синтаксиса, поэтому он прямо не поддерживается платформами и инструментами технологии XML. Кроме того, язык DTD не поддерживает про­странства имен, а поддержка типов данных ограничена. Язык DTD не позволяет определять элементы, содержащие целые и вещественные числа, даты и времена и др., и не может указывать сложные связи между элементами.

Язык XML Schema дает более богатые возможности по сравнению с DTD и устра­няет его недостатки. Синтаксис XML Schema является XML-синтаксисом, кроме того, в языке XML Schema обеспечена поддержка пространств имен и всех необхо­димых типов данных. Также язык XML Schema позволяет создавать собственные типы данных и расширять существующие. Использование языка XML Schema обеспечивает трансформацию XML-документа в иерархию объектов определенных типов, доступных программным способом с помощью интерфейса (функциональ­ность Post-Schema-Validation Infoset (PSVI)).

Язык RELAX NG, как и XML Schema, использует XML-синтаксис и по сравнению с XML Schema является более простым и легким в изучении. Язык RELAX NG со­четает в себе простоту DTD и богатые возможности XML Schema. Однако так как язык RELAX NG является в определенном смысле упрощением XML Schema, то он не поддерживает функциональность PSVI и имеет упрощенную типовую модель, что делает необходимым использование сторонних библиотек типов данных.

Здесь мы более подробно остановимся на языке XML Schema.

 

« Prev
Next »
Войдите чтобы комментировать