このトピックでは、XML パーサーが明示的ヌルを処理する方法について説明します。
XML ドメインは、メッセージ・ビット・ストリーム内にヌル値の概念を持っていません。 XML パーサーがメッセージ・ツリー内に明示的なヌル値を作成することになるバイトのシーケンスは、XML メッセージ内にありません。パーサーは、明示的なヌル値を持つメッセージ・ツリー・フィールドを作成しませんが、この形式のフィールドを作成するメッセージ・フロー内の ESQL をコーディングすることができます。
XML パーサーは、メッセージ・ツリーから新規メッセージ・ビット・ストリームを構成する場合に、明示的なヌル値を見つける可能性があり、それらのヌル値を処理できなければなりません。 この状態では、明示的なヌル値は「書き込む文字はない」と見なされ、フィールドは空のタグとして作成されます。
XML ドメインでは、出力 XML メッセージに空の XML タグを書き出すことになるいくつかの値があります。
これらが XML メッセージ内に空のタグとして書き込まれると、XML メッセージが後で構文解析される場合、これらの 3 つのメッセージ・ツリー・フィールドを区別できません。 空のタグが XML 内で構文解析されると、値を持たない XML メッセージ・ツリー・フィールドが作成されます。これは、明示的なヌル値やゼロ長ストリングを含む、メッセージ・ツリー・フィールドとは異なっています。
XML パーサーは、メッセージ・ビット・ストリーム内でこれらの 3 つの異なるメッセージ・ツリー・フィールド値を同じ結果に解決しますが、他のメッセージ・ツリー操作は、これらのメッセージ・ツリー・フィールドを区別することができます。 XML パーサーは、明示的なヌルおよびゼロ長ストリングを含むフィールドを作成しませんが、その処理を行える操作をメッセージ・フロー内で実行することができます。
したがって、メッセージ・フローが XML ドメイン内のメッセージを処理する場合、ESQL または Java は、明示的なヌル値、ゼロ長ストリング、および値を持っていないメッセージ・ツリー・フィールドを区別しなければなりません。 ESQL をコーディングしてエレメントの値を照会する場合、明示的なヌル値を含むフィールドであっても、ヌルと見なされません。
XML 書き込みプロセスは、この条件を処理することができますが、ESQL 内の他の操作は、この条件をヌル値として処理しません。XML ドメインはヌルの概念を持っておらず、パーサーは、明示的なヌル値を含むフィールドを作成しません。 XML ドメインは文字ベースのドメインなので、フィールドの値が照会されるとき、結果を文字フィールドとして戻します。 明示的なヌル値を持つ XML メッセージ・ツリー・フィールドを作成する場合、これは、メッセージ・ツリー・フィールドの値を入手するそれらの ESQL ルーチンで、ヌル値と見なされません。
戻される値は、フィールドの内容の文字表現です。 この場合は、文字ストリング 'NULL' です。 例えば、IS NULL を使用してそのような比較を実行する場合、これは、TRUE 値に評価されません。 このメッセージ・ツリー・フィールドを別のメッセージ・ツリーにコピーする場合、ターゲット・メッセージ・ツリー・フィールドには、文字ストリング 'NULL' が取り込まれます。