WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

ヌル値の処理

ビジネス・メッセージは、空または特定の範囲外の値を持つフィールドを含む場合があります。 これらの場合、そのメッセージを受信するアプリケーションは、そのフィールドに値がないかのように取り扱うことが予期されています。 論理メッセージ・ツリーは、どのエレメントの値にも NULL を設定できるようにすることで、この概念をサポートしています。

ヌル値を表す方法

XML 文書においてヌル値を表す通常の方法は、エレメントや属性を空のままにしておくというものです。

例えば、次のようにします: <price></price> または <element price=""/>

xsi:nil 属性は、これをさらに明示的にする次のような方法を提供します: price=<xsi:nil="true"/>

ビジネス・メッセージの中には、ヌル値を表すために <price>-999</price> のような特殊な値を使用するものがあります。 DFDL パーサーおよび MRM パーサーではこのようなヌル表記方式がサポートされます。

ヌル値に対する DFDL パーサーのサポート

DFDL パーサーは、範囲外の値で表されるヌル値を検出することができます。ヌル値は DFDL スキーマで指定する必要があり、すべてのエレメントで同じにすることも、エレメントごとに別々にすることもできます。 DFDL では、これは nil 値 と呼ばれます。 DFDL パーサーは、構文解析の際に、メッセージ内の各エレメントの nil 値を検査します。 ビット・ストリーム内の値が DFDL スキーマの nil 値に一致した場合、DFDL パーサーはメッセージ・ツリー内の値を NULL に設定します。 メッセージ・ツリーをビット・ストリームに変換する際にも、同じ検査が実施されます。 メッセージ・ツリー内の値が NULL であれば、DFDL パーサーは DFDL スキーマからの nil 値を出力します。

詳しくは、DFDL 1.0 仕様のセクション 13.15 を参照してください。

ヌル値に関するグラフィカル・データ・マッパー・サポート

以下の XPath 関数を使用して、XML NULL 値をマッピングするための条件付き処理を実装します。
  • fn:empty は、エレメントの値が空かどうかをテストします。論理データ・ツリーの NULL 値は、空とみなされます。
  • fn:nilled は、XML エレメントに xsi:nil 属性が設定されているかどうかをテストします。
  • fn:exists は、エレメントが存在するかどうかをテストします。xsi:nil 属性が設定された XML エレメントは、存在していると見なされます。
ヌル値をマップする際には、以下の動作を考慮に入れてください。
  • 論理データ・ツリーの NULL 値を入力から出力にマッピングすると、空の値を持つ出力エレメントが生成されます。 エレメントがモデルでヌル可能として定義されている場合、xsi:nil 属性が設定された空の出力エレメントが生成されます。 ESQL NULL 値を戻すカスタム ESQL 関数を呼び出して出力エレメントが設定される場合にも、同じことが行われます。
  • 非 XML エレメント (DFDL メッセージ内の nil 値エレメントなど) に対して fn:nilled を使用する場合、エレメント値がヌルに設定されていれば fn:nilledtrue を返します。
  • Move 変換を使用して、xsi:nil 属性が設定されている入力 XML エレメントを、 スキーマでヌル可能と定義されている出力 XML エレメントにコピーした場合、xsi:nil 属性が設定された出力 XML エレメントが生成されます。
  • Move 変換を使用して、NULL 値を持つ入力エレメントを出力エレメントにコピーすると、空の値を持つ出力エレメントが設定されます。
  • また、Move 変換を使用して、非 XML 入力エレメントを、スキーマでヌル可能と定義されている出力 XML エレメントにコピーすると、出力 XML エレメントに xsi:nil 属性が設定されます。

ヌル値に対する ESQL サポート

ESQL を使用して、メッセージ・ツリー・エレメントの値を、次のように NULL に設定することができます:

SET OutputRoot.XMLNSC.myField VALUE = NULL;

これは、myField をメッセージ・ツリーから削除してしまう SET OutputRoot.XMLNSC.myField = NULL; とは異なることに注意してください。

Java を使用して同じ結果を得ることもできます。

ヌル値に対する XMLNSC パーサーのサポート

通常、XML パーサー (XMLNSC、XMLNS、および XML) は、メッセージ・ツリー中にヌル値を作成しません。空のエレメントまたは空の属性値は、メッセージ・ツリー中に単に空ストリング値しか生成しません。

妥当性検査が使用可能な場合、XMLNSC パーサーは入力文書中の xsi:nil 属性を検出して処理します。 xsi:nil 属性が 'true' に設定されていて、エレメントがヌル可能な場合、メッセージ・ツリー中のその属性の親エレメントにヌル値が与えられます。

空のエレメントおよびヌル値に対する XML パーサーのサポートの詳細については、XMLNSC の空のエレメントおよびヌル値およびXMLNS の空のエレメントおよびヌル値を参照してください。

ヌル値に対する MRM パーサーのサポート

XML 物理形式

MRM XML パーサーは、構文解析をする際に、入力 XML 文書中の xsi:nil 属性を検出して処理することができます。 xsi:nil 属性が 'true' に設定されていて、エレメントがヌル可能な場合、メッセージ・ツリー中のその属性の親エレメントにヌル値が与えられます。

MRM パーサーで xsi:nil サポートを使用可能にする方法については、メッセージ・セット: XML ヌルの処理に関するオプションを参照してください。

次のトピックでは、MRM パーサーでのヌル値の処理についての詳細情報が提供されます。

すべての物理形式

MRM パーサーは、範囲外の値で表されるヌル値を検出することができます。 ヌル値は、メッセージ・セットの物理形式で指定されなければなりません。

MRM パーサーは、構文解析の際に、メッセージ中の各エレメントにヌル値がないかを検査します。 ビット・ストリーム中の値が、メッセージ・セット中のヌル値に一致した場合、MRM パーサーはメッセージ・ツリー中の値を NULL に設定します。

メッセージ・ツリーをビット・ストリームに変換する際にも、同じ検査が実施されます。 メッセージ・ツリー中の値が NULL であれば、MRM パーサーはメッセージ・セットからヌル値を出力します。

ヌル値に対する JSON パーサーのサポート

JSON フォーマットは、JSON 値のタイプとして NULL をサポートしています。

ヌル値を持つオブジェクトが JSON メッセージに含まれる場合、JSON パーサーはメッセージ・ツリー中の値を NULL に設定します。

メッセージ・ツリー中のヌル値を持つエレメントを直列化するときに、JSON ビット・ストリームがヌル値を持つ JSON オブジェクトとして構成されます。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:46:23


概念トピック概念トピック | バージョン 8.0.0.5 | ac70560_