Accessing attributes in a message in the MRM domain
When an MRM message is parsed into a logical tree, attributes
and the data that they contain are created as name-value pairs in
the same way that MRM elements are. The ESQL that you code to interrogate
and update the data held in attributes refers to the attributes in
a similar manner.
Consider the sample
MRM message. The attribute LastName is defined as a child of the Name
element in the Customer message.
Here is an example input XML message:
<Customer xmlns:addr="http://www.ibm.com/AddressDetails"
xmlns:brw="http://www.ibm.com/BorrowedDetails">
<Name LastName="Bloggs">
<Title>Mr</Title>
<FirstName>Fred</FirstName>
</Name>
<addr:Address>
<HouseNo>13</HouseNo>
<Street>Oak Street</Street>
<Town>Southampton</Town>
</addr:Address>
<ID>P</ID>
<PassportNo>J123456TT</PassportNo>
<brw:Borrowed>
<VideoTitle>Fast Cars</VideoTitle>
<DueDate>2003-05-23T01:00:00</DueDate>
<Cost>3.50</Cost>
</brw:Borrowed>
<brw:Borrowed>
<VideoTitle>Cut To The Chase</VideoTitle>
<DueDate>2003-05-23T01:00:00</DueDate>
<Cost>3.00</Cost>
</brw:Borrowed>
<Magazine>0</Magazine>
</Customer>
When the input message is parsed, values are stored in
the logical tree as shown in the following section of user trace:
(0x0100001B):MRM = (
(0x01000013):Name = (
(0x0300000B):LastName = 'Bloggs'
(0x0300000B):Title = 'Mr'
(0x0300000B):FirstName = 'Fred'
)
(0x01000013)http://www.ibm.com/AddressDetails:Address = (
(0x0300000B):HouseNo = 13
(0x0300000B):Street = 'Oak Street'
(0x0300000B):Town = 'Southampton'
)
(0x0300000B):ID = 'P'
(0x0300000B):PassportNo = 'J123456TT'
(0x01000013)http://www.ibm.com/BorrowedDetails:Borrowed = (
(0x0300000B):VideoTitle = 'Fast Cars'
(0x0300000B):DueDate = TIMESTAMP '2003-05-23 00:00:00'
(0x0300000B):Cost = 3.50
)
(0x01000013)http://www.ibm.com/BorrowedDetails:Borrowed = (
(0x0300000B):VideoTitle = 'Cut To The Chase '
(0x0300000B):DueDate = TIMESTAMP '2003-05-23 00:00:00'
(0x0300000B):Cost = 3.00
)
(0x0300000B):Magazine = FALSE
The following ESQL changes the value of the LastName
attribute in the output message:
SET OutputRoot.MRM.Name.LastName = 'Smith';
Be aware of the ordering of attributes when you code
ESQL. When attributes are parsed, the logical tree inserts the corresponding
name-value before the MRM element's child elements. In the previous
example, the child elements Title and FirstName appear in the logical
message tree after the attribute LastName. In the Broker Application Development perspective, the Outline view displays
attributes after the elements. When you code ESQL to construct output
messages, you must define name-value pairs for attributes before any
child elements.
No comments:
Post a Comment