Loop Compatibility
Let's go through a couple of examples to demonstrate loop compatibility. Suppose you have an input structure that looks like this:
Document Element1 LoopA (0:-1) ElementA1 ElementA2 LoopB (0:-1) ElementB1
In this structure, LoopA and LoopB loop, and the other elements don't. Now suppose you create a map that has this structure as both the input and output. What happens if you map input ElementA1 to output ElementA1 but map input ElementB1 to output ElementA2? This does not make any sense, because when you initially map input ElementA1 to output ElementA1, the Editor calculates that output LoopA loops using input LoopA. Then when you map ElementB1 to ElementA2, the Editor cannot know which values of ElementB1 to select. This is an instance of two map elements that have incompatible loops. If you attempt to make such a mapping, the Editor will give you an error and not allow the mapping.
Let's consider another case. Suppose you first map input Element1 to output ElementA1. The Editor will calculate that output LoopA loops with the Document element, since Element1's nearest enclosing looping element is Document. Now you map input ElementA2 to output ElementA2. What you intend is for the output LoopA to loop using the input LoopA, but currently the output LoopA is looping with the input Document. In this case, the Editor will point out this fact, and ask if you want to change the output LoopA to loop as the input LoopA.
Loops are compatible when input map element A is enclosed in looping map element AI, and input map element B is enclosed in looping map element BI, and if BI is either the same map element or an ancestor map element of AI, map element A is loop compatible with map element B. Otherwise, they are not loop compatible.