2.2.1 Накладываемые ограничения

Элемент comment в PurchaseOrderType является необязательным, поскольку в нем значение атрибута minOccurs равно 0. Элемент всегда обязан присутствовать, когда значение minOccurs равно 1 или более. Максимальное число раз, которое элемент может появляться задается при эго объявлении значением атрибута maxOccurs. Это значение может быть положительным целым числом, например, 41, или термином unbounded, который указывает, что количество вхождений не задано. По умолчанию значение для атрибутов minOccurs и maxOccurs принимается равным 1. Таким образом, когда элемент comment объявлен без атрибута maxOccurs, элемент не может присутствовать более одного раза. Необходимо помнить, что если вы задаете только значение атрибута minOccurs, то оно должно быть меньше или равно значению по умолчанию maxOccurs, т.е. 0 или 1. Точно так же, если вы задаете только значение атрибута maxOccurs, то оно должно быть больше или равно значению по умолчанию minOccurs, т.е. больше или равно 1. Если опущены оба атрибута, то элемент должен появляться обязательно точно один раз.

Атрибуты могут появляться один раз, или вообще не появляться, но ни как иначе, поскольку синтаксис определения появления атрибутов отличен от соответствующего синтаксиса для элементов. В некоторых случаях атрибуты могут быть объявлены с атрибутом use, который показывает, что атрибут является required (требуемым) (см. например, объявление атрибута partNum po.xsd), optional (необязательным) или даже prohibited (запрещенным).

Значения по умолчанию и для атрибутов и для элементов объявляются с использованием атрибута default, хотя данный атрибут оказывает несколько различное последствие в каждом случае. Когда атрибут объявлен со значением по умолчанию, то в случае, если он представлен явно, значение атрибута принимается равным указанному. Если атрибут не появляется в документе примера, обработчик схемы обеспечивает значение атрибута равным значению, заданному в атрибуте  default. Отметим, что значение атрибута по умолчанию имеет смысл только в том случае, если сами атрибуты являются не обязательными, т.е. атрибут use задан со значением optional.

Элементы, заданные по умолчанию, обработчик схемы обрабатываем несколько иначе. Когда элемент объявлен со значением по умолчанию, но значение элемента явно представлено в документе примера, то принимается это явно заданное значение. Если элемент появляется без какого либо содержания, обработчик схемы снабжает элемент значением, которое эквивалентно значению, определенному атрибутом default. Однако, если элемент вообще не представлен в документе, процессор схемы не подставляет его. Таким образом,  отличия между элементами и атрибутами, заданными по умолчанию, могут быть определены как «значения атрибутов по умолчанию применяются, когда атрибуты отсутствуют, а значения элементов по умолчанию применяются, когда элементы пустые».

Атрибут fixed используется как в объявлениях атрибутов, так и элементов, чтобы гарантировать для них задание строго определенных значений. Например, po.xsd содержит объявление для атрибута country, который объявлен как fixed со значением US. Это объявление означает, что появление атрибута country в документе необязательно (значение по умолчанию use является optional), однако, если атрибут появляется, его значение должно быть US, а если атрибут не представлен, то процессор схемы обеспечит атрибут country значением US. Отметим, что понятия фиксированных значений и значений по умолчанию являются взаимоисключающими. Поэтому неправильно объявлять атрибуты одновременно и как fixed, и как default.

Значения атрибутов, используемых в элементе, и возможные ограничения при объявлении атрибутов представлены в Таблице 1.

Таблица 1. Возможные ограничения для элементов и атрибутов

Элементы
(
minOccurs, maxOccurs) fixed, default 

Атрибуты
use, fixed, default

Примечания

(1, 1) -, -

required, -, -

элемент/атрибут должен появляться один раз, он может иметь любое значение

(1, 1) 37, -

required, 37, -

элемент/атрибут должен появляться один раз, его значение должно быть 37

(2, unbounded) 37, -

n/a

элемент должен появляться два или более раза, его значение должно быть 37; значения minOccurs и maxOccurs могут быть положительными целыми, а значение maxOccurs также может быть "unbounded"  

(0, 1) -, -

optional, -, -

элемент/атрибут может появляться один раз, он может иметь любое значение

(0, 1) 37, -

optional, 37, -

элемент/атрибут может появляться один раз, если он не появляется, его значение должно быть 37

(0, 1) -, 37

optional, -, 37

элемент/атрибут может появляться один раз; если он не появляется, его значение - 37,   иначе его значение равно заданному

(0, 2) -, 37

n/a

Элемент может появляться один раз, два раза или не появляться вообще; если элемент не появляется, он не формируется; если элемент появляется и он пустой, его значение равно 37; иначе его значение равно заданному; вообще, значения minOccurs и maxOccurs могут быть положительными целыми, и значение maxOccurs также может быть "unbounded"

(0, 0) -, -

prohibited, -, -

элементы/атрибуты не должны появляться

Отметим, что ни minOccurs, maxOccurs, ни use не могут появляться в объявлениях глобальных элементов и атрибутов.

 

Используются технологии uCoz