xsd:choice 需要其中之一,还是两者都允许?

Does xsd:choice require one or the other, or are both allowed too?

我有两种复杂类型,XML 中的一个元素可以采用这两种类型中的任何一种。有时,我知道元素可以采用这些类型中的哪一种。因此,我在 XSD.

中定义
<xs:complexType name="A">
    <xs:sequence>
        <xs:element name="one" type="onetype" minOccurs="0"
            maxOccurs="1" />
        <xs:element name="two" type="twotype" minOccurs="0"
            maxOccurs="unbounded" />
        <xs:element name="three" type="country" minOccurs="0"
            maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="oneattr" type="xs:string" />
    <xs:attribute name="twoattr" type="xs:string" />
</xs:complexType>

<xs:complexType name="B">
    <xs:sequence>
        <xs:element name="four" type="fourtype" minOccurs="0"
            maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="fourattr" type="xs:string" />
</xs:complexType>  

但有时我不这样做,所以我创建了另一种类型,例如 AorB

<xs:complexType name="AorB">
        <xs:choice>
            <xs:sequence>
                <xs:element name="one" type="onetype" minOccurs="0"
                    maxOccurs="1" />
                <xs:element name="two" type="twotype" minOccurs="0"
                    maxOccurs="unbounded" />
                <xs:element name="three" type="country" minOccurs="0"
                    maxOccurs="1" />
            </xs:sequence>
            <xs:sequence>
                <xs:element name="four" type="fourtype" minOccurs="0"
                    maxOccurs="1" />
            </xs:sequence>
        </xs:choice>
        <xs:attribute name="oneattr" type="xs:string" />
        <xs:attribute name="twoattr" type="xs:string" />
        <xs:attribute name="fourattr" type="xs:string" />
    </xs:complexType>

所以我的问题是:xsd:choice 中的两个序列中,当验证 XML 时,如果 XML 包含来自两个序列还是只有一个?

xsd:choice 需要一个或另一个

when the XML is validated, does it validate true if XML contains elements from both sequence or only one ?

xsd:choice@minOccurs 的默认值是 1,这意味着 children 内容模型中的一种或另一种适用,而不是两种。如果为 value 大于 1 添加 minOccurs="value" value等于unbounded,则允许​​其children出现多次。但是请注意,第二次出现可能是从第一次出现时选择的 child 的重复。