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


Answers:


205

include和之间的根本区别import是,您必须用于import引用位于不同目标名称空间中的声明或定义,并且必须用于include引用在(或将要)同一目标名称空间中的声明或定义。

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





19

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

我认为您的意思是通过位置URL而不是URI 来引用XML名称空间。命名空间URI(即的namespace属性<xs:import>)总是可以的,并被视为标识符(只是文本,未解释),而schemaLocation通常必须处理(URL不是URI)才能解析。确实,Java特定的classpath:URL 方案可能毫无意义。但是,除了这个巧妙的选择之外,这是一个有价值的评论,谢谢。
ddevienne


0

来自MSDN的直接报价:<xsd:import>元素,“备注”部分

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


-3

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.