xsd - 具有不同类型的相同名称的多个元素
问题描述:
我正在尝试为下面的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>
请有人提供我的意见,以实现这种类型的要求。
答
您需要<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
@ ADS但我需要。相同的元素名称,但类型不同,请在我的肥皂信封上方查看。 – Easy2DownVoteHard2Ans
请给我提供一些意见,以实现这一点,我很无奈。 – Easy2DownVoteHard2Ans
@ Easy2DownVoteHard2Ans ** **不能**做到这一点 – ADS