名为'拒绝'的父标记。是一个可选标签。此外,有2个子标签命名为' option1'和' option2'。如果父标记值出现在请求中,则必须至少给出一个孩子,最多2个孩子。但是,如果父母没有出现,那么任何一个孩子都不应该出现。
如何在2个子标签中进行此选择?
代码:
<xs:element name="Refuse" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="option1" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="option2" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
答案 0 :(得分:0)
这可以通过选择来解决,例如:
<xs:element name="Refuse" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element ref="option1"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="option1"/>
<xs:element ref="option2"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="option2"
</xs:sequence>
</xs:choice>
</xs:complexType>
</xselement>
<xs:element name="option1" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="option2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
架构中的Choice元素允许发生一个且仅一个定义的序列。有关选择检查here
的更多信息为了便于使用并避免重复代码,我已经分离了option1和option2元素的定义。
答案 1 :(得分:0)
使用选择解决
<xs:element name="Refuse" minOccurs="0" maxOccurs="1">
<xs:complexType>
**<xs:choice minOccurs="1" maxOccurs="2">**
**<xs:element name="option1">**
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
**<xs:element name="option2">**
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:choice>
</xs:complexType>