La diferencia fundamental entre includey importes que debe usar importpara referirse a declaraciones o definiciones que están en un espacio de nombres de destino diferente y debe usar includepara referirse a declaraciones o definiciones que están (o estarán) en el mismo espacio de nombres de destino.
Otra diferencia es que <import>permite importar haciendo referencia a otro espacio de nombres. <include>solo permite importar haciendo referencia a un URI del esquema de inclusión previsto. Esa es definitivamente otra diferencia que la importación de espacios de nombres entre intra.
Por ejemplo, el validador de esquemas xml ya puede conocer las ubicaciones de todos los esquemas por espacio de nombres . Especialmente teniendo en cuenta que referirse a los 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 algunos URI no apuntan a lo mismo que en otro sistema
Muestra de código de importaciones válidas e inválidas e incluye:
Creo que te refieres a hacer referencia a espacios de nombres XML por URL de ubicación en lugar de por URI . Los URI de espacio de nombres (es decir, el namespaceatributo de <xs:import>) siempre están bien y se consideran como un identificador (solo texto, no interpretado), mientras que schemaLocation(una URL, no un URI) generalmente debe procesarse para resolverse. Y de hecho, el esquema declasspath: URL específico de Java puede no significar nada. Pero al lado de esta selección ordenada, este es un comentario valioso, gracias.
ddevienne
7
Estoy interesado en esto también. La única explicación que he encontrado es que xsd:includese usa para inclusiones dentro del espacio de nombres, mientras que xsd:importes para la inclusión entre espacios de nombres.
La diferencia entre el elemento de inclusión y el elemento de importación es que el elemento de importación permite referencias a componentes de esquema de documentos de esquema con diferentes espacios de nombres de destino y el elemento de inclusión agrega los componentes de esquema de otros documentos de esquema que tienen el mismo espacio de nombres de destino (o ningún espacio de nombres de destino especificado ) al esquema contenedor. En resumen, el elemento de importación le permite usar componentes de esquema de cualquier esquema; el elemento de inclusión le permite agregar todos los componentes de un esquema incluido al esquema que lo contiene.
Use xsd: include trae todas las declaraciones y definiciones de un documento de esquema externo al esquema actual.
Utilice xsd: import para incorporar un XSD desde un espacio de nombres diferente y se utiliza para crear un nuevo esquema extendiendo los documentos de esquema existentes.
Respuestas:
La diferencia fundamental entre
include
yimport
es que debe usarimport
para referirse a declaraciones o definiciones que están en un espacio de nombres de destino diferente y debe usarinclude
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
fuente
Use xsd: include para traer un XSD desde el mismo espacio de nombres o sin este.
Use xsd: import para traer un XSD desde un espacio de nombres diferente .
fuente
Otra diferencia es que
<import>
permite importar haciendo referencia a otro espacio de nombres.<include>
solo permite importar haciendo referencia a un URI del esquema de inclusión previsto. Esa es definitivamente otra diferencia que la importación de espacios de nombres entre intra.Por ejemplo, el validador de esquemas xml ya puede conocer las ubicaciones de todos los esquemas por espacio de nombres . Especialmente teniendo en cuenta que referirse a los 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 algunos URI no apuntan a lo mismo que en otro sistema
Muestra de código de importaciones válidas e inválidas e incluye:
Válido:
Inválido:
fuente
namespace
atributo de<xs:import>
) siempre están bien y se consideran como un identificador (solo texto, no interpretado), mientras queschemaLocation
(una URL, no un URI) generalmente debe procesarse para resolverse. Y de hecho, el esquema declasspath:
URL específico de Java puede no significar nada. Pero al lado de esta selección ordenada, este es un comentario valioso, gracias.Estoy interesado en esto también. La única explicación que he encontrado es que
xsd:include
se usa para inclusiones dentro del espacio de nombres, mientras quexsd:import
es para la inclusión entre espacios de nombres.fuente
Presupuesto directo de MSDN: Elemento <xsd: import>, sección Comentarios
fuente
Use xsd: include trae todas las declaraciones y definiciones de un documento de esquema externo al esquema actual.
Utilice xsd: import para incorporar un XSD desde un espacio de nombres diferente y se utiliza para crear un nuevo esquema extendiendo los documentos de esquema existentes.
fuente