Определение элементов со сложными моделями содержания




Лекция №

Тема: Введение в xml-схемы

Место XML-схем

XML-схемы (xml schemas) — это альтернативный DTD способ формального описания языков xml-разметки. В файлах XML Schema определяются:

· элементы, которые могут появляться в документе,

· атрибуты, которые могут быть у объявленных элементов,

· является ли элемент пустым, или он может включать текст и элементы,

· для непустых элементов, какие элементы могут быть дв него вложены, а также порядок и число дочерних элементов,

· типы данных для элементов и их атрибутов,

· значения по умолчанию и фиксированные значения элементов и атрибутов.

В сравнении с DTD, xml-схемы обладают следующими преимуществами:

· правила языка разметки описываются средствами xml, а не спомощью специального языка, как DTD,

· описания конструкций и свойств элементов языков разметки более понятны,

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

· схемы обладают большой гибкостью и способностью к расширению и модификации.

Схемы не заменяют DTD полностью, например, описание самих языков схем выполняется с помощью DTD.

Языки XML-схем носят название XML Schema Definition (XSD).

Определение простых элементов

Определение простого элемента включает задание имени элемента и типа данных:

<xs:element name="xxx" type="yyy"/>

Используются следующие встроенные типы данных:

xs:string, xs:decimal, xs:integer, xs:boolean, xs:date, xs:time.

Например, информация о некотором человеке (фамилия — строка символов, возраст — число, дата рожения — дата) представлена разметкой:

<lastname>Иванов</lastname><age>20</age><born>01-01-1990</born>

Элементы lastname, age и born должны быть определены в схеме следующим образом:

<xs:element name="lastname" type=" xs:string "/><xs:element name="age" type=" xs:integer "/><xs:element name="born" type=" xs:date "/>

Заметим, что в DTD имеется только один тип данных — строки, и нет возможности указывать точные типы данных, как в данном случае.

Атрибуты элементов

Описание атрибута выполняется задается следующим образом:

<xs:attribute name="xxx" type="yyy"/>

где xxx – имя атрибута, а yyy — тип данных атрибута.

Используются следующие встроенные типы данных:

xs:string, xs:decimal, xs:integer, xs:boolean, xs:date, xs:time.

Например, XML элемент с атрибутом:

<lastname lang="RU">Иванов</lastname>

описывается соответствующей схемой:

<xs:attribute name="lang" type=" xs:string "/>

Значение атрибута по умолчанию или фиксированное значение описываются следующим образом:

<xs:attribute name="lang" type="xs:string" default ="RU"/><xs:attribute name="lang" type="xs:string" fixed ="RU"/>

По умолчанию все атрибуты являются необязательными. Для описания обязательных атрибутов используется следующая конструкция:

<xs:attribute name="lang" type="xs:string" use="required"/>

Задание ограничений

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

Благодаря типизации обеспечивается более надежная передача данных. Например, когда данные пересылаются от отправителя получателю существенно, чтобы оба участника обмена имели о содержании одинаковое представление. С помощью XML-схем отправитель может описать данные таким образом, чтобы получатель смог их правильно понять. Даты типа "02-12-2010" в одних странах интерпретируются как 2 декабря, а в других — как 12 февраля. Без типизации интерпретация таких записей дат затруднена.

Но, если определить XML-элемент c указанием типа данных,

<date type=" date ">2004-03-11</date>

то это гарантирует правильную интерпретацию, потому что тип date строго требует использовать формат YYYY-MM-DD.

В xml-схемах имеется возможность не только более точно указывать типы данных (более строгая типизация), но и ограничивать "диапазон" значений XML-элементов или атрибутов. В примере определен элемент age с ограничением на числовые значения —значение не может быть меньше нуля или больше 100.

<xs:element name="age"><xs:simpleType>
< xs:restrictionbase="xs:integer" >
<xs:minInclusive value="0"/>
<xs:maxInclusive value="100"/>
</ xs:restriction >
</xs:simpleType></xs:element>

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

Определение новых типов данных

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

Вместо этого можно определить свой тип данных, и использовать его для определения любого числа элементов.

а) Определение простого типа

< xs:simpleTypename="carType" >
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Lada"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</ xs:simpleType >

Элемент car теперь определяется через введеный тип carType:

<xs:element name="car" type="carType" />

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

<xs:simpleType name="vars">
<xs:restriction base="xs:string">
< xs:patternvalue="[a-z][0-9]" />
</xs:restriction>
</xs:simpleType>

Определение элементов со сложными моделями содержания

Спецификация XML Schema предлагает 44 простых типа данных, которые применяются для построения моделей содержания (простота подразумевает неструктирированность данных). Встроенные типы данных xml-схем можно использовать как базовые для создания специализированных типов, необходимых в конкретных документах. Как и в случае DTD, модель содержания описывает не только элементы, которые могут быть вложены в данный, но и может определять порядок их поялвения в документе, а также возможное количество повторений элемента. Элементы со сложными моделями определяются как сложные типы (complexType).

 

Справочная информация



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-04-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: