Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 460

Ильдар Шаукатович Хабибуллин

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

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

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

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

<xsd:simpleType name="nw^ типа">Определение TMna</xsd:simpleType>

Сужение

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

<xsd:simpleType name="zip">

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

<xsd:pattern value="[0-9]{6}" />

</xsd:restriction>

</xsd:simpleType>

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

<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> — регулярное выражение [8];

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

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

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

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

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

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

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

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

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