
- •Лекция 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.4. Элементlist
Элемент listопределяет элемент простого типа как список значений заданного типа и имеет следующий формат:
<префикс:list
id = ID
itemType = QName
>
(annotation?, (simpleType?))
</префикс:list>
Необязательный атрибут idопределяет уникальный идентификатор элемента, а атрибутitemType определяет имя встроенного типа данных или элемента данных простого типа. Если атрибутitemTypeопределяет имя встроенного типа данных, то он является обязательным, иначе он не должен задаваться.
Примеры задания элемента list:
1. <xs:simpleType name="valueList">
<xs:list itemType="xs:string"/>
</xs:simpleType>
В этом примере задается простой тип valueList, который определяется как список, содержащий данные типа string(строки).
2. <xs:simpleType name="markList">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:positiveInteger"/>
</xs:simpleType>
<xs:length value="4"/>
<xs:minInclusive value="2"/>
<xs:maxInclusive value="5"/>
</xs:restriction>
</xs:simpleType>
В этом примере задается простой тип markList(список оценок на экзаменах в семестре). Количество экзаменов в семестре равно 4, а оценки должны иметь значения в диапазоне от 2 до 5.
Так, список в значении атрибута или элемента
4 4 5 3
удовлетворяет заданным ограничениям, а список
3 3 1 3
не удовлетворяет, поскольку содержит недопустимое значение – 1.
4.2.1.5. Элементunion
Элемент unionопределяет элемент простого типа как объединение значений заданных данных типовsimpleTypeи имеет следующий формат:
<префикс:union
id = ID
memberTypes = список QName
>
(annotation?, (simpleType*))
</префикс:union>
Необязательные атрибуты idиmemberTypesопределяют соответственно уникальный идентификатор элемента и список данных, содержащих встроенные типы или ранее определенные простые типы. Если атрибутmemberTypesне задан, типы данных элементов объединения задаются как содержимое элемента.
Значение атрибута или элемента, определенное как данное типа union, может иметь значение одно из типов, определенных в элементеunion.
Примеры использования элемента union:
1. <xs:simpleType name="weekDayIndex">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="7"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="weekDayName">
<xs:restriction base="xs:string">
<xs:enumeration value="Понедельник"/>
<xs:enumeration value="Вторник"/>
<xs:enumeration value="Среда"/>
<xs:enumeration value="Четверг"/>
<xs:enumeration value="Пятница"/>
<xs:enumeration value="Суббота"/>
<xs:enumeration value="Воскресенье"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
В этом примере задается объединение из двух значений простого типа: индексов дней недели и weekDayNameнаименований дней недели. В документе XML для атрибута или элемента, тип значения которого определен в схеме какweekDayValue, можно задать, например, либо значение"3", либо значение="Среда".
2. <xs:simpleType name="durationValue">
<xs:union memberTypes="xs:unsignedLong xs:duration"/>
</xs:simpleType>
В этом примере задается простой тип durationValueкак объединение из двух значений встроенных типов: длинного числа без знака (unsignedLong) и продолжительности (duration), т.е. промежуток времени между двумя событиями может быть задана как в секундах, так и как данное типаduration. В документе XML для атрибута или элемента, тип значения которого определен в схеме какdurationValue, можно задать, например, для промежутка в сутки либо значение"8640", либо значение"T24H00M00S".
Файл: