Qual è la differenza tra xsd: include e xsd: import?


Risposte:


205

La differenza fondamentale tra includee importè che è necessario utilizzare importper fare riferimento a dichiarazioni o definizioni che si trovano in uno spazio dei nomi di destinazione diverso e che è necessario utilizzare includeper 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



Il post stylusstudio a cui fa riferimento @Pops è qui: web.archive.org/web/20140831005739/http://xsd.stylusstudio.com/…
tony19


19

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

Penso che intendi fare riferimento a spazi dei nomi XML per URL di posizione piuttosto che per URI . Gli URI dello spazio dei nomi (ovvero l' namespaceattributo 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.
ddevienne,

7

Sono interessato anche a questo. L'unica spiegazione che ho trovato è quella xsd:includeusata per le inclusioni all'interno dello spazio dei nomi, mentre xsd:importper l'inclusione nello spazio dei nomi.


0

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.


-3

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.