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. Атрибут 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