あるメッセージ・モデル・スキーマ・ファイルまたはメッセージ定義ファイルが、別のファイルで定義されたメッセージ・モデル・オブジェクトを再利用できます。
メッセージ定義ファイルを再利用するために XML スキーマが提供する手段は、import と include です。 import コマンドと include コマンドのどちらを使用するかは、2 つのファイルのネーム・スペースが決定します。
ターゲット・ファイルにターゲットのネーム・スペースがある | ターゲット・ファイルに非ターゲットのネーム・スペースがある | |
---|---|---|
親ファイルにターゲットのネーム・スペースがある | xsd:import | xsd:include1 |
親ファイルに非ターゲットのネーム・スペースがある | xsd:import | xsd:include |
import または include が使用される場合、ターゲット・ファイルからのグローバル・オブジェクトを親ファイルで使用できます。 例えば、親ファイル内のエレメントに、ターゲット・ファイルで定義された複合タイプを指定することができます。
ターゲット・ファイル内のオブジェクトのネーム・スペースは親ファイルに保存されます。ただし前の表に記されている、非ターゲットのネーム・スペース・ファイルを組み込むターゲットのネーム・スペース・ファイルは例外です。 この例外は、カメレオン・ネーム・スペース効果と呼ばれることがあります。
メッセージ・モデル・スキーマ・ファイルは、同じアプリケーションまたはライブラリー内、または別のメッセージ・ブローカー・ライブラリー内の別のファイルをインポートするかまたは組み込むことができます。 メッセージ定義ファイルは、同じメッセージ・セットにある場合にのみ、別のファイルをインポートするかまたは組み込むことができます。
XML スキーマは、xsd:redefine と呼ばれる xsd:include のバリエーションを提供します。これは、メッセージ・モデル・スキーマ・ファイルを使用するときにはサポートされますが、メッセージ定義ファイルを使用するときにはサポートされません。 メッセージ定義ファイルを使用するときに、xsd:redefine の出現箇所を xsd:include に変換するためのクイック・フィックスが提供されています。