A diferença fundamental entre includee importé que você deve usar importpara se referir a declarações ou definições que estão em um espaço para nome de destino diferente e deve usar includepara se referir a declarações ou definições que estão (ou serão) no mesmo espaço para nome de destino.
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:
Eu acho que você quer dizer referir-se aos namespaces XML por URLs de localização e não por URI . Os URIs de namespace (ou seja, o namespaceatributo 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.
ddevienne
7
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.
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.
Respostas:
A diferença fundamental entre
include
eimport
é que você deve usarimport
para se referir a declarações ou definições que estão em um espaço para nome de destino diferente e deve usarinclude
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
fonte
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 .
fonte
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:
Inválido:
fonte
namespace
atributo de<xs:import>
) estão sempre OK e são considerados um identificador (apenas texto, não interpretado), enquanto oschemaLocation
(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, enquantoxsd:import
é para inclusão entre namespace.fonte
Citação direta do MSDN: Elemento <xsd: import>, seção Observações
fonte
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.
fonte