Example: Repeating elements in messages
A common use of repeating elements would be to populate tags with lists of data or generate repeating XML elements. The following example illustrates how to do both.
The test that is used to write tag lists and generate repeating XML elements is shown.
Now, each component of the test is described to help illustrate the actions that take place in each one.
Test data set
An Excel test data set is created by using the spreadsheet data that are shown earlier. The data preview is shown.
Lookup test data action
The Lookup Test Data action scans the selected test data set and looks up values that match an id of 2.
In the example, the two rows of data that have an id of 2 are returned.
The action is configured to store all matching rows, which means it writes tag lists instead of single values. Additionally, all of the columns from the test data set are mapped to tags of the same name.
<5 yes <10 no <15 maybe <20 no 200 ask again * yes
On the Store page, change the Output format option to Store one matching row only. Comparisons are evaluated from left to right and stop as soon as a match is found. The following table shows example results.
Input | Result | Comments |
---|---|---|
7 |
no |
The number 7 is not less than five, but is less than 10. |
50 |
yes |
The number 50 does not match any of the specified values, and so passes through to the * (representing any value). |
200 |
ask again |
The number 200 is an exact match. Note that
this is not written with an operator, such as =200. |
A |
yes |
Numeric comparison fails, so the test falls back to string matching, and A matches *. |
Publish
The Publish action contains an XML message to which the schema is applied. The transport that is used for publishing is not important for the example. Each available field in the message is quick tagged. This means, the contents of the field are set to a tag that matches the name of the element. The fields within the data set that contain repeating elements are marked as such.
Log actions
- What is being mapped into the specified tags
- The XML that is being generated from the lookup
Output
- The fields in the data set in the rows that match an "id" of 2 are mapped to the specified tags.
- The XML of the full message (based on the matching rows) is mapped to the %%text%% tag.
The output of the first log, containing the tag lists, is shown.
As you can see, all of the tags were written as lists, and Order ID and Person contained null values in the second row of data.
The dynamic XML, generated in the message according to the matching rows in the data set, is shown.
<order orderid="002">
<orderperson>James</orderperson>
<item>
<title>Book21</title>
<quantity>3</quantity>
<price>5.0</price>
</item>
<item>
<title>Book22</title>
<quantity>5</quantity>
<price>100.0</price>
</item>
<total>515.0</total>
<address addresstype="billing">
<town>luton</town>
</address>
</order>
Note the 2 "item" elements, created from the 2 rows of data that match an "id" of 2 from the Lookup Test Data action.