Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л10-11,5.docx
Скачиваний:
5
Добавлен:
23.08.2019
Размер:
255.47 Кб
Скачать

Xsd Ограничения I Facets

Ограничения на значения

<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minlnclusive value="0'7> <xs:maxlnclusive value-"! 20"/> </xs:restriction> </xs:simpleType> </xs:element>

Ограничение в виде набора

значений

Для ограничения содержимого XML-элемента в виде набора допустимых значений используется ограничение- перечисление (enumeration constraint).

Пример (v.1)

<xs:element name="car"> <xs:simpleType>

<xs: restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Mercedes"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>

Пример (v.2)

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

<xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value-'Golf'/> <xs:enumeration value="BMW"/> </xs: restrict ion > </xs:simpleType>

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

Ограничение последовательности значений

Для ограничения содержимого XML- элемента в виде заданной последовательности допустимых чисел

или букв, применяется шаблон (XSD- элемент pattern).

Допустимым значением является ОДНА буква в НИЖНЕМ РЕГИСТРЕ от а до z:

<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string">

<xs: pattern value="[a-z]'7> </xs:restriction> </xs:simpleType> </xs:element>

Допустимым значаением являются ТРИ буквы в ВЕРХНЕМ РЕГИСТРЕ от а до z:

<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string">

<xs: pattern value="[A-Z][A-Z][A-Z]7> </xs:restriction> </xs:simpleType> </xs:element>

Допустимым значением являются ТРИ буквы в

НИЖНЕМ ИЛИ ВЕРХНЕМ РЕГИСТРЕ от а до z:

<xs:element name="initials"> <xs:simpleType> <xs: restriction base="xs:string">

<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]7> </xs:restriction> </xs:simpleType> </xs:element>

Допустимым значением является ОДНА из следующих букв: t, у или z:

<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string">

<xs: pattern value="[tyz]"/> </xs:restriction> </xs:simpleType> </xs:element>

Допустимым значением является ПЯТЬ цифр, каждая из которых должна находиться в диапазоне от 0 до 9:

<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer">

<xs: pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>

Допустимым значаением является

ноль, один или много вхождений букв от а до z в нижнем регистре:

<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string">

<xs: pattern value="([a-z])*7> </xs:restriction> </xs:simpleType> </xs:element>

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

Например, значение "sToP" будет удовлетворять этом шаблону, но не значения "Stop", "STOP" или "stop":

<xs:element name="letter"> <xs:simpleType> <xs: restriction base="xs:string">

<xs: pattern va Iue="([a-z][A-Z])+''/> </xs:restriction> </xs:simpleType> </xs:element>

Допустимыми значениями являются только «male» или «female»:

<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string">

<xs: pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>

Значением элемента «password» должно быть

ровно 8 символов, являющихся либо буквами от а до z в верхнем или нижнем регистре, либо числами в диапазоне от 0 до 9:

<xs:element name="password"> <xs:simpleType> <xs: rest г i cti о n base="xs: st г i n g" >

<xs:pattern value="[a-zA-Z0-9]{8}'7> </xs: restriction > </xs:simpleType> </xs:element>

Ограничения на пробелы

Для определения политики обработки пробелов и других непечатных символов используется XSD-атрибут

whites расе.

Если ограничение whites расе установлено в

"preserve", XML-процессор НЕ БУДЕТ удалять служебные символы:

<xs:element name="address"> <xs:simpleType> <xs: restriction base="xs:string">

<xs: wh iteS pace val u e="prese rve' '/> </xs:restriction> </xs:simpleType> </xs:element>

Если ограничение whites расе установлено в

"replace", XML-процессор БУДЕТ ЗАМЕНЯТЬ все служебные сим волы (пере вод строки, символы табуляции, символы возврата каретки) на пробелы:

<xs:element name="address"> <xs:simpleType> <xs: restriction base="xs:string">

<xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>

Если ограничение whiteSpace установлено в "collapse", XML-процесс op БУДЕТ УДАЛЯТЬ все служебные символы (переводы строк, символы табуляции, символы возврата каретки будут заменены пробелами, пробелы в начале и конце значения будут удалены, множественные пробелы, идущие подряд будут уменьшены до одного пробела):

<xs:element name="address"> <xs:simpleType> <xs: restriction base="xs:string"> <xs: whiteSpace value="collapse7> </xs:restriction> </xs:simpleType> </xs:element>

Ограничения на длину

Для декларации длины значения элемента используются ограничения length, maxLength и minLength.

Значение элемента должно иметь длину ровно в восемь символов:

<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string">

<xs:length value="8'7> </xs:restriction> </xs:simpleType> </xs:element>

Значение элемента должно иметь длину

минимум в пять символов, максимум в восемь символов:

<xs:element name="password"> <xs:simpleType> <xs: restriction base="xs:string">

<xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>

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

Ограничение

Описание

enumeration

Определяет перечень допустимых значения.

fraction Dig its

Определяет максимально допустимое число символов после запятой. Должно быть неотрицательным.

maxExclusive minExclusive

Определяет верхнюю (нижнюю) границу числового значение. Значение less должно быть строго меньше (больше) данной границы.

maxlnclusive minlnclusive

Определяет верхнюю (нижнюю) границу числового значение. Значение less должно быть меньше (больше) данной или равно данной границе.

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

(часть 2)

Ограничение

Описание

length

Определяет точное число символов в значении элемента. Должно быть неотрицательным.

maxLength minLength

Определяет максимальное (минимальное) допустимое число символов в значении элемента. Должно быть неотрицательным.

pattern

Определяет точную последовательность допустимых символов.

total Dig its

Определяет точное разрешенное число цифр. Должно быть неотрицательным.

whiteSpace

Определяет политику обработки непечатных символов (переводов строки, символов табуляции, пробелов, и символов возврата каретки).

Сложные (составные) элементы XSD

(Complex Elements)

Сложными являются XML-элементы, которые

содержат другие элементы и/или атрибуты.

Существует четыре вида сложных элементов:

  • пустые элементы;

  • элементы, которые содержат только другие элементы;

  • элементы, которые содержат только текст;

  • элементы, которые содержат и текст и другие элементы.

Примеры сложных элементов (1 -2)

  • Сложный XML-элемент, "product", который является пустым:

<product pid="1345"/>

  • Сложный XML-элемент, "employee", который содержит только другие элементы:

<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

Примеры сложных элементов (3-4)

  • Сложный XML-элемент, "food", который

содержит только текст:

<food type="dessert">lce cream</food>

  • Сложный XML-элемент, "description",

который содержит и текст, и другие элементы:

<description> It happened on <date lang="norwegian">03.03.99</date> .... </description>

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

Пример XML-элемента, "employee", который содержит только другие элементы:

<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>

Сложный элемент, как и простой, может быть объявлен в XML Schema двумя различными способами.

Элемент "employee" может быть объявлен напрямую посредством перечисления входящих в него элементов:

<xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string'7> <xs:element name="lastname" type="xs:string'7> </xs:sequence> </xs: со m p I exTy pe > </xs:element>

Комментарии

  • Только элемент "employee" может использовать созданный сложный тип.

  • Дочерние элементы "firstname" и "lastname" обърнуты индикатором <sequence>. Это означает, что дочерние элементы должны включаться в родительски в том же самом порядке, в котором они объявлены.

Элемент "employee" может содержать атрибут type, который ссылается на имя используемого сложного типа:

<xs:element name-'employee" type="persoriirifo"/>

<xs:complexType name="persoriirifo"> <xs:sequence> <xs:elemerit riame="firstriame" type="xs:string"/> <xs:elemerit riame="lastriame" type="xs:string"/> </xs:sequerice> </xs:complexType>

Комментарии

Множество элементов может ссылаться на один и тот же слодный тип, например:

<xs:element name-'employee" type="personinfo"/> <xs:element name-'student"type="personinfo"/> <xs:element name="teacher" type="personinfo"/>

<xs:complexType name="personinfo"> <xs:sequence> <xs:element name-'firstname"type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>

Создание сложного элемента на основе

существующего сложного элемента

<xs:element name-'employee" type="fullpersoninfo7>

<xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string7> <xs:element name="lastname" type="xs:string7> </xs:sequence> </xs:complexType>

<xs:complexType name-'fullpersoninfo'^ <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name-'address" type="xs:string7> <xs:element name="city" type="xs:string7> <xs:element name-'country" type="xs:string7> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>

Сложные пустые элементы

Пустой XML-элемент: <product prodid="1345" />

Для создания типа без содержимого, требуется создать тип, который определяет допустимые элементы, но не определить ни одного допустимого элемента:

<xs:element name="product"> <xs:complexType> <xs: attribute name-'prodicT type="xs: positive I nteger"/> </xs:complexType>

</xs:element>

Сложный тип, содержащий только элементы

Пример-XML-элемент, "person", который содержит только другие элементы:

<person> <firstname>John</firstname> <lastname>Smith</lastname> </person>

Фрагмент XSD для элемента "person":

<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name-'firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

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