2017-04-12 156 views
0

我正在尝试为下面的soap信封编写xsd。但我说,“COS元素一致:错误类型‘#AnonType_process’多元素名为‘钙’,不同类型,出现在模型组。”xsd - 具有不同类型的相同名称的多个元素

<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> 

下面是我期望的soap信封在肥皂客户端生成。

<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

您需要<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

+0

@ ADS但我需要<计算值的xsi:type = “NS2:wsInput”><计算值的xsi:type = “NS2:wsCalc”>。相同的元素名称,但类型不同,请在我的肥皂信封上方查看。 – Easy2DownVoteHard2Ans

+0

请给我提供一些意见,以实现这一点,我很无奈。 – Easy2DownVoteHard2Ans

+1

@ Easy2DownVoteHard2Ans ** **不能**做到这一点 – ADS

相关问题