@ бугор,
К сожалению, вы не поняли первоначальный вопрос. Размещение minOccurs = "1" в выборе выполняется автоматически, когда ВСЕ элементы с minOccurs = "0" содержатся в качестве параметров.
Таким образом, вы не учли «по крайней мере один», требуемый оригинальным постером, потому что ни один элемент не удовлетворяет 1 появлению двух совершенно дополнительных элементов.
Пока что я не могу найти решение этой проблемы, поскольку minOccur / maxOccur относятся к группе, в которой они определены, и НЕ относятся к общему количеству узлов. Также вы не можете использовать элемент choice для определения одного и того же именованного элемента более одного раза, или он становится «неоднозначным». Я видел некоторые примеры использования ссылок вместо элементов определенного типа, но я считаю, что это не работает синтаксический анализатор Microsoft XSD.
<xs:choice minOccurs="1" maxOccurs="1">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="Elem1" minOccurs="1" maxOccurs="1" />
<xs:element name="Elem2" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:sequence >
<xs:element name="Elem2" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:choice>
Здесь вы можете видеть, что либо у вас есть первая последовательность (которая ДОЛЖНА иметь Elem1, но может иметь Elem2 по выбору), либо у вас есть вторая последовательность (которая ДОЛЖНА иметь Elem2).
Следовательно, теперь у вас есть «один или несколько» из этих 2 элементов. Конечно, это становится экспоненциально сложнее, чем больше у вас вариантов, так как вам нужно предоставить дополнительные варианты для всех возможных комбинаций.