【问题标题】:Why differences between XSD schema and WSDL schema?为什么 XSD 模式和 WSDL 模式之间存在差异?
【发布时间】: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 中完全相同的架构有效的内容之间存在差异吗?

【问题讨论】:

    标签: java xml xsd wsdl


    【解决方案1】:

    您的第一个输入缺少&lt;vs_ss_list&gt; 的结束标记。

    假设这是在最后添加的,那么 xml 仍然无效,因为您的 XSD 需要两个元素。

        ...
        <xs:element name="vs_ss_list" type="vsSsList" />
        <xs:element name="vs_ss" type="vsSs" />
        ...
    

    第一个是您的列表,第二个是单个vsSs

    尝试删除&lt;xs:element name="vs_ss" type="vsSs" /&gt;

    【讨论】:

    • 感谢您的回复。缺少的结束标签 vs_ss_list 仅在帖子中丢失。在我的测试文件中,我确实有它。我确实删除了元素,但没有运气,行为没有改变。奇怪。
    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 2016-03-23
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多