【发布时间】:2018-07-30 17:51:06
【问题描述】:
我有架构部分所在的 WSDL:
<wsdl:types>
<xs:schema>
<!-- input schema -->
<xs:element name="vs_ss_list" type="vsSsList" />
<xs:element name="vs_ss" type="vsSs" />
<xs:complexType name="vsSsList">
<xs:sequence maxOccurs="unbounded">
<xs:element ref="vs_ss" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="vsSs">
<xs:sequence>
<xs:element name="vs" type="xs:string" />
<xs:element name="ss" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- output schema -->
.
.
.
</xs:schema>
</wsdl:types>
如果验证从此类架构创建的相反 XSd,则此输入正常:
<vs_ss_list>
<vs_ss>
<vs>123</vs>
<ss>fgh</ss>
</vs_ss>
<vs_ss>
<vs>456</vs>
<ss>jkl</ss>
</vs_ss>
但是如果测试正在运行的 Web 服务,它需要这个 SOAP 信封来运行:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<vs_ss_list>
<vs_ss>
<vs_ss>
<vs>123</vs>
<ss>fgh</ss>
</vs_ss>
<vs_ss>
<vs>123</vs>
<ss>fgh</ss>
</vs_ss>
</vs_ss>
</vs_ss_list>
</soapenv:Body>
</soapenv:Envelope>
由于某种未知原因,它需要比 XSD 验证多一个元素。
知道为什么对 XSD 有效的内容和对 WSDL 中完全相同的架构有效的内容之间存在差异吗?
【问题讨论】: