MIME メッセージは、ブローカー内で論理ツリーとして表されます。 メッセージを書き込むとき、
MIME パーサーは論理メッセージ・ツリーを使用してメッセージ・ビット・ストリームを作成します。
論理ツリーのエレメント
MIME メッセージは、ブローカー内で以下のエレメントを持つ論理ツリーとして表されます。
- ツリーのルートは、MIME と呼ばれるノードです。
- すべての適切にフォーマット設定されたヘッダーが、
MIME 規格に準拠する場合もそうでない場合も、論理ツリーに保管されます。 これらのヘッダーは、以下に示すように論理ツリー内で name=value の形式で表示されます。
Content-Type=text/xml
- 複数パーツ MIME メッセージは、Parts と呼ばれるルート・ノードを持つサブツリーによって表されます。
- 複数パーツ MIME メッセージに関連した序文またはエピローグ・データは、
Parts の最初および最後の子として出現する値だけのエレメントによって表されます。
- 単一パーツの MIME の特殊例では、内容は Data と呼ばれるルートを持つサブツリーによって表されます。
- 複数パーツ MIME メッセージの各パーツは、MIME ヘッダーごとに子エレメントがあり、最後の子が Data という名の、Part と呼ばれるエレメントによって表されます。
- Data エレメントは、MIME パーツの内容を表しています。 これにより、Data エレメントは常にその親の最後の子となるので、
ESQL を使用して本文内容の存在をテストすることが容易になります。
MIME メッセージの書き込み
メッセージを書き込むとき、
MIME パーサーは論理メッセージ・ツリーを使用してメッセージ・ビット・ストリームを作成します。 MIME ドメインは、MIME 仕様で必要とされるすべての制約を実施しないので、
MIME 仕様に準拠しない MIME メッセージが生成されることもあります。 MIME パーサーで課される制約は、以下のとおりです。
- 論理ツリーのエレメントで説明されているように、
ツリーには、MIME と呼ばれるルート、および要素となる Parts、Part、および Data エレメントが必要です。
- ツリーの最上位には正確に 1 つの Content-Type ヘッダーが存在するか、
または ContentType プロパティーを使用して使用可能でなければなりません。 メディア・サブタイプは妥当性検査されません。
- メディア・タイプが multipart の場合、有効な境界パラメーターも存在する必要があります。
- 要素となる MIME パーツは、正確に 1 つの Content-Type ヘッダーを持つことが可能です。
このヘッダーの値が multipart から始まる場合、
それには有効な境界パラメーターも含まれている必要があります。 この境界パラメーターの値は、定義に含まれる他の境界パラメーター値と同じであることはできません。
- MIME Content-Type 値の『message』はサポートされていないので、実行時にエラーを生じます。
- ツリー内のすべての名前値エレメントは、name: value およびそれに続く ASCII シーケンス <CR><LF> として書き込まれます。
ツリー内に他のエレメントがある場合、パーサーは HTTP ヘッダー・パーサーと同じ方法で機能します。
- 名前だけのエレメント、または値が NULL の NameValue エレメントの場合、
Name: NULL となります。
- 名前値エレメントの子はいずれも無視されます。
メッセージ・フローは、サブツリーが存在する場合にそれをシリアライズする必要があります。
ESQL コマンド
ASBITSTREAM を使用できます。