为什么XSD模式和WSDL模式之间存在差异?

时间:2018-07-30 09:20:02

标签: java xml xsd wsdl

我有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中完全相同的架构有效之间有区别吗?

1 个答案:

答案 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" />