xsd:includeとxsd:importの違いは何ですか?


回答:


205

基本的な違いincludeとは、importあなたが使用しなければならないということであるimportである宣言や定義を参照するために異なるターゲット名前空間とあなたが使用する必要がありますincludeしている(または予定)の宣言や定義を参照するために同じターゲット名前空間。

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



@Popsが参照するstylusstudioポストはここにある:web.archive.org/web/20140831005739/http://xsd.stylusstudio.com/...
tony19


19

別の違いは、<import>別の名前空間を参照してインポートできることです。<include>意図したインクルードスキーマのURIを参照することによってのみインポートを許可します。これは、内部の名前空間のインポートとは明らかに異なる違いです。

たとえば、xmlスキーマバリデーターは、名前空間によってすべてのスキーマの場所をすでに知っている場合があります。特に、URIによるXML名前空間の参照は、classpath://が何も意味しない場合、http://が許可されていない場合、または一部のURIがそれと同じことを指していない場合に、異なるシステムで問題になる可能性があることを考慮します。別のシステム。

有効なインポートと無効なインポートのコードサンプルには以下が含まれます。

有効:

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

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

無効:

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

URIではなく、ロケーションURLXML名前空間を参照していると思います。名前空間URI(つまりの属性)は常に問題なく、識別子(単なるテキストであり、解釈されない)と見なされますが、(URIではなくURL)は通常、解決するために処理する必要があります。そして確かに、Java固有のURL スキームは何も意味しない場合があります。しかし、このきちんとした選択のほかに、これは貴重なコメントです、ありがとう。namespace<xs:import>schemaLocationclasspath:
ddevienne

7

私もこれに興味があります。私が見つけた唯一の説明は、xsd:include名前空間内の包含に使用されているが、名前空間間の包含に使用されているというxsd:importことです。


0

MSDNからの直接の引用:<xsd:import>要素、備考セクション

含む要素およびインポート要素は、あるインポート要素は、異なるターゲット名前空間を持つスキーマ文書からスキーマコンポーネントへの参照を可能にし、含まれる要素は、同じターゲット名前空間(または全く指定されたターゲット名前空間を持つ他のスキーマ文書からスキーマコンポーネントを追加します)含むスキーマに。つまり、インポート要素を使用すると、任意のスキーマのスキーマコンポーネントを使用できます。含める要素はあなたが含むスキーマに含まれたスキーマのすべてのコンポーネントを追加することができます。


-3

xsd:includeを使用すると、外部スキーマドキュメントのすべての宣言と定義が現在のスキーマに取り込まれます。

xsd:importを使用して、別の名前空間からXSDを取り込み、既存のスキーマドキュメントを拡張して新しいスキーマを構築するために使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.