前のリリースでは、メッセージ・モデルの複合タイプに単純タイプを組み込むことができました。 これにより、XML タグ間に発生する無名テキストをモデル化することが可能でした。 これらの単純タイプは、XML スキーマ単純タイプと区別するために、組み込み単純タイプと呼びます。 以前のリリースでモデル化し、mqsimigratemsgsets コマンドを使用してインポートしたメッセージを処理する場合にのみ、このトピックは適用されます。
MRM メッセージが論理ツリーに解析される場合、組み込み単純タイプには ESQL で固有に定義するための ID がありません。 組み込み単純タイプのデータの問い合わせまたは更新をしたい場合は、メッセージ中の他の既知のオブジェクトに関連して参照することが必要です。
例えば、テキスト Mr. Smith で組み込み単純タイプを更新したい場合、次の ESQL を Compute ノード に含めます。
SET OutputRoot.MRM.Person.*[3] = 'Mr.Smith';
このステートメントは、エレメント Person の 3 番目の子を Mr.Smith に設定します。 このステートメントはツリー中の無名エレメント (名前のない組み込み単純タイプ) をアドレッシングしているので、ツリーでのその位置が分かっている場合、その値を設定することしかできません。
次の MRM XML メッセージをご覧ください。
<Mess1> <Elem1>abc</Elem1> <Elem2>def<Child1>ghi</Child1></Elem2> </Mess1>
この XML メッセージを、以下のオブジェクトを使用して MRM でモデル化することができます。
「タイプ」プロパティーは tMess1 に設定されます。
「構成」プロパティーは Ordered Set に設定されます。
複合タイプには次のオブジェクトが含まれます。
「タイプ」プロパティーは、XML スキーマ単純タイプ xsd:string に設定されます。
「タイプ」プロパティーは複合タイプ tElem2 に設定されます。
「構成」プロパティーは Sequence に設定されます。
複合タイプには次のオブジェクトが含まれます。
「タイプ」プロパティーは、XML スキーマ単純タイプ xsd:string に設定されます。
tMess2 に組み込まれる組み込み単純タイプ ComIbmMRM_BaseValueString は、入力メッセージからデータ def を解析するのに使用されます。 出力上の組み込み単純タイプに関連するデータの値を変更する場合は、次の ESQL をコーディングしてください。
SET OutputRoot.MRM.Elem2.*[1] = 'xyz';
これによって、次の出力メッセージが生成されます。
<Mess1> <Elem1>abc</Elem1> <Elem2>xyz<Child1>ghi</Child1></Elem2> </Mess1>
このメッセージを MRM でモデリングしたくない場合、次の ESQL で同じ結果を達成することができます。
SET OutputRoot.XML.Elem2.*[1] = 'xyz';
組み込み単純タイプには、エレメントに備わるヌル処理のための機能がありません。 組み込み単純タイプをヌルに設定すると、メッセージ・ツリーから削除されます。
ESQL では、エレメント名は通常、MRM エレメントを参照し、更新するのに使用されます。 例外は、組み込み単純タイプがメッセージ中に存在する場合です。 複数パーツ・メッセージを使用している場合、メッセージがビット・ストリームの最初のメッセージ・オブジェクトでなければ、メッセージ名を指定して、組み込み単純タイプ参照をさらに修飾する必要があります。このことについては、MRM ドメインの組み込みメッセージへのアクセス でさらに説明されています。