xsd:include
和xsd:import
之间有什么区别?你何时会使用一个而不是另一个,什么时候可能没关系?
答案 0 :(得分:184)
include
和import
之间的根本区别在于您必须使用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,并通过扩展现有的架构文档来构建新架构。