我想做的是在 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 对此有如下说法:
The following example shows an element (zooAnimals) that can have zero or more of the following elements, elephant, bear, giraffe, in the sequence element.
<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 声称“灰色”无效,“蓝色”是预期的,所以很明显它想要所有的 child
谢谢,
埃里克
最佳答案
<xs:element name="rods">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="green" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="white" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="blue" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="yellow" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="red" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="tan" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="gray" type="xs:positiveInteger" />
<xs:element minOccurs="0" name="black" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
</xs:element>
关于xml - 您如何制作一系列必须在 XML 模式中按顺序排列的可选项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931622/