xsd:include和xsd:import之间有什么区别?

时间:2010-03-01 18:08:22

标签: xml xsd

xsd:includexsd:import之间有什么区别?你何时会使用一个而不是另一个,什么时候可能没关系?

6 个答案:

答案 0 :(得分:184)

includeimport之间的根本区别在于您必须使用import来引用不同目标命名空间中的声明或定义必须使用include来引用相同目标命名空间中的(或将要)的声明或定义。

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

答案 1 :(得分:46)

使用 xsd:include 相同的 或无名称空间引入XSD。

使用 xsd:import 不同的 命名空间引入XSD。

答案 2 :(得分:17)

另一个区别是<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"/>

答案 3 :(得分:8)

我也对此感兴趣。我发现的唯一解释是xsd:include用于命名空间内包含,而xsd:import用于命名空间包含。

答案 4 :(得分:0)

直接引自MSDN: <xsd:import> Element, Remarks section

  

include 元素与 import 元素之间的区别在于 import 元素允许从具有不同目标命名空间的架构文档引用架构组件并且 include 元素将具有相同目标命名空间(或没有指定目标命名空间)的其他模式文档中的模式组件添加到包含模式。简而言之, import 元素允许您使用任何模式中的模式组件; include 元素允许您将包含的架构的所有组件添加到包含架构中。

答案 5 :(得分:-3)

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

使用xsd:import从不同的命名空间引入XSD,并通过扩展现有的架构文档来构建新架构。