我有WSDL,其中模式部分是:
<vs_ss_list>
<vs_ss>
<vs>123</vs>
<ss>fgh</ss>
</vs_ss>
<vs_ss>
<vs>456</vs>
<ss>jkl</ss>
</vs_ss>
如果验证从此类架构创建的相反的XSd,则此输入没问题:
<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>
但是,如果测试正在运行的Web服务,则需要此SOAP信封才能运行:
{{1}}
由于某种未知原因,它需要比对XSD进行验证多一个元素。
您知道为什么XSD有效和WSDL中完全相同的架构有效之间有区别吗?
答案 0 :(得分:0)
您的第一个输入缺少<vs_ss_list>
的结束标记。
假设在末尾添加了xml,则xml仍然无效,因为您的XSD需要两个元素。
...
<xs:element name="vs_ss_list" type="vsSsList" />
<xs:element name="vs_ss" type="vsSs" />
...
第一个是您的列表,第二个是一个vsSs
。
尝试删除<xs:element name="vs_ss" type="vsSs" />
。