XSD选择可以为空吗?

时间:2015-11-10 12:56:20

标签: xml xsd

我已阅读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>

3 个答案:

答案 0 :(得分:2)

是的,由xsd:choice管理的元素可以为空,如果使用minOccurs="0"

  • minOccurs="0"可以在xsd:choice本身。
  • minOccurs="0"可以在所有孩子身上。

相关答案:xsd:choice本身可以为空,表示所定义的元素必须为空。

最后请注意,在您的示例中,不,ab必须存在,因为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"/>

但是没有针对此内容模型有效的实例文档。实例必须符合其中一个替代方案,如果没有替代方案,那么这是不可能的。

定义没有实例满足的类型实际上很有用,例如如果你想将类型限制为零。