具有以下 XML 架构 (XSD 1.0):
<xs:element name="Fruits">
<xs:complexType>
<xs:sequence>
<xs:element name="Fruit_id" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="Apple" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Banana" minOccurs="1" maxOccurs="1"/>
<xs:sequence>
<xs:element ref="Cherry" minOccurs="0" maxOccurs="1"/>
<xs:element ref="Durian" minOccurs="0" maxOccurs="1"/>
<xs:element ref="Elderberry" minOccurs="0" maxOccurs="1"/>
<xs:element ref="Fig" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
我面临的问题是这个模式允许仅由Fruits
组成,并且我Fruit_id
想强制在. 我尝试将上述内容更改为以下内容(长话短说,将 替换为并将相应更改为):Apple
Banana
Cherry
Durian
Elderberry
Fig
Fruits
sequence
choice
minOccurs
1
<xs:element name="Fruits">
<xs:complexType>
<xs:sequence>
<xs:element name="Fruit_id" type="xs:int" minOccurs="1" maxOccurs="1"/>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="Apple" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Banana" minOccurs="1" maxOccurs="1"/>
<xs:choice minOccurs="1" maxOccurs="4">
<xs:element ref="Cherry" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Durian" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Elderberry" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Fig" minOccurs="1" maxOccurs="1"/>
</xs:choice>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
确实,它强制至少一个上述结果存在于 中Fruits
,但它允许Cherry
、Durian
、Eldeberry
和Fig
分别在 中出现多达四次Fruits
,而我的意图是它们中的每一个分别应该最多允许存在Fruits
一次(这就是我尝试maxOccurs="4"
在(嵌套)choice
元素中使用的原因)。