接頭部 "xsi" は、XML Schema namespace for instances の規則によって使用されるネーム・スペース接頭部です。
XML 文書には、xsi:type 属性を持つエレメントを含めることができます。
これは、エレメントの明示的データ・タイプを提供します。
MRM XML パーサーは、XML 文書内の xsi:type 属性の影響を受けます。
これは、エレメントのデータ・タイプを適宜変更して、xsi:type 属性をメッセージ・ツリーに追加します。
MRM XML 書き込み機能は、メッセージ・ツリー内の xsi:type 属性の影響を受けます。
これは、XML ワイヤー形式のメッセージ・セット・プロパティー「xsi:type 属性の出力ポリシー」に従って、xsi:type 属性を出力します。
例えば、xsi:type 属性を除去し、すべてのエレメントについて出力するか、または SOAP 標準で指定された規則に従って出力することができます。
妥当性検査が WebSphere Message Broker メッセージ・フローについて使用可能にされている場合、妥当性検査ロジックは xsi:type 属性の影響を受け、それらを使用してエレメントの妥当性検査を変更します。
また、World Wide Web Consortium (W3C) Web サイトの XML Schema Part 1: Structures で説明されている規則を使用して、xsi:type 属性の値を妥当性検査します。
xsi:type 属性を含む XML 文書の構文解析および書き込みを行う際に覚えておくべき、いくつかの重要なポイントがあります。
- xsi:type 属性を検出して使用するには、メッセージ・セットでネーム・スペースが使用可能にされている必要があります。
メッセージ・セットでネーム・スペースを使用可能にするには、メッセージ・セット・プロパティー「ネーム・スペースの使用」にチェック・マークを付けてください。
- xsi:type 属性の値にネーム・スペース接頭部が含まれる場合、その接頭部は MRM XML パーサーによって完全修飾 URI に拡張されます。
後で同じ xsi:type 属性が MRM XML 書き込み機能によって出力される場合、同じ接頭部が値に自動的に使用されることはありません。
XML ワイヤー・フォーマット・メッセージ・セット・プロパティーの「ネーム・スペースの設定」リストを使用して、出力で使用される接頭部を制御することができます。
接頭部が提供されない場合、XML 書き込み機能はデフォルト接頭部を割り当てます。
- エレメントの xsi:type 属性がモデル内のタイプに解決しない場合、MRM 妥当性検査が使用可能にされているかどうかによって、動作は異なります。
妥当性検査を行わない場合、MRM はエレメントのタイプがモデル内で宣言されているものと想定して、継続します。
妥当性検査を行う場合、妥当性検査例外がスローされます。
- MRM 妥当性検査が使用可能にされている場合、妥当性検査が実行される時点で、必要な xsi:type 属性すべてがメッセージ・ツリーに存在する必要があります。
xsi:type 属性の値が、メッセージ・モデルで定義されたエレメントのデータ・タイプと異なる場合、xsi:type 属性は必須です (XML スキーマ・タイプ導出を使用する場合に、これが最も一般的に起こります)。
- 妥当性検査が入力メッセージで実行されている場合、MRM XML パーサーは、上述のとおりに xsi:type 属性がメッセージ・ツリーに表示されるようにします。
- 妥当性検査が出力メッセージで実行されている場合、正しい xsi:type 属性がメッセージ・ツリーに表示されるようにする必要があります。
必要なすべての xsi:type 属性が入力メッセージ・ツリーから出力メッセージ・ツリーにコピーされるか、出力メッセージ・ツリーで明示的に作成されるようにしてください。
- xsd:unions である単純タイプを使用する場合、xsi:type 属性を使用して、共用体の解決時に MRM XML パーサーに送信することができます。
- WebSphere
Message Broker バージョン 6.0 を使用しており、xsi:type 属性の影響を受けない初期のバージョンからマイグレーションした場合、動作の変更に注意してください。
例えば、WebSphere
Message Broker バージョン 6.0 では、xsi:type 属性は自己定義属性として扱われないため、それらは‘@type’ではなく‘type’という名前でメッセージ・ツリーに表示されます。
メッセージ・フロー・ロジックがメッセージ・ツリー内で xsi:type 属性の影響を受ける場合、新しい動作に適合するようにメッセージ・フローを変更することをお勧めします。
WebSphere Message Broker の初期のバージョンからのロジックをメッセージ・フローに保存したい場合、これについてはメッセージ・フローのマイグレーションの注意事項で説明されています。
xsi:type 属性の詳細については、World Wide Web Consortium (W3C) Web サイトの XML Schema Part 0: Primer を参照してください。