我有以下架构
<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>
有可能吗?
答案 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>