我已阅读XSD规范,但我仍然感到困惑。在XSD中有空的选择吗?我的意思是,如果没有声明属性的简单选择,必须有元素“a”或元素“b”,或者它是否为空?
<xs:complexType name="ChoiceType">
<xs:choice>
<xs:element name="a" type="type_a"/>
<xs:element name="b" type="type_b"/>
</xs:choice>
</xs:complexType>
答案 0 :(得分:2)
是的,由xsd:choice
管理的元素可以为空,如果使用minOccurs="0"
:
minOccurs="0"
可以在xsd:choice
本身。minOccurs="0"
可以在所有孩子身上。相关答案:xsd:choice
本身可以为空,表示所定义的元素必须为空。
最后请注意,在您的示例中,不,a
或b
必须存在,因为minOccurs
的默认值为1
。
答案 1 :(得分:1)
在此方案中可能为空
<xs:complexType name="ChoiceType">
<xs:choice minOccurs="0">
<xs:element name="a" type="type_a"/>
<xs:element name="b" type="type_b"/>
</xs:choice>
</xs:complexType>
无论如何请参阅this question
答案 2 :(得分:1)
实际上说
是合法的<xs:choice minOccurs="17"/>
但是没有针对此内容模型有效的实例文档。实例必须符合其中一个替代方案,如果没有替代方案,那么这是不可能的。
定义没有实例满足的类型实际上很有用,例如如果你想将类型限制为零。