Respostas:
A diferença fundamental entre include
e import
é que você deve usar import
para se referir a declarações ou definições que estão em um espaço para nome de destino diferente e deve usar include
para se referir a declarações ou definições que estão (ou serão) no mesmo espaço para nome de destino.
Fonte: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm
Use xsd: include para trazer um XSD do mesmo ou nenhum espaço para nome.
Use xsd: import para trazer um XSD de um espaço para nome diferente .
Outra diferença é que <import>
permite importar consultando outro espaço para nome. <include>
só permite importar consultando um URI do esquema de inclusão pretendido. Essa é definitivamente outra diferença do que a importação de espaço para nome intra-intra.
Por exemplo, o validador de esquema xml já pode saber os locais de todos os esquemas pelo namespace . Especialmente considerando que a referência a namespaces XML por URI pode ser problemática em sistemas diferentes onde classpath: // não significa nada, ou onde http: // não é permitido, ou onde alguns URI não apontam para a mesma coisa que em outro sistema.
Amostra de código de importações válidas e inválidas e inclui:
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"/>
namespace
atributo de <xs:import>
) estão sempre OK e são considerados um identificador (apenas texto, não interpretado), enquanto o schemaLocation
(uma URL não um URI) normalmente deve ser processado, para ser resolvido. E, de fato, o esquema declasspath:
URL específico do Java pode não significar nada. Mas, além dessa escolha, esse é um comentário valioso, obrigado.
Também estou interessado nisso. A única explicação que encontrei é que xsd:include
é usada para inclusões intra-namespace, enquanto xsd:import
é para inclusão entre namespace.
Citação direta do MSDN: Elemento <xsd: import>, seção Observações
A diferença entre o elemento de inclusão e o elemento de importação é que o elemento de importação permite referências a componentes de esquema de documentos de esquema com diferentes espaços de nomes de destino e o elemento include inclui os componentes de esquema de outros documentos de esquema que possuem o mesmo espaço de nome de destino (ou nenhum espaço de nome de destino especificado ) para o esquema que o contém. Resumindo, o elemento import permite usar componentes de esquema de qualquer esquema; o elemento include permite adicionar todos os componentes de um esquema incluído ao esquema que o contém.
Usar xsd: include traz todas as declarações e definições de um documento de esquema externo para o esquema atual.
Use xsd: import para trazer um XSD de um espaço para nome diferente e usado para criar um novo esquema, estendendo os documentos de esquema existentes.