Solución:
La diferencia fundamental entre include
y import
es que debes usar import
para referirse a declaraciones o definiciones que se encuentran en un diferente espacio de nombres de destino y debe usar include
para referirse a declaraciones o definiciones que están (o estarán) en el mismo espacio de nombres de destino.
Fuente: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm
Usar xsd: incluir para traer un XSD del mismo o sin espacio de nombres.
Usar xsd: importar para traer un XSD de un diferente espacio de nombres.
Otra diferencia es que <import>
permite importar haciendo referencia a otro espacio de nombres. <include>
solo permite la importación haciendo referencia a un URI del esquema de inclusión previsto. Definitivamente, esa es otra diferencia que la importación de espacios de nombres entre intra intra.
Por ejemplo, es posible que el validador de esquemas XML ya conozca las ubicaciones de todos los esquemas. por espacio de nombres ya. Especialmente considerando que hacer referencia a espacios de nombres XML por URI puede ser problemático en diferentes sistemas donde classpath: // no significa nada, o donde http: // no está permitido, o donde algún URI no apunta a lo mismo que en otro sistema.
Muestra de código de importaciones válidas y no válidas e incluye:
Válido:
<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>
<xsd:include schemaLocation="classpath://mine.xsd"/>
Inválido:
<xsd:include namespace="some/name/space"/>