web-dev-qa-db-ja.com

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

xsd:includexsd:importの違いは何ですか?いつ他の代わりに一方を使用しますか、そしてそれはいつ重要ではありませんか?

182
Pops

includeimportの根本的な違いは、importを使用して、differentターゲット名前空間にある宣言または定義を参照する必要があることです。また、includeを使用して、sameターゲット名前空間にある(またはそうなる)宣言または定義を参照する必要があります。

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

189

xsd:includeを使用して、sameまたは名前空間なし。

xsd:importを使用して、different名前空間。

48
kjhughes

別の違いは、<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"/>
18
Zombies

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

7
Matt Luongo

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

include要素とimport要素の違いは、import要素は、異なるターゲット名前空間とinclude要素は、同じターゲット名前空間(または指定されたターゲット名前空間なし)を持つ他のスキーマドキュメントのスキーマコンポーネントを、含まれるスキーマに追加します。つまり、import要素を使用すると、任意のスキーマのスキーマコンポーネントを使用できます。 include要素を使用すると、インクルードされたスキーマのすべてのコンポーネントを包含スキーマに追加できます。

0
Mrinmoy Sarkar