XSD简单类型与复杂类型同时出现

时间:2014-04-03 08:21:01

标签: xml xsd schema

我有以下架构

<xs:element name="a">
   <xs:complexType>
     <xs:choice>
       <xs:element ref="b"/>
       <xs:element ref="c"/>
     <xs:choice>
   </xs:complexType>
<xs:element/>

如何实现同时成为一个简单的元素?我希望能够处理以下所有情况:

<a>TEXT</a>
<a><b/></a>
<a><c/></a>

有可能吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解你的问题,你想要一个带有元素b或c的复杂类型,但也可能只是TEXT。这可以通过使用选择元素来实现。

看看this。 使用minOccurs,您可以指定至少希望此元素出现的次数。将其设置为0以使该字段可选。

修改 这是一个解决方案,我在问题中测试了它的xml并且它可以工作。您应该使用mixed =&#34; true字段&#34;

<xs:element name="a">
<xs:complexType mixed="true">
    <xs:choice>
            <xs:element minOccurs="0"  ref="b"/>
            <xs:element minOccurs="0" ref="c"/>
    </xs:choice>
    <xs:attribute name="name" type="xs:string" />
</xs:complexType>
</xs:element>