Элементы sequence, any, choice, all и group

Элемент sequence определяет, что дочерние элементы данного элемента должны появляться в заданной последовательности и имеет следующий формат:

<префикс:sequence

id = ID

maxOccurs = (nonNegativeInteger | unbounded) : 1

minOccurs = nonNegativeInteger : 1

>

(annotation?, (element | group | choice | sequence | any)*)

</префикс:sequence>

Необязательный атрибут id задает уникальный идентификатор элемента, а необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений данной последовательности в родительский элемент.

 

Пример использования элемента sequence:

<xs:element name="personinfo">

<xs:complexType>

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

<xs:sequence minOccurs="0" maxOccurs="unbounded">

<xs:element name="child" type="xs:string"/>

</xs:sequence>

</xs:sequence>

</xs:complexType>

</xs:element>

В примере задан элемент с именем personinfo (данные о сотруднике). Этот элемент содержит дочерние элементы firstname и lastname, а также последовательность элементов child (ребенок) – эта последовательность может отсутствовать или содержать неограниченное количество элементов child.

 

Как видно, из объявления элемента sequence, в содержимом этого элемента может быть задан дочерний элемент any. Этот элемент позволяет расширить документ XML элементами, которые не определены в схеме, и имеет следующий формат:

<префикс:any

id = ID

maxOccurs = (nonNegativeInteger | unbounded) : 1

minOccurs = nonNegativeInteger : 1

namespace = ((##any | ##other) | List (anyURI |

(##targetNamespace | ##local))) : ##any

processContents = (strict | lax | skip) : strict

>

(annotation?)

</префикс:any>

Необязательный атрибут id задает уникальный идентификатор элемента, а необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений элемента any в родительский элемент. Необязательный атрибут namespace определяет пространства имен, содержащих элементы, которые могут быть использованы в родительском элементе, и может иметь одно из следующих значений:

· ##any – допустимы элементы из любого пространства имен;

· ##other – могут присутствовать элементы из любого пространства имен, отличного от пространства имен, заданного для родительского элемента;

· ##local – элементы должны задаваться не из пространства имен;

· ##target Namespace – могут присутствовать элементы из пространства имен, заданного для родительского элемента;

· List (anyURI | (##targetNamespace | ##local))) – могут присутствовать элементы из заданного списка.

Необязательный атрибут processContents определяет, как процессор XML должен организовать обработку элементов, определенных данным элементом any и может иметь одно из следующих значений:

· strict – процессор XML должен получить схему необходимых пространств имен и проверить действительность элементов;

· lax – аналогично strict, но если схема не может быть получена, сообщение об ошибке не генерируется;

· skip – процессор XML пропускает проверку действительности элементов.

 

Пример использования элемента any:

<xs:element name="person">

<xs:complexType>

<xs:sequence>

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

<xs:any minOccurs="0"/>

</xs:sequence>

</xs:complexType>

</xs:element>

С помощью использования элемента any можно расширить содержимое элемента person (после элемента lastname) любым другим элементом.

 

Элемент choice разрешает задавать в родительском элементе только один из присутствующих в списке элементов и имеет следующий формат:

<префикс:choice

id = ID

maxOccurs = (nonNegativeInteger | unbounded) : 1

minOccurs = nonNegativeInteger : 1

>

(annotation?, (element | group | choice | sequence | any)*)

</префикс:choice>

Необязательный атрибут id задает уникальный идентификатор элемента, а необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений выбранного элемента в родительский элемент.

 

Пример использования элемента choice:

<xs:element name="employee">

</xs:element>

<xs:element name="freelance">

</xs:element>

<xs:element name="person">

<xs:complexType>

<xs:choice>

<xs:element ref="employee"/>

<xs:element ref="freelance"/>

</xs:choice>

</xs:complexType>

</xs:element>

Элемент person должен содержать один из описанных ранее элементов: employee (постоянный сотрудник) или freelance (контрактник).

 

Элемент all определяет, что элементы, содержащийся в нем, могут появляться в родительском элементе в любом порядке, и каждый элемент может появляться 0 или 1 раз. Элемент имеет следующий формат:

<префикс:all

id = ID

maxOccurs = 1 : 1

minOccurs = (0 | 1) : 1

>

(annotation?, element*)

</префикс:all>

Необязательный атрибут id задает уникальный идентификатор элемента. Необязательный атрибут maxOccurs должен иметь значение 1, а необязательный атрибут minOccurs задает минимальное значение для количества включений выбранного элемента в родительский элемент (0 или 1).

 

Пример использования элемента all:

<xs:element name="person">

<xs:complexType>

<xs:all minOccurs="0">

<xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/>

</xs:all>

</xs:complexType>

</xs:element>

Элементы firstname и lastname могут появляться в элементе в элементе person в любом порядке и один или оба элемента могут отсутствовать.

 

Элемент group используется для задания группы элементов в определении комплексного типа и имеет следующий формат:

<префикс:group

id = ID

name = NCName

ref = QName

maxOccurs = nonNegativeInteger | unbounded : 1

minOccurs = nonNegativeInteger : 1

>

(annotation?, (all | choice | sequence))

</префикс:group>

Атрибут name задает имя элемента. Он является обязательным только в том случае, если родительским элементом данного элемента является элемент schema или элемент redefine. Атрибут ref задает ссылку на имя другой группы (атрибуты name и ref являются взаимоисключающими). Необязательные атрибуты maxOccurs и minOccurs задают максимальное и минимальное значение для количества включений элементов группы в родительский элемент.

 

Пример использования элемента group:

<xs:group name="custGroup">

<xs:sequence>

<xs:element name="customer" type="xs:string"/>

<xs:element name="orderDetails" type="xs:string"/>

</xs:sequence>

</xs:group>

<xs:element name="order" type="orderType"/>

<xs:complexType name="orderType">

<xs:group ref="custGroup"/>

<xs:attribute name="status" type="xs:string"/>

</xs:complexType>

В этом примере определена группа custGroup, состоящая из двух элементов: customer (покупатель) и orderDetails (детали заказа), а затем эта группа использована (с помощью ссылки) в определении комплексного типа orderType.








Дата добавления: 2015-03-20; просмотров: 1172;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.018 сек.