xsd - 具有相同名称和不同类型的多个元素

时间:2017-04-12 05:16:55

标签: java soap xsd jaxb

我正在尝试为下面的soap信封编写xsd。但我说" cos-element-consistent:类型'#AnonType_process'的错误。名称为' calc'且具有不同类型的多个元素将显示在模型组中。"

   
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="process">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="calc" type="wsInput"/>
        <xs:element name="calc" type="wsCalc"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="wsInput">
    <xs:sequence>
        <xs:element type="xs:string" name="fieldName" minOccurs="0"/>
        <xs:element type="xs:string" name="value" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="wsCalc">
    <xs:sequence>
        <xs:element type="xs:string" name="txnAmt" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

以下是我在肥皂客户端生成的预期肥皂包。

<S:Envelope> 
<S:Body>
<ns2:process xmlns:ns2="http://soap.com/">
// List of calc input fields will be here
<calc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:wsInput">
            <fieldName>DATE</fieldName>
            <value>20170101</value>
         </calc>

// List of output/result fields will be here
<calc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:wsCalc">
            <txnAmt>100.00</txnAmt>
         </calc >
</ns2:process
</S:Body>
</S:Envelope>

请有人为我提供输入以达到此类要求。

1 个答案:

答案 0 :(得分:1)

您需要<xs:choice>。像

这样的东西
<xs:element name="process">
  <xs:choice>
    <xs:element name="calc1" type="wsInput">
    <xs:element name="calc2" type="wsCalc">

请注意,元素名称不同,因为you can't define sibling with different types

相关问题