Quelle est la différence entre xsd: include et xsd: import?


Réponses:


205

La différence fondamentale entre includeet importest que vous devez utiliser importpour faire référence aux déclarations ou définitions qui se trouvent dans un espace de noms cible différent et que vous devez utiliser includepour faire référence aux déclarations ou définitions qui sont (ou seront) dans le même espace de noms cible.

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



Le post de stylusstudio auquel @Pops fait référence est ici: web.archive.org/web/20140831005739/http://xsd.stylusstudio.com/…
tony19


19

Une autre différence est que <import>permet l'importation en se référant à un autre espace de noms. <include>autorise uniquement l'importation en se référant à un URI du schéma d'inclusion prévu. C'est certainement une autre différence que l'importation d'espace de noms inter-intra.

Par exemple, le validateur de schéma xml peut déjà connaître déjà les emplacements de tous les schémas par espace de noms . Surtout si l'on considère que la référence aux espaces de noms XML par URI peut être problématique sur différents systèmes où classpath: // ne veut rien dire, ou où http: // n'est pas autorisé, ou où certains URI ne pointent pas vers la même chose que sur un autre système.

Échantillon de code d'importations valides et non valides et comprend:

Valide:

<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>

<xsd:include schemaLocation="classpath://mine.xsd"/>

Invalide:

<xsd:include namespace="some/name/space"/>

Je pense que vous voulez dire faire référence aux espaces de noms XML par URL de localisation plutôt que par URI . Les URI d'espace de noms (c'est-à-dire l' namespaceattribut de <xs:import>) sont toujours OK et considérés comme un identifiant (juste du texte, non interprété), tandis que schemaLocation(une URL et non un URI) doit généralement être traité pour être résolu. Et là, en effet, le schéma d'classpath: URL spécifique à Java peut ne rien signifier. Mais à côté de ce choix soigné, c'est un commentaire précieux, merci.
ddevienne

7

Cela m'intéresse également. La seule explication que j'ai trouvée est qu'elle xsd:includeest utilisée pour les inclusions intra-espace de noms, tandis que xsd:importc'est pour l'inclusion inter-espaces de noms.


0

Devis direct de MSDN: élément <xsd: import>, section Remarques

La différence entre l' élément include et l' élément import est que l' élément import permet des références aux composants de schéma à partir de documents de schéma avec des espaces de noms cibles différents et l' élément include ajoute les composants de schéma à partir d'autres documents de schéma qui ont le même espace de noms cible (ou aucun espace de noms cible spécifié ) au schéma conteneur. En bref, l' élément d' importation vous permet d'utiliser des composants de schéma à partir de n'importe quel schéma; l' élément include vous permet d'ajouter tous les composants d'un schéma inclus au schéma conteneur.


-3

Utiliser xsd: include regroupe toutes les déclarations et définitions d'un document de schéma externe dans le schéma actuel.

Utilisez xsd: import pour importer un XSD à partir d'un espace de noms différent et utilisé pour créer un nouveau schéma en étendant les documents de schéma existants.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.