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

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

属性およびエレメントへのアクセス

XMLNS パーサーは、作成するすべてのメッセージ・ツリー・エレメントにフィールド・タイプを設定します。

フィールド・タイプは、そのエレメントが表す XML 構成のタイプを示します。 XMLNS パーサーによって使用されるフィールド・タイプは、名前の接頭部に「XML」が付いた定数を使用して参照できます。 「XML」という接頭部の付いたフィールド・タイプ定数は、XMLNS および XML パーサーでのみ使用されます。XMLNSC または MRM パーサーでは無効です。

  XMLNS フィールド・タイプ定数
タグ XML.Element
属性
XML.Attribute 
XML.Attr

XMLNS パーサーは、フィールド・タイプをこのように使用することによって、同じ名前を持つエレメントと属性を区別することができます。

XML の例

<parent id="12345">
    <id>ABCDE</id>
</parent>

ESQL の例

SET value = FIELDVALUE(InputRoot.XMLNS.parent.(XML.Element)id)
結果 : value is 'ABCDE'

SET value = FIELDVALUE(InputRoot.XMLNS.parent.(XML.Attr)id)
結果 : value is '12345'

複数の属性にアクセスするために SELECT を使用する例

サンプル・メッセージでは、各 Item エレメント内の Title エレメントには、3 つの属性、Category、Form、および Edition があります。例えば、最初の Title エレメントは次のようになっています。
<Title Category="Computer" Form="Paperback" Edition="2">The XML Companion</Title>
エレメント InputRoot.XML.Invoice.Purchases.Item[1].Title には論理ツリーに 4 つの子、Category、Form、Edition、およびエレメント値 The XML Companion があります。
このエレメントの属性にアクセスする場合には、次の ESQL をコーディングできます。 コードのこの抽出により入力メッセージから属性を取り出し、それらを出力メッセージにエレメントとして作成します。 この例では、エレメント自体の値は処理しません。
-- Set the cursor to the first XML.Attribute of the Title.
-- Note the * after (XML.Attribute) meaning any name, because the name might not be known  
DECLARE cursor REFERENCE TO InputRoot.XMLNS.Invoice.Purchases.Item[1].Title.(XML.Attribute)*;  
WHILE LASTMOVE(cursor) DO     
-- Create a field with the same name as the XML.Attribute
-- and set its value to the value of the XML.Attribute                                             
  SET OutputRoot.XML.Data.Attributes.{FIELDNAME(cursor)} = FIELDVALUE(cursor);  
-- Move to the next sibling of the same TYPE to avoid the Title value        
-- which is not an XML.Attribute                                                 
  MOVE cursor NEXTSIBLING REPEAT TYPE; 
END WHILE;
この ESQL が Compute ノードで処理されると、次の出力メッセージが生成されます。
<Data>
  <Attributes>
    <Category>Computer</Category>
    <Form>Paperback</Form>
    <Edition>2</Edition>
  </Attributes>
</Data>
また SELECT ステートメントも使用できます。
SET OutputRoot.XMLNS.Data.Attributes[] =
  (SELECT FIELDVALUE(I.Title) AS title,
          FIELDVALUE(I.Title.(XML.Attribute)Category) AS category,
          FIELDVALUE(I.Title.(XML.Attribute)Form) AS form,
          FIELDVALUE(I.Title.(XML.Attribute)Edition) AS edition
     FROM InputRoot.XML.Invoice.Purchases.Item[] AS I); 
このステートメントによって、次の出力メッセージが生成されます。
<Data>
  <Attributes>
    <title>The XML Companion</title>
    <category>Computer</category>
    <form>Paperback</form>
    <edition>2</edition>
  </Attributes>
  <Attributes>
    <title>A Complete Guide to DB2 Universal Database</title>
    <category>Computer</category>
    <form>Paperback</form>
    <edition>2</edition>
  </Attributes>
  <Attributes>
    <title>JAVA 2 Developers Handbook</title>
    <category>Computer</category>
    <form>Hardcover</form>
    <edition>0</edition>
  </Attributes>
</Data>
SELECT を WHERE ステートメントで修飾して結果を限定し、WHILE ステートメントで生成した場合と同じ出力メッセージを取得するようにできます。 この 2 番目の例は、より少なく、より簡潔な ESQL で同じ結果を得られることを示しています。
SET OutputRoot.XMLNS.Data.Attributes[] =
  (SELECT FIELDVALUE(I.Title.(XML.Attribute)Category) AS category,
          FIELDVALUE(I.Title.(XML.Attribute)Form) AS form,
          FIELDVALUE(I.Title.(XML.Attribute)Edition) AS edition
     FROM InputRoot.XML.Invoice.Purchases.Item[] AS I)
     WHERE I.Title = 'The XML Companion'); 
このステートメントによって、次の出力メッセージが生成されます。
<Data>
  <Attributes>
    <Category>Computer</Category>
    <Form>Paperback</Form>
    <Edition>2</Edition>
  </Attributes>
  </Data>
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

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

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


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