5
我想要做的是在XML模式中創建一個序列元素,以便內容必須按順序排列,但不一定全部存在。例如,該架構將是這樣的:如何製作一系列必須按照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),可以在序列元素中包含零個或多個以下元素,大象,熊,長頸鹿。
<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中聲稱, 「灰色」 是無效的, 「藍色」 預期,因此明確它希望所有的孩子
感謝,
埃裏克
您的架構定義對我來說很不錯。 小心分享Visual Studio和在線驗證器的結果/反饋? – 2009-05-31 08:31:35
我已將結果添加到帖子 – Eric 2009-05-31 14:59:22