Show TOC

collapseContextsLocate this document in the navigation structure

Use

collapseContexts() copies the first value from all contexts to one context. Empty contexts are replaced with an empty string.

Figure 1: Replacing Empty Contexts With an Empty String

This can be useful if an upper-level node is to be created each time a lower-level node exists, for example. The function is useful in combination with the function SplitByValue() .

Example

In the following example, a separate upper-level element <destSub> is to be created in the target structure for each occurrence of element <srcItem> :

Source Structure (Left) and Target Structure (Right)

Field Name

minOccurs

maxOccurs

Field Name

minOccurs

maxOccurs

srcRoot

1

1

destRoot

1

1

srcSub

0

unbounded

destSub

0

unbounded

srcItem

0

unbounded

destItem

0

unbounded

This is achieved by using a combination of the functions SplitByValue() and collapseContexts() . To create a queue for <destItem> in which a context change is performed after each value, use removeContexts() and SplitByValue() . To create a queue with exactly as many context changes, but with empty values (the aim is to create the same number of upper-level tags without values), apply collapseContexts() to the same nesting of functions:

Message Mapping with collapseContexts() and SplitByValue()

Target Field Mapping

Value of SplitByValue()

/destRoot=/srcRoot

/destRoot/destSub= collapseContexts ( SplitByValue( removeContexts(/srcRoot/srcSub/SrcItem)))

Each Value

/destRoot/destSub/destItem= SplitByValue( removeContexts(/srcRoot/srcSub/SrcItem)))

Each Value

Example

Source Instance

Result

<?xml version="1.0" encoding="UTF-8"?>

<srcRoot>

<srcSub>

<srcItem> PID001 </srcItem> <srcItem> PID002 </srcItem>

</srcSub> <srcSub>

<srcItem> PID003 </srcItem> <srcItem> PID004 </srcItem> <srcItem> PID005 </srcItem>

</srcSub> <srcSub>

<srcItem> PID006 </srcItem> <srcItem> PID007 </srcItem>

</srcSub>

</srcRoot>

<?xml version="1.0" encoding="UTF-8"?>

<ns0:destRoot xmlns:ns0="workshopDemo">

<destSub>

<destItem> PID001 </destItem>

</destSub>

<destSub>

<destItem> PID002 </destItem>

</destSub>

<destSub>

<destItem> PID003 </destItem>

</destSub>

<destSub>

<destItem> PID004 </destItem>

</destSub>

<destSub>

<destItem> PID005 </destItem>

</destSub>

<destSub>

<destItem> PID006 </destItem>

</destSub>

<destSub>

<destItem> PID007 </destItem>

</destSub>

</ns0:destRoot>