¿Cuál es la diferencia entre xsd: include y xsd: import?


Respuestas:


205

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.

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



La publicación de stylusstudio a la que se refiere @Pops está aquí: web.archive.org/web/20140831005739/http://xsd.stylusstudio.com/…
tony19


19

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:

<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"/>

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.


0

Presupuesto directo de MSDN: Elemento <xsd: import>, sección Comentarios

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.


-3

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.