アプリケーションがブローカーにメッセージを送信するときのそのメッセージ・データの解釈の仕方は、メッセージ内容そのものと、メッセージ・フローの構成によって異なります。XML 物理形式で調整された汎用 XML パーサーまたは MRM パーサーのいずれかによって解釈されるメッセージをアプリケーションが送信する場合、アプリケーションは、XML スキーマ・プリミティブ日時データ・タイプによって表現される日付または時刻のデータを組み込むことができます。
データの各部分の XML スキーマ・データ・タイプは ESQL データ・タイプに変換され、論理メッセージ・ツリーに作成されるエレメントは変換されたタイプとなります。入力メッセージ内の日時データが選択されたスキーマ・データ・タイプの規則と一致しない場合、メッセージが MRM ドメインにあり、入力メッセージに対して妥当性検査されるようにメッセージ・フローを構成したとしても、パーサーが論理メッセージ・ツリーに書き込む値は変更されます。(妥当性検査は汎用 XML メッセージでは使用できません。)
これは、入力日時データのサブフィールドに対して次のような影響を与えます。
次の例はこれらの点を説明しています。
入力データ XML スキーマ・データ・タイプ | スキーマ規則 | ビット・ストリームの入力値 | 論理ツリーに書き込まれる値 (ブラケットの ESQL データ・タイプ) |
---|---|---|---|
xsd:dateTime | CCYY-MM-DDThh:mm:ss | 2002-12-31T23:59:59 | 2002-12-31 23:59:59 (TIMESTAMP) |
--24 | 1970-01-24 (DATE) | ||
23:59:59 | 23:59:59 (TIME) | ||
xsd:date | CCYY-MM-DD | 2002-12-31 | 2002-12-31 (DATE) |
2002-12-31T23:59:59 | 2002-12-31 (DATE) | ||
-06-24 | 1970-06-24 (DATE) | ||
xsd:time | hh:mm:ss | 14:15:16 | 14:15:16 (TIME) |
xsd:gDay | ---DD | ---24 | 1970-01-24 (DATE) |
xsd:gMonth | --MM | --12 | 1970-12-01 (DATE) |
xsd:gMonthDay | --MM-DD | --12-31 | 1970-12-31 (DATE) |
xsd:gYear | CCYY | 2002 | 2002-01-01 (DATE) |
xsd:gYearMonth | CCYY-MM | 2002-12 | 2002-12-01 (DATE) |
使用するスキーマ日時データ・タイプを検討するときは、メッセージが MRM ドメイン内にありメッセージを妥当性検査するようメッセージ・フローを構成する場合に欠落サブフィールドによって妥当性検査例外が発生する可能性があることを思いに留めてください。
スキーマ・データ・タイプ Gday、gMonth、gMonthDay、gYear、および gYearMonth は、特定の反復期間の記録に使用されます。妥当性検査がオンになっていると混乱が生じる可能性があります。なぜなら、これらのスキーマ・データ・タイプの中で使用される反復期間は、ESQL によって、時刻の特定のポイントとして保管されるからです。
例えば、その月の 24 日 (これは gDay (月々の日付) タイプ) が論理ツリーに書き込まれる際、欠落する月と年のサブフィールドがエポック (1970 年 1 月) から提供され、特定の日付 1970-01-24 が出されます。10 日のインターバルを追加するなどしてこの日付を扱うよう ESQL をコーディングし、妥当性検査される出力メッセージを生成する場合、例外が出されます。これは、計算結果が、日付の月サブフィールドがエポックの日付と一致しないために無効となっている 1970-02-03 であるためです。