我正在尝试为下面的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>
请有人为我提供输入以达到此类要求。
答案 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