Сужение

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

<xsd:simpleType name="zip”>

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

<xsd:patternvalue="[0-9] {6}” />

</xsd:restriction>

</xsd:simpleType>

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

<xsd: simpleType name="zip">

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

<xsd:minInclusive value="100000"/>

<xsd:maxInclusive value=”999999"/>

</xsd:restriction>

</xsd:simpleType>

Теги <pattern>, <maxInclusive> и другие теги, задающие ограничения, называются фасетками (facets). Вот их список:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Список

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

<days>21 34 55 4 6</<days>

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

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

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

<xsd: simpleType name="listOfInteger">

<xsd:restriction>

<xsd:simpleType>

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

</xsd: simpleType>

<xsd:maxLength value="5" />

</xsd:restriction>

</xsd:simpleType>

При определении списка можно применять фасетки <length>, <minLength>, <maxLength>, <enumeration>, <pattern>. В приведенном выше примере список — тело элемента <days> — не может содержать более пяти чисел.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: