【问题标题】:Do multiple XML schemas in a single WSDL need to use xsd:import or not?单个 WSDL 中的多个 XML 模式是否需要使用 xsd:import?
【发布时间】:2016-06-07 13:16:43
【问题描述】:

我是 WSDL 的新手。我有一个关于 XML 模式命名空间的问题。

假设我在 definition 标签内定义了三个命名空间:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:tns="urn:arjun/ws/prime/primeservice/" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:Query="urn:/arjun/xml/prime/primeservice/query" 
    xmlns:Data="urn:/arjun/xml/prime/primeservice/data" 
    targetNamespace="urn:arjun/ws/prime/primeservice/" >

当我在其中一个命名空间中定义类型时,如果我需要对该命名空间的引用,是否需要导入其他命名空间(如下例所示)

<types>
    <xsd:schema targetNamespace="urn:arjun/ws/prime/primeservice/"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        attributeFormDefault="unqualified" 
        elementFormDefault="qualified">

        <xsd:import namespace="urn:/arjun/xml/prime/primeservice/query"/>

        <xsd:element name="Input" type="tns:Input"/>
        <xsd:complexType name="Input">
            <xsd:sequence>
                <xsd:element ref="Query:StanderedInput"/> 
            </xsd:sequence>
        </xsd:complexType>

        ...
    </xsd:schema
</types>

或者我可以直接引用它而不导入该命名空间?

【问题讨论】:

    标签: xsd namespaces wsdl wsimport


    【解决方案1】:

    我可以在不导入该命名空间的情况下简单地引用它吗?

    不,你不能。如果没有导入,您应该会收到 XSD 错误。

    在 XSD 架构文档中,xsd:import 元素用于一个强制和一个可选目的。

    • 这表明在架构文档中声明的一些架构组件可能依赖于在另一个命名空间中声明的组件; namespace 属性标识其他命名空间。

    • 可选地,它还可以使用schemaLocation 属性来指定可以找到导入命名空间的架构文档的位置;处理者可能会也可能不会关注这些信息。

    【讨论】:

    • 即使我没有添加导入语句,我也没有收到任何错误。我已经使用浏览器和肥皂客户端进行了检查。所以我有点困惑。
    • 我也有点困惑。您使用的 SOAP 客户端是否执行 XSD 架构验证?我所知道的网络浏览器都没有,所以这并不奇怪(除非您指的是其他类型的浏览器,它确实执行 XSD 模式有效性评估)。
    • 是的,我相信。如果没有给出默认命名空间或者我只是给出了一些数据类型。它正在验证给我正确的错误消息。但在这里我没有收到任何错误。是不是因为我已经在定义标签中添加了命名空间?您可以在 wsdl 的顶部看到它。但是我尝试从定义标记中删除 xmlns:Query 和 xmlns: data 并包含在导入语句中。那个时候我也收到了验证错误消息。 wsdl 如何在没有 import 语句的情况下识别我在同一 WSDL 的其他模式中提到的类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多