Что я хочу сделать, это создать элемент последовательности в XML-схеме так, чтобы содержимое было в порядке, но не все присутствовали. Например, схема будет выглядеть примерно так:
<xs:element name="rods" maxOccurs="1" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="green" type="xs:positiveInteger" />
<xs:element name="white" type="xs:positiveInteger" />
<xs:element name="blue" type="xs:positiveInteger" />
<xs:element name="yellow" type="xs:positiveInteger" />
<xs:element name="red" type="xs:positiveInteger" />
<xs:element name="tan" type="xs:positiveInteger" />
<xs:element name="gray" type="xs:positiveInteger" />
<xs:element name="black" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
</xs:element>
и разрешил бы XML следующим образом:
<rods>
<green>142</green>
<white>34</white>
<gray>65</gray>
</rods>
MSDN может сказать об этом:
В следующем примере показан элемент (zooAnimals), который может содержать ноль или более следующих элементов, elephant, bear, giraffe, в элементе sequence.
<xs:element name="zooAnimals">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="elephant"/>
<xs:element name="bear"/>
<xs:element name="giraffe"/>
</xs:sequence>
</xs:complexType>
</xs:element>
W3Schools предлагает то же самое.
Однако и Visual Studio, и онлайн-сервису валидации не нравится то, что предлагается.
Вот что у меня есть на данный момент:
<xs:element name="rods" maxOccurs="1" minOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element name="green" type="xs:positiveInteger" />
<xs:element name="white" type="xs:positiveInteger" />
<xs:element name="blue" type="xs:positiveInteger" />
<xs:element name="yellow" type="xs:positiveInteger" />
<xs:element name="red" type="xs:positiveInteger" />
<xs:element name="tan" type="xs:positiveInteger" />
<xs:element name="gray" type="xs:positiveInteger" />
<xs:element name="black" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
</xs:element>
А вот и XML:
<rods>
<green>142</green>
<white>34</white>
<gray>65</gray>
</rods>
Visual Studio 2005 утверждает, что "серый" недопустим, "синий" ожидается, поэтому он явно хочет, чтобы все дети
Спасибо
Эрик