
- •Лекция 4-03
- •Тема 4.2. Схемы xml
- •Тема 4.2. Схемы xml
- •4.2.1. Формирование описания документа с помощью схем
- •4.2.2. Задание данных в схемеXml
- •4.2.2.1. Типы данных в схеме xml
- •4.2.2.2. Компоненты типов данных в схеме xml
- •4.2.2.3. Свойства типов данных в схеме xml
- •4.2.3. Встроенные типы данных схемыXml
- •4.2.3.1.4. Представление шестнадцатеричных данных
- •4.2.3.1.5. Представление продолжительности, даты и времени
- •2002-12-30T13:20:00
- •4.2.3.1.6. ПредставлениеUri
- •4.2.3.2.2. Производные числовые типы данных
- •4.2.4. Компоненты схемыXml
- •4.2.5. Объявление аннотации в схемеXml
- •4.2.5.1. Элементannotation
- •4.2.5.2. Элементdocumentation
- •4.2.1.3. Элементappinfo
- •4.2.6. Определение простого типа в схемеXml
- •4.2.6.1. ЭлементsimpleType
- •4.2.6.2. Элементы ограничивающих свойств
- •4.2.6.2.1. Элемент length
- •4.2.6.2.2. Элементы minLength и maxLength
- •4.2.6.2.3. Элементpattern
- •4.2.6.2.4. Элементenumeration
- •4.2.6.2.5. ЭлементwhiteSpace
- •4.2.6.2.6. ЭлементыminExclusive иmaxExclusive
- •4.2.6.2.7. ЭлементыminInclusive иmaxInclusive
- •4.2.6.2.8. ЭлементыtotalDigitsиfractionDigits
- •4.2.6.3. Элементrestriction
- •4.2.6.4. Элементlist
- •4 4 5 3
- •3 3 1 3
- •4.2.1.5. Элементunion
4.2.6.2.8. ЭлементыtotalDigitsиfractionDigits
Элементы totalDigitsиfractionDigitsзадают соответственно общее количество символов в числовом данном, включая десятичную точку, и количество цифр в числовом данном после десятичной точки. Эти элементы имеют следующий формат:
<префикс:totalDigits
id = ID
value = positiveInteger
fixed = boolean : false
>
(annotation?)
</префикс:totalDigits>
<префикс:fractionDigits
id = ID
value = nonNegativeInteger
fixed = boolean : false
>
(annotation?)
</префикс:fractionDigits>
Необязательный атрибут idзадает уникальный идентификатор элемента. Атрибутvalueзадает положительное число – общее количество символов в числовом данном, включая десятичную точку (вtotalDigits) или неотрицательное число – количество цифр в числовом данном после десятичной точки (воfractionDigits). Атрибутfixedфиксирует обработку значенияvalueв данном. Если значение атрибутаfixedравноtrue, то типы данных, для которых текущий тип является базовым, не могут иметь значение, отличное от значения, заданной в атрибутеvalue. По умолчанию или, если значение атрибутаfixedравноfalse, типы данных могут иметь другое значение.
Пример задания элементов totalDigits и fractionDigits:
<xs:totalDigits value="5"/>
<xs:fractionDigits value="1"/>
Значения данного должны иметь 4 цифры до десятичной точки и одну цифру после десятичной точки.
4.2.6.3. Элементrestriction
Элемент restriction задает ограничения на определяемый простой тип и имеет для элементаsimpleType следующий формат:
<префикс:restriction
base = QName
id = ID
>
(annotation?, (simpleType?, (minExclusive | minInclusive |
maxExclusive | maxInclusive | totalDigits | fractionDigits |
length | minLength | maxLength |
enumeration | whiteSpace | pattern)*))
</префикс:restriction>
где необязательный атрибут idопределяет уникальный идентификатор элемента, а атрибутbaseопределяет имя встроенного типа данных, либо имя элемента типаsimpleType, определенного ранее в этой или другой схеме.
Элемент restrictionможет быть также задан как дочерний элемент элементовsimpleContentиcomplexContent, но с другим содержимым, которое будет описано при рассмотрении указанных элементов.
Примеры задания элемента restriction:
1. <xs:simpleType name="latinString">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]([a-z])+"/>
<xs:maxLength value="10"/>
</xs:restriction>
</xs:simpleType>
В этом примере задаются ограничения для простого типа latinString, на основе примитивного типаstring: первым символом значения должна быть заглавная латинская буква, за которой следует одна или несколько латинских строчных букв и, кроме того, максимальная длина имени не должна превышать 10 символов.
2. <xs:simpleType>
<xs:restriction base="latinString">
<xs:minLength value="5"/>
</xs:restriction>
</xs:simpleType>
В этом примере задаются ограничения для простого типа на основе простого типа latinStringв предыдущем пункте примера. Дополнительно к ограничениям для типаlatinStringвведено ограничение на минимальную длину строки.