之间的关系是什么:
import
元素
- 和 -
import
元素和XML Schema
...特别是前者的location
属性与后者的schemaLocation
属性之间的关系?
虽然我可以使用catalog文件(在JAX-WS / wsimport
工具链中)来"覆盖" schemaLocation
元素的xsd:import
属性似乎不能对location
语句的wsdl:import
属性执行相同的操作。
答案 0 :(得分:4)
在这两种情况下,import
都建立了文档(即WSDL或XSD)与外部资源之间的关系。
除了围绕 wsdl:import 的混淆,特别是如果它可以用于导入XSD(在the interoperable way它不应该),它们都是为了为自己的类型做同样的事情,即引入另一个WSDL(在WSDL案例中)或另一个XSD(在XSD案例中)范围内的定义,从而允许采用模块化方法进行创作。
您引用的属性应该是等效的,就像Java中的import
或多或少与C#中的using
匹配一样。
但是,如果考虑WSDL 1.1注释,则每个细节的具体情况会有所不同:在XSD中, schemaLocation 属性对于xsd:import是可选的(因为导入的位置可以通过其命名空间使用规范允许的其他方法),位置属性的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中的强制位置属性,谈论目录或覆盖是没有意义的,因为它不是暗示或允许的。