复杂的XML Schema一般会分割成多个文件编写,然后通过引用再把彼此联系起来,逻辑上成为一个完成的XML Schema。
通过xsd:include
和xsd:import
都能完成在一个xsd文件中引用其他xsd文件的功能,两者具体的差别在于目标命名空间方面。
xsd:include
用于引用和当前xsd定义的target namespace一致的xsd文件。
<xsd:include schemaLocation="classpath://some.xsd"/>
xsd:import
用于引用和当前xsd定义的target namespace不一致的xsd文件。
<xsd:import schemaLocation="classpath://some.xsd"/>
由于xsd:import
可以引用其他target namespace下的xsd定义,所以在xml schema validator已经可以通过namespace引用到xsd文件时,可以这样使用
<xsd:import namespace="some/name/space"/>
通过namespace来匹配引用的xsd文件。