Языки информационного обмена

Описание схемы документа на языке XSD


Связать XML документ с его XSD схемой можно разными способами:

  1. подать файлы со схемой на вход анализатора.
  2. задать файлы со схемой как свойство анализатора.
  3. указать прямо в документе XML.

Рассмотрим 3 способ более подробно.

Если элементы документа не принадлежат никакому пространству имен и записаны без префикса, то в корневом элементе документа записывается атрибут noNamespaceSchemaLocation, указывающий расположение файла со схемой в форме URI:

< root_element_name xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation="file_name.xsd">

В этом случае в схеме не должно быть целевого пространства имен.

Если же элементы документа относятся к некоторому пространству имен, то применяется атрибут schemaLocation, в котором через пробел перечисляются пространство имен и расположение файла со схемой, описывающей это пространство имен.

Элементы, из которых будет состоять документ XML, объявляются в схеме компонентом element:

<xsd:element_name="имя элемента" tуре="тип элемента" minOccurs="Haменьшее число появлений элемента в документе" maxOccurs="наибольшее число появлений" />

Значение по умолчанию необязательных атрибутов minOccurs и maxOccurs равно 1. Это означает, что если эти атрибуты отсутствуют, то элемент должен появиться в документе XML ровно один раз.

Указание типа элемента в атрибуте type удобно, если это встроенный простой тип или тип, определенный заранее. Тогда в атрибуте type можно записать только имя типа.

Если же тип элемента определяется здесь же, то определение типа элемента лучше вынести:

<xsd:element name="имя элемента">

Определение типа элемента

</xsd:element>

Объявление атрибута элемента тоже несложно:

<xsd:attribute name=" имя атрибута" type="тип атрибута" use="обязательность атрибута" default="значение по умолчанию" />

Необязательный атрибут use принимает три значения:

  1. optional - описываемый атрибут необязателен (это значение по умолчанию);
  2. required - описываемый атрибут обязателен;
  3. prohibited - описываемый атрибут неприменим. Это значение полезно при определении подтипа, чтобы отменить некоторые атрибуты базового типа.

Определение типа атрибута, - а это должен быть простой тип, - можно вынести в содержимое элемента attribute:

<xsd:attribute name="имя атрибута">

Тип атрибута

</xsd:attribute>



Содержание раздела