5

之间有什么关系:

……尤其是location前者的schemaLocation属性和后者的属性之间的关系?

虽然我可以使用目录文件(在 JAX-WS/wsimport工具链中)来“覆盖”元素schemaLocation的属性,xsd:import但似乎我不能对语句的location属性做同样的事情。wsdl:import

4

1 回答 1

4

在这两种情况下,都import建立了文档(即 WSDL 或 XSD)和外部资源之间的关系。

除非围绕wsdl:import引起混乱,特别是它是否可以用于导入 XSD(以互操作的方式它不应该),它们都意味着为自己的类型做同样的事情,即引入范围内的另一个 WSDL(在 WSDL 情况下)或另一个 XSD(在 XSD 情况下)定义,因此允许使用模块化方法进行创作。

您所指的属性是等效的,就像importJava 中的 a 或多或少匹配usingC# 中的 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 中的强制位置属性,谈论目录或覆盖是没有意义的,因为注释没有暗示或允许它。

于 2013-10-12T17:13:47.277 回答