
- •Лекция 4-04
- •4.2.7. Объявление атрибутов в схеме xml
- •4.2.7.1. Формат элементаattribute
- •4.2.7.2. Встроенные объявления атрибутов
- •4.2.8. Объявление элементов в схемеXml
- •4.2.8.1. Формат объявления элементаelement
- •4.2.8.2. Элементыunique,selectorиfield
- •4.2.8.3. Элементыkeyиkeyref
- •4.2.9. Определение комплексного типа в схемеXml
- •4.2.9.1. Формат определения элементаcomplexType
- •4.2.9.2. Элементы sequence, any, choice, all и group
- •4.2.9.3. ЭлементыattributeGroupиanyAttribute
- •4.2.9.4. ЭлементsimpleContent
- •4.2.9.5. ЭлементcomplexContent
- •4.2.10. Объявление нотации в схемеXml
- •4.2.11. Структура схемы
- •4.2.11.1. Элементschema
- •4.2.11.2. Включение внешних фрагментов в схему
- •4.2.11.3. Включение схемы в документXml
4.2.8. Объявление элементов в схемеXml
Объявление элемента выполняет
локальную проверку значений элемента с использованием определения типа;
задание значения по умолчанию или фиксированного значения для элемента;
обеспечение уникальности и ограничений на отношения на значения связанных элементов и атрибутов;
управление подстановками элементов через группы подстановок элемента.
4.2.8.1. Формат объявления элементаelement
Объявление элемента elementимеет следующий формат:
<префикс:element
name = NCName
ref = QName
type = QName
id = ID
default = string
form = (qualified | unqualified)
fixed = string
abstract = boolean : false
block = (#all| List(extension | restriction | substitution))
final = (#all | List(extension | restriction))
maxOccurs = (nonNegativeInteger | unbounded) : 1
minOccurs = nonNegativeInteger : 1
nillable = boolean : false
substitutionGroup = QName
>
(annotation?, ((simpleType | complexType)?, (unique | key | keyref)*))
</префикс:element>
Атрибуты name,ref,type,id,default,formиfixedв элементеelementимеют тот же смысл, что и в элементеattribute (атрибут nameявляется обязательным только в том случае, если родительским элементом данного элемента является элементschemaили элементredefine). Остальные атрибуты задают следующие свойства:
abstract– указывает, что элемент просто задает другие элементы, которые находятся в его группе подстановки (substitutionGroup);
block– запрещает замену этого элемента элементом его группы подстановки (значениеsubstitution) или запрещает замену этого типа элемента производным сужающим типом (значениеrestriction) или расширенным типом (значениеextension), если же задано значение#all, то блокируются все приведенные выше замены;
final– действует аналогично атрибутуblock, но блокирует только замены типаrestrictionи/илиextension;
maxOccurs– задает максимальное число появлений элемента в документе (элемент может также появляться в документе сколько угодно раз – значениеunbounded), по умолчанию элемент может появиться в документе только один раз;
minOccurs– задает минимальное число появлений элемента (по умолчанию значение этого атрибута равно1);
nillableуказывает, что для элемента недоступно никакое значение, когда для него задается атрибутnil;
substitutionGroup– указывает, что данный элемент может замещаться элементом, заданным в группе подстановки.
Примеры объявления элементов:
1. <xs:element name="birthDate" type="xs:date"/>
Объявление элемента birthDate(дата рождения) с типом данныхdate.
2. <xs:element name="author" minOccurs="1" maxOccurs="5">
<xs:simpleType>
<xs:restriction>
<xs:pattern
value="[A-Я][а-я]{1,18} [A-Я]\. [A-Я]\.">
</xs:restriction>
</xs:simpleType>
</xs:element>
Объявление элемента author(автор). Минимальное количество элементов в документеXML– 1, максимальное – 5. Значением элемента является шаблон для фамилии и инициалов автора.
4.2.8.2. Элементыunique,selectorиfield
Дочерний элемент element–uniqueопределяет, что значение элемента или атрибута должно быть уникальным в области определения данного элемента или атрибута. Элемент имеет следующий формат:
<префикс:unique
id = ID
name = NCName
>
(annotation?, (selector, field+))
</префикс:unique>
Необязательный атрибут idзадает уникальный идентификатор элемента, а обязательный атрибутname – имя элемента.
Дочерний элемент selectorэлементаuniqueопределяет выражениеXPath, которое задает набор элементов для ограничений идентификации (элементыunique,keyиkeyref) и имеет следующий формат:
<префикс:selector
id = ID
xpath =подмножество-выражений-XPath
>
(annotation?)
</префикс:selector>
Необязательный атрибут idзадает уникальный идентификатор элемента, а обязательный атрибутxpath определяет выражениеXPathотносительно объявленного элемента, идентифицирующее элементы, к которым применяются ограничения идентификации.
Дочерний элемент fieldэлементаuniqueопределяет выражениеXPath, которое задает значение, используемое для определения ограничений идентификации, и имеет следующий формат:
<префикс:field
id = ID
xpath =подмножество-выражений-XPath
>
(annotation?)
</префикс:field>
Необязательный атрибут idзадает уникальный идентификатор элемента, а обязательный атрибутxpath определяет единственный элемент или атрибут, содержимое или значение которого используется в качестве ограничения.
Пример использования элементов unique, selector и field:
<xs:unique name="unique-index">
<xs:selector xpath=".//header"/>
<xs:field xpath="index"/>
</xs:unique>
Значение элемента index– дочернего элементаheaderдолжно быть уникальным.