之间有什么关系:
WSDL中的
import
元素-和-
XML Schema中的
import
元素和
……尤其是location
前者的schemaLocation
属性和后者的属性之间的关系?
虽然我可以使用目录文件(在 JAX-WS/wsimport
工具链中)来“覆盖”元素schemaLocation
的属性,xsd:import
但似乎我不能对语句的location
属性做同样的事情。wsdl:import
在这两种情况下,都import
建立了文档(即 WSDL 或 XSD)和外部资源之间的关系。
除非围绕wsdl:import引起混乱,特别是它是否可以用于导入 XSD(以互操作的方式它不应该),它们都意味着为自己的类型做同样的事情,即引入范围内的另一个 WSDL(在 WSDL 情况下)或另一个 XSD(在 XSD 情况下)定义,因此允许使用模块化方法进行创作。
您所指的属性是等效的,就像import
Java 中的 a 或多或少匹配using
C# 中的 a 一样。
但是,如果您考虑 WSDL 1.1 注意:在 XSD 中,schemaLocation属性对于 xsd:import 是可选的(因为可以使用规范允许的其他方式通过其名称空间解析导入的位置),但每个细节都是不同的。没有内置到位置属性的WSDL 1.1 注释中。
此外,XSD 规范明确允许覆盖:
The ·actual value· of the schemaLocation, if present, gives a **hint** as to where a serialization of a ·schema document·...
如果您在 WSDL 2.0 中寻找相同的内容,您会注意到现在 WSDL除了旧的import之外还支持包含,基本上遵循与指令关联的命名空间相同的语义。更重要的是,location 属性的使用也与 XSD 中的一致,这反过来应该促进基于目录的方法来解决“悬空”导入。
总结一下,考虑到 WSDL 1.1 中的强制位置属性,谈论目录或覆盖是没有意义的,因为注释没有暗示或允许它。