xsd:include和xsd:import之间有什么区别?什么时候你会用一种而不是另一种,什么时候它可能无关紧要?


当前回答

我对这个也很感兴趣。我找到的唯一解释是,xsd:include用于名称空间内的包含,而xsd:import用于名称空间间的包含。

其他回答

使用xsd:include将外部模式文档的所有声明和定义带入当前模式。

使用xsd:import从不同的名称空间引入一个xsd,用于通过扩展现有模式文档来构建一个新模式。

我对这个也很感兴趣。我找到的唯一解释是,xsd:include用于名称空间内的包含,而xsd:import用于名称空间间的包含。

include和import之间的基本区别在于,必须使用import引用位于不同目标名称空间中的声明或定义,而必须使用include引用位于(或将位于)同一目标名称空间中的声明或定义。

来源:https://web.archive.org/web/20070804031046/http: / / xsd.stylusstudio.com/2002Jun/post08016.htm

使用xsd:include引入来自相同或不存在命名空间的xsd。

使用xsd:import从不同的名称空间引入xsd。

另一个区别是<import>允许通过引用另一个名称空间进行导入。<include>只允许通过引用包含模式的URI来导入。这显然是与内部名称空间间导入的另一个区别。

例如,xml模式验证器可能已经通过名称空间知道了所有模式的位置。特别是考虑到在不同的系统上通过URI引用XML名称空间可能存在问题,其中classpath://没有任何意义,或者不允许使用http://,或者某些URI与在另一个系统上指向的东西不同。

有效和无效导入的代码示例,包括:

有效:

<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>

<xsd:include schemaLocation="classpath://mine.xsd"/>

无效:

<xsd:include namespace="some/name/space"/>