
21
</xs:element>
</xs:schema>
В строке <xs:element name=”NOTES” minOccurs=”0” maxOccurs=”2”>
определяются ограничения вхождений для дочернего элемента <NOTES>
корневого элемента <NOTE>. Проверяемый элемент должен содержать от
нуля (minOccurs=”0”) до двух (maxOccurs=”2”) дочерних элементов
<NOTES>. Так как в качестве минимального значения указан 0, дочерний
элемент <NOTES> необязателен.
В строках <xs:sequence>
<xs:element name=”NUMBER”/>
<xs:element name=”MESSAGE” type=”xs:string”
maxOccurs=”unbounded”/>
указано , что как минимум один элемент <MESSAGE> должен следовать
после элемента <NUMBER> в последовательности , содержащейся в каждом
родительском элементе <NOTES>. Это задается с помощью элемента -
контейнера <xs:sequence> (об этом мы поговорим в следующем разделе).
Однако значение maxOccurs=”unbounded” указывает на то , что количество
элементов <MESSAGE> неограниченно .
3.5.3. Порядок следования элементов
Порядок следования дочерних элементов в родительском элементе
определяется с помощью элементов:
<xs:all>
<xs:choice>
<xs:sequence>
Когда предполагается, что в экземпляр документа должны попадать все
элементы группы , но в произвольном порядке используется элемент <xs:all>.
<xs:element name="PERSON">
<xs:complexType>
<xs:all>
<xs:element name="FIRSNAME" type="xs:string"/>
<xs:element name="LASTNAME" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Следует учитывать ряд ограничений на использование элемента
<xs:all>, для любого элемента группы необходимо minOccurs=”0” или “1”, а
maxOccurs=”1”.
Когда предполагается, что в экземпляр документа должен попадать
только один элемент группы , используется элемент <xs:choice>.