2017-04-12 153 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

相關問題