在xsd强制(soap)中标记一个元素,两个元素也可以同时存在

在xsd强制(soap)中标记一个元素,两个元素也可以同时存在,soap,xsd,Soap,Xsd,我有一个模式,我希望其中任何一个元素都是必需的,它们不应该重复 已编辑--在这里,有效的请求可以在请求中同时包含查询和id,或者只包含查询或id元素也是有效的。 e、 g: 测试 1. 有效请求: 使用query和id元素 仅包含查询元素 只有id元素 无效请求: 没有查询和id元素 具有多个查询元素 具有多个id元素 我希望查询或id必须存在。其中一项是强制性的。 我试过以下方法: <xs:sequence> <xs:element

我有一个模式,我希望其中任何一个元素都是必需的,它们不应该重复

已编辑--在这里,有效的请求可以在请求中同时包含查询和id,或者只包含查询或id元素也是有效的。 e、 g:


测试
1.
有效请求:

  • 使用query和id元素
  • 仅包含查询元素
  • 只有id元素
  • 无效请求:

  • 没有查询和id元素
  • 具有多个查询元素
  • 具有多个id元素
  • 我希望查询或id必须存在。其中一项是强制性的。 我试过以下方法:

    <xs:sequence>
                       <xs:element  minOccurs="0" name="id">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:minLength value="1" />
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element  minOccurs="0" name="query">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:minLength value="1" />
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>   
    </xs:sequence>
    
    
    
    这里的问题是它们都不是强制性的,将任何一个设置为minoccurs=1将使该字段成为强制性的(例如,如果我将id标记为minoccurs=1,则id字段是强制性的,但我的有效请求只能有查询而不能有id),并且可能同时存在两个标记

    我也试过选择标签


    使用simple choice with将使这些标记重复,这也是我不希望的。标记不应重复。

    为什么
    xs:choice
    不起作用?它不必允许重复;它将自然地处理您对
    查询
    id
    的需求,一次,而不是两次;如果在xs:choice中的两个元素上都将minOccurs设置为1,那么验证器将不允许空的选项组。它会坚持选择包含一些东西。我想这正是你想要的。谢谢你的回复。我编辑了这个问题以提供更多的例子。希望这能澄清我的疑问。为什么
    xs:choice
    不起作用?它不必允许重复;它将自然地处理您对
    查询
    id
    的需求,一次,而不是两次;如果在xs:choice中的两个元素上都将minOccurs设置为1,那么验证器将不允许空的选项组。它会坚持选择包含一些东西。我想这正是你想要的。谢谢你的回复。我编辑了这个问题以提供更多的例子。希望这能澄清我的疑虑。
    <xs:sequence>
                       <xs:element  minOccurs="0" name="id">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:minLength value="1" />
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element  minOccurs="0" name="query">
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:minLength value="1" />
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>   
    </xs:sequence>