Ответ 1
Что происходит, когда у выбора есть minOccurs > 1? Означает ли это, что элемент "Пуск" может произойти 3 раза?
Да <Start>
может появиться 3 или более раз! Имея minOccurs выбора более чем 1, позволяет несколько элементов появляться более одного раза, или несколько элементов появляются несколько раз.
Подробное объяснение:
В приведенном выше примере вы применили minOccurs как 3 для <Choice>
и maxOccurs как неограниченный! Это означает, что.. Детские элементы, перечисленные в разделе <Choice>
, любые три из них или любой тэг, повторяемый три раза, должны появляться под их родителями! Примеры XML приведены ниже:
Предположим, что этот набор тегов появляется под node, называемым <parent>
, а затем:
<parent>
<Start>Start1</Start>
<Center>Center1</Center>
<End>End1</End>
</parent>
-------- ИЛИ --------
<parent>
<Center>Start1</Center>
<Center>Center1</Center>
<Feature>End1</Feature>
</parent>
-------- ИЛИ --------
<parent>
<Start>Start1</Start>
<Start>Start1</Start>
<Start>Start1</Start>
<Start>Start1</Start>
</parent>
все приведенные выше комбинации действительны!
НО вы также определили minOccurs = "0" для "PI" и "Feature".
Это добавление заставляет Validator передавать родительский элемент без дочерних элементов., т.е.
<parent>
</parent>
Если вы удалите minOccurs из этих двух элементов, то проверка заставляет вас включать минимум 3 тега для включения в родительский.
Также наличие maxOccurs="unbounded"
для Feature
Элемента бесполезно! Поведение не изменится, если вы его добавите или снимите.