私がやりたいことは、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 はこれについて次のように述べています。
次の例は、sequence 要素に象、熊、キリンの要素を 0 個以上持つことができる要素 (zooAnimals) を示しています。
<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 も同じことを提案しています。ただし、ビジュアル スタジオとオンライン検証サービスの両方が、提案されている内容を気に入りません。
現時点で私が持っているものは次のとおりです。
<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 は、「灰色」は無効であり、「青」が期待されていると主張しているため、明らかにすべての子が必要です。
ありがとう、
エリック