Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
xml.docx
Скачиваний:
49
Добавлен:
16.04.2015
Размер:
116 Кб
Скачать
☆

9. Определение новых простых типов в xsd

В схемах XML с помощью встроенных типов можно тремя способами опре­делить новые типы простых элементов. Они вводятся как сужение встроенного или ранее определенного простого типа, список или объединение простых типов.

Простой тип определяется компонентом схемы simpieType, имеющим вид

<xsd:simpleType name="имя типа">Определение типа</xsd:simpleType>

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

<xsd:simpleType name="zip">

<xsd:restriction base="xsd:string">

<xsd:pattern valuer"[0-9]{6}" /> </xsd:restriction>

</xsd:simpleType>

Можно дать другое определение простого типа zip как целого положитель­ного числа, находящегося в диапазоне от 100000 до 999999:

<xsd:simpleType name="zip">

<xsd:restriction base="xsd:positiveInteger">

<xsd:minlnclusive value="100000" />

<xsd:maxlnclusive value="999999" /> </xsd:restriction>

</xsd:simpleType>

Теги <pattern>, <jnaxinciusive> и др., задающие ограничения, называются фасетками:

<maxExciusive> — наибольшее значение, которое уже не входит в опреде­ляемый тип;

<maxinciusive> — наибольшее значение определяемого типа;

<minExciusive> — наименьшее значение, уже не входящее в определяе­мый тип;

<mininciusive> — наименьшее значение определяемого типа;

<totalDigits> — общее количество цифр в определяемом числовом ти­пе — сужении типа decimal;

<fractionDigits> — количество цифр в дробной части числа;

<iength> — длина значений определяемого типа;

<maxLength> — наибольшая длина значений определяемого типа;

<minLength> — наименьшая длина значений определяемого типа;

<enumeration> — одно из перечислимых значений;

<pattern> — регулярное выражение;

<whiteSpace> — применяется при сужении типа string и определяет спо­соб преобразования пробельных символов '\n', '\r', ' \t'. Атрибут value этого тега принимает одно из трех значений:

  • preserve — не убирать пробельные символы;

  • replace — заменить пробельные символы пробелами;

• collapse — после замены пробельных символов пробелами убрать на­ чальные и конечные пробелы, а из нескольких подряд идущих пробе­ лов оставить только один.

В тегах-фасетках можно записывать следующие атрибуты, называемые ба­зисными фасетками (fundamental facets):

ordered — задает упорядоченность определяемого типа, принимает одно из трех значений:

  • false — тип неупорядочен;

  • partial — тип частично упорядочен;

  • total — тип полностью упорядочен;

bounded — задает ограниченность или неограниченность типа значением true ИЛИ false;

cardinality — задает конечность или бесконечность типа значением finite ИЛИ countably infinite;

numeric — показывает, числовой этот тип или нет, значением true или false.

В одном сужении может быть несколько ограничений-фасеток. При этом фасетки <pattern> и <enumeration> задают независимые друг от друга ограничения, их можно мысленно объединить союзом "или". Остальные фасетки задают общие, со­вместно накладываемые ограничения, их можно мысленно объединить союзом «и».

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

<days>21 34 55 46</days>

Список определяется компонентом list, в котором атрибутом itemType ука­зывается тип элементов определяемого списка. Тип элементов списка мож­но определить и в содержимом элемента list. Например, показанный выше элемент документа XML days можно определить в схеме так:

<xsd:element name="days" type="listOfInteger" />

а использованньй при его определении тип iistof integer задать как список не более чем из пяти целых чисел следующим образом:

<xsd:simpleType name="listOfInteger">

<xsd:restriction>

<xsd:simpleType>

<xsd:list itemType="xsd:integer" /> </xsd:simpleType>

<xsd:maxLength valuer"5" />

</xsd:restriction>

</xsd:simpleType>

При определении списка можно применять фасетки <iength>, <minLength>, <maxLength>, <enumeration>, <pattern>.

Простой тип-объединение определяется компонентом union, в котором ат­рибутом memberTypes можно указать имена объединяемых типов. Например:

<xsd:union memberTypes="xsd:string xsd:integer listOfInteger" />

Другой способ — записать в содержимом компонента union определения простых типов, входящих в объединение. Например:

<xsd:attribute name="size">

<xsd:simpleType> <xsd:union>

<xsd:simpleType>

<xsd:restriction base="xsd:positiveInteger">

<xsd:minlnclusive value="8"/>

<xsd:maxlnclusive value="72"/> </xsd:restriction>

</xsd:simpleType>

<xsd:simpleType>

<xsd:restriction base="xsd:NMTOKEN">

<xsd:enumeration value="small"/>

<xsd:enumeration value="medium"/>

<xsd:enumeration value="large"/> </xsd:restriction>

</xsd:simpleType>

</xsd:union> </xsd:simpleType>

</xsd:attribute>

После этого атрибут size можно использовать, например, так:

<font size='large'>Глава K/font> <font size='12'>Простой TeKCT</font>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]