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