是否要求每个模式在wsdl中都必须具有唯一的命名空间? 有关示例,请考虑以下WSDL代码段,该代码段没有架构的命名空间。
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="GetFilterValuesRequest.xsd"/>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="GetFilterValuesReply.xsd"/>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="IRequest.xsd"/>
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="IReply.xsd"/>
</xsd:schema>
</wsdl:types>
我问的原因是因为我正在使用node-soap库来编写WSDL服务,当架构中存在冲突的命名空间或根本没有命名空间时,库服务不起作用。
当发送SOAP请求时,它会发出错误Cannot read property 'input' of undefined
,因为它会根据命名空间构建模式映射,然后无法找到给定请求的唯一模式。
我不想详细介绍错误或修复错误,但是,想要了解这是WSDL成为有效错误所必需的东西吗?
答案 0 :(得分:0)
是SOAP服务器需要名称空间才能与大多数客户端一起正常运行。
您的模式都在同一名称空间中,因此如果您使用相同的名称定义数据结构,这将是一个问题。
XML中的命名空间就像编程语言中的命名空间一样。它们可以防止同名的数据类型相互冲突。
请注意,命名空间不必是URL。这只是一个惯例。它可以是任何东西,它只需要是独一无二的。