Risposte:
La differenza fondamentale tra include
e import
è che è necessario utilizzare import
per fare riferimento a dichiarazioni o definizioni che si trovano in uno spazio dei nomi di destinazione diverso e che è necessario utilizzare include
per fare riferimento a dichiarazioni o definizioni che si trovano (o saranno) nello stesso spazio dei nomi di destinazione.
Fonte: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm
Usa xsd: include per inserire un XSD dallo stesso o nessun namespace.
Usa xsd: import per inserire un XSD da uno spazio dei nomi diverso .
Un'altra differenza è che <import>
consente l'importazione facendo riferimento a un altro spazio dei nomi. <include>
consente l'importazione solo facendo riferimento a un URI dello schema include previsto. Questa è sicuramente un'altra differenza rispetto all'importazione inter-intra dello spazio dei nomi.
Ad esempio, il validatore di schemi xml potrebbe già conoscere le posizioni di tutti gli schemi in base allo spazio dei nomi . Soprattutto se si considera che il riferimento a spazi dei nomi XML da parte di URI può essere problematico su sistemi diversi in cui classpath: // non significa nulla o dove http: // non è consentito o dove alcuni URI non indicano la stessa cosa di un altro sistema.
Esempio di codice di importazioni valide e non valide e include:
Valido:
<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>
<xsd:include schemaLocation="classpath://mine.xsd"/>
Non valido:
<xsd:include namespace="some/name/space"/>
namespace
attributo di <xs:import>
) sono sempre OK e considerati come identificatore (solo testo, non interpretato), mentre schemaLocation
(un URL non un URI) deve essere in genere elaborato, per essere risolto. E in effetti, lo schemaclasspath:
URL specifico di Java potrebbe non significare nulla. Ma accanto a questa scelta accurata, questo è un commento prezioso, grazie.
Sono interessato anche a questo. L'unica spiegazione che ho trovato è quella xsd:include
usata per le inclusioni all'interno dello spazio dei nomi, mentre xsd:import
per l'inclusione nello spazio dei nomi.
Citazione diretta da MSDN: elemento <xsd: import>, sezione Note
La differenza tra l' elemento include e l' elemento import è che l' elemento import consente riferimenti a componenti dello schema da documenti dello schema con diversi spazi dei nomi di destinazione e l' elemento include aggiunge i componenti dello schema da altri documenti dello schema che hanno lo stesso spazio dei nomi di destinazione (o nessuno spazio dei nomi di destinazione specificato ) allo schema contenente. In breve, l' elemento import consente di utilizzare i componenti dello schema da qualsiasi schema; l' elemento include consente di aggiungere tutti i componenti di uno schema incluso allo schema contenente.
Usa xsd: include porta tutte le dichiarazioni e le definizioni di un documento di schema esterno nello schema corrente.
Usa xsd: import per inserire un XSD da uno spazio dei nomi diverso e utilizzato per creare un nuovo schema estendendo i documenti dello schema esistenti.