这是什么关系:
-
WSDL 中的
import
元素-和-
-
import
元素和 XML 架构
。特别是前者的location
属性与后者的schemaLocation
属性之间的关系?
虽然我可以使用目录文件(在 JAX-WS/wsimport
工具链中(来"覆盖"xsd:import
元素的schemaLocation
属性,但似乎我不能对 wsdl:import
语句的location
属性做同样的事情。
在这两种情况下,import
在文档(WSDL 或 XSD(和外部资源之间建立关系(。
除非围绕 wsdl:import 的混淆,特别是它是否可以用于导入 XSD(以不应该以可互操作的方式(,它们都意味着为自己的同类做同样的事情,即引入另一个 WSDL(在 WSDL 的情况下(,或者另一个 XSD(在 XSD 的情况下(的定义在范围内, 从而允许采用模块化方法进行创作。
您所指的属性应该是等效的,就像 Java 中的import
或多或少与 C# 中的using
匹配一样。
但是,如果您考虑 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 除了旧的导入之外还支持包含,基本上遵循与指令关联的命名空间相同的语义。更重要的是,位置属性的使用也与XSD中的使用一致,这反过来应该促进一种基于目录的方法来解决"悬而未决"的导入。
为了四舍五入,考虑到 WSDL 1.1 中的强制位置属性,谈论目录或覆盖是没有意义的,因为它不是注释所暗示或允许的。