【问题标题】:WSDL import 'location' attribute -vs- XSD import 'schemaLocation' attributeWSDL 导入 'location' 属性 -vs- XSD 导入 'schemaLocation' 属性
【发布时间】:2013-10-09 23:21:42
【问题描述】:

两者有什么关系:

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

虽然我可以使用 catalog 文件(在 JAX-WS / wsimport 工具链中)来“覆盖”schemaLocation 元素的属性 xsd:import 似乎我不能为wsdl:import 语句的location 属性。

【问题讨论】:

    标签: xsd wsdl jax-ws wsimport


    【解决方案1】:

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

    除非围绕 wsdl:import 引起混淆,特别是如果它可以用于导入 XSD(在 the interoperable way 中不应该),它们都是为了同样的事情,也就是在范围内引入另一个 WSDL(在 WSDL 情况下)或另一个 XSD(在 XSD 情况下)定义,从而允许使用模块化方法进行创作。

    您所指的属性是等效的,就像 Java 中的 import 或多或少与 C# 中的 using 匹配一样。

    但是,如果您考虑 WSDL 1.1 注意,则每个细节都不同:而在 XSD 中,schemaLocation 属性对于 xsd:import 是可选的(因为导入的位置可以通过其命名空间使用规范允许的其他方式),同样没有内置到 location 属性的WSDL 1.1 note 中。

    此外,XSD 规范明确允许覆盖:

    The ·actual value· of the schemaLocation, if present, gives a **hint** as to where a serialization of a ·schema document·...

    如果您查找the same in WSDL 2.0,您会注意到现在 WSDL 除了旧的 import 之外还支持 include,基本上遵循与命名空间相关的相同语义与指令相关联。更重要的是,location 属性的使用也与 XSD 中的一致,这反过来应该促进基于目录的方法来解决“悬空”导入。

    总结一下,考虑到 WSDL 1.1 中的强制 location 属性,谈论目录或覆盖是没有意义的,因为注释没有暗示或允许它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-20
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多