WSDL导入'location'属性-vs- XSD导入'schemaLocation'属性

Mar*_*tus 5 xsd wsdl jax-ws wsimport

之间的关系是什么:

......特别是location前者的schemaLocation属性与后者的属性之间的关系?

虽然我可以使用目录文件(在JAX-WS/wsimport工具链中)来"覆盖" 元素的schemaLocation属性,xsd:import但似乎我不能locationwsdl:import语句的属性执行相同的操作.

Pet*_*dea 4

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

\n\n

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

\n\n

您所指的属性是等效的,就像importJava 中的 a 或多或少与usingC# 中的 a 匹配一样。

\n\n

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

\n\n

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

\n\n

The \xc2\xb7actual value\xc2\xb7 of the schemaLocation, if present, gives a **hint** as to where a serialization of a \xc2\xb7schema document\xc2\xb7...

\n\n

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

\n\n

总而言之,考虑到 WSDL 1.1 中的强制位置属性,谈论目录或覆盖没有意义,因为注释没有暗示或允许这样做。

\n