XML メッセージのパスおよびタイプの操作

XML メッセージ本体内のエレメントを参照または設定する場合、ESQL フィールド参照で正確なフィールド・タイプ定数を使用してエレメントを扱う必要があります。

次の表には、有効なすべてのエレメントのフィールド・タイプ定数がリストされています。

構文エレメント フィールド・タイプ定数
CDataSection (XML.CDataSection)
Comment (XML.Comment)
Content

(XML.Content)
(XML.pcdata) もサポートされます

Element

(XML.Element)
(XML.tag) もサポートされます

EntityReferenceEnd (XML.EntityReferenceEnd)
EntityReferenceStart (XML.EntityReferenceStart)
ProcessingInstruction (XML.ProcessingInstruction)
WhiteSpace (XML.WhiteSpace)

パス・エレメントにタイプが存在しないのであれば、構文エレメントのタイプは重要ではありません。 つまり、name のパス・エレメントは、エレメント・タイプに関係なく、name という名前を持つ構文エレメントと一致することになります。 パス・エレメントがタイプではなく名前を指定するのと同様に、名前ではなくタイプを指定することもできます。 この種のパス・エレメントは、名前に関係なく、指定したタイプを持つ構文エレメントと一致します。 次の例をご覧ください。

 FIELDNAME(InputBody.(XML.Element)[1])

この例では、メッセージの本体の最初のエレメントの名前を戻します。 次のような汎用 XML の例は、タイプをパスで使用する必要がある場合を示しています。

<tag1 attr1='abc'>
  <attr1>123<attr1>
</tag1>

パス InputBody.tag1.attr1 は、attr1 という属性を参照します。 なぜなら属性は、XML パーサーによって生成される構文ツリー中のネストされたエレメントの前に現れるからです。 attr1 というエレメントを参照するには、次のパスを使用する必要があります。

InputBody.tag1.(XML.Element)attr1

どの構文エレメントが参照されているかを明示するために、このような場合は常にタイプを含めるようにしてください。

この場合、次の ESQL は、

SET OutputRoot.XML.Element1.(XML.Element)Attribute1 = '123';

これは、次の完全修飾パスの簡略形式です。

SET OutputRoot.XML.(XML.Element)Element1.(XML.Element)Attribute1.
	(XML.Content) = '123';

次の XML をご覧ください。

 <?xml version="1.0"?>
<!DOCTYPE Order SYSTEM "Order.dtd">
<Order>
   <ItemNo>1</ItemNo>
   <Quantity>2</Quantity>
</Order>

InputBody.Order というパスは、(XML.DocTypeDecl) 構文エレメントを参照します。なぜならこれは、構文ツリー内で XML 本体の前に現れており、同じ名前になっているからです。 ItemNo というエレメントを参照するには、InputBody.(XML.Element)Order.ItemNo というパスを使用します。 例えば、次の XML 入力メッセージについて考慮します。

<doc><i1>100</i1></doc>

112233<i1> に割り当てるには、次のような ESQL 式を使用します。

SET OutputRoot.XML.(XML.Element)doc.I1=112233;
関連概念
メッセージ・フローの概要
ESQL の概要
メッセージのモデル化
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理
XML メッセージの属性へのアクセス
XML メッセージでの XmlDecl へのアクセス
XML メッセージでの DocTypeDecl へのアクセス
関連資料
Compute ノード
ESQL 参照
FIELDNAME 関数
SET ステートメント
ESQL フィールド参照の概要
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:42:53

ac17280_