在我的XSD元素中,我必须使“fieldA或fieldB字段之一必须使用。”
So far i have this:
<xsd:complexType name="Test">
<xsd:sequence>
<xsd:element name="fieldA" maxOccurs="1" minOccurs="0"/>
<xsd:element name="fieldB" maxOccurs="1" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
如何为这两个字段设置基数,以便一个是强制性的?
非常感谢您的时间和精力!
答案 0 :(得分:6)
使用<xsd:choice>
代替<xsd:sequence>
并放弃minOccurs="0"
示例代码,只需要其中一个字段
<xsd:complexType name="Test">
<xsd:choice>
<xsd:element name="fieldA"/>
<xsd:element name="fieldB"/>
</xsd:choice>
</xsd:complexType>
如果您想要要求{/ 1}}或<fieldA>
或两个元素以任何顺序,请使用此
<fieldB>
如果您要求<xsd:complexType name="Test">
<xsd:choice>
<xsd:sequence>
<xsd:element name="fieldA"/>
<xsd:element name="fieldB" minOccurs="0"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="fieldB"/>
<xsd:element name="fieldA" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
或<fieldA>
或两个元素并保留订单(<fieldB>
之前<fieldA>
),那么你可以稍微简化一下结构。
<fieldB>
答案 1 :(得分:0)
choice 元素可以帮助您:
<xs:complexType name="Test">
<xs:choice>
<xs:element name="fieldA" maxOccurs="1" minOccurs="0"/>
<xs:element name="fieldB" maxOccurs="1" minOccurs="0"/>
</xs:choice>
</xs:complexType>