XMLNS パーサーは、作成するすべてのメッセージ・ツリー・エレメントにフィールド・タイプを設定します。
フィールド・タイプは、そのエレメントが表す XML 構成のタイプを示します。 XMLNS パーサーによって使用されるフィールド・タイプは、名前の接頭部に「XML」が付いた定数を使用して参照できます。 「XML」という接頭部の付いたフィールド・タイプ定数は、XMLNS および XML パーサーでのみ使用されます。XMLNSC または MRM パーサーでは無効です。
XMLNS フィールド・タイプ定数 | |
---|---|
タグ | XML.Element |
属性 |
|
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'
<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 があります。-- 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;
<Data>
<Attributes>
<Category>Computer</Category>
<Form>Paperback</Form>
<Edition>2</Edition>
</Attributes>
</Data>
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>
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>