标记xsd必需(soap)中的一个元素,并且两个元素也可以存在

时间:2016-01-25 06:08:50

标签: soap xsd

我有架构我想要任何一个元素是强制性的,它们不应该重复。

EDITED - 此处有效请求可以包含请求中的查询和id,或者只有查询或id元素也有效。 e.g:

 <soapenv:Body>
      <ws:SomeOperation>
         <SoapOperation>
            <query>test</query>
            <id>1</id>
         </SoapOperation>
      </ws:SomeOperation>
 </soapenv:Body>

有效请求:

  1. with query和id element。
  2. 仅包含查询元素。
  3. 只有id元素。
  4. 无效请求:

    1. 没有查询和ID元素。
    2. 有多个查询元素。
    3. 有多个id元素。
    4. 我希望查询或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)并且也可能存在两个标签。

      我也尝试过选择标签。

      使用简单的选择将使这些标签重复,这也是我不想要的。标签不应重复。

0 个答案:

没有答案