WebSphere Message Broker, Version 8.0.0.7 Operating Systems: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

See information about the latest product version

Mapping between a list and a repeating element

This task shows how to map between a list and a repeating element.

Consider the form of the following XML input message:
   <MRM>
     <inner>abcde fghij 12345</inner>
   </MRM> 
where the element inner is of type xsd:list, and therefore has three associated string values, rather than a single value.
To copy the three values into an output message, where each value is associated with an instance of repeating elements as shown here:
   <MRM>
     <str1>abcde</str1>
     <str1>fghij</str1>
     <str1>12345</str1>
   </MRM> 
you might expect that the following ESQL syntax works:
   DECLARE D INTEGER;
   SET D = CARDINALITY(InputBody.str1.*[]);
   DECLARE M INTEGER 1;
   WHILE M <= D DO
      SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
      SET M = M + 1;
   END WHILE;
However, the statement:
	SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];
requests a tree copy from input to output. Because the output element does not yet exist, the statement creates it, and its value and type are set from the input.
Therefore, to create the output message with the required format, given an input element which is of type xsd:list, use the FIELDVALUE function to explicitly retrieve only the value of the input element:
	SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);
Notices | Trademarks | Downloads | Library | Support | Feedback

Copyright IBM Corporation 1999, 2016Copyright IBM Corporation 1999, 2016.

        
        Last updated:
        
        Last updated: 2016-05-23 14:47:15


Task topicTask topic | Version 8.0.0.7 | ak20820_