I need to do a specific XQuery Transformation, in an OSB flow.
Input has this form :
<OBJECT_1>
<item> // multiplicy : *
<MONTH>
<INFO_11/>
<INFO_12/>
</item>
</OBJECT_1>
<OBJECT_2>
<item> // multiplicy : *
<INFO_21/>
<INFO_22/>
<MONTH/>
</item>
</OBJECT_2>
The target output has this structure :
<object1> // multiplicy : *
<month>
<info11/>
<info12/>
<object2> // multiplicy : *
<info21/>
<info22/>
</object2>
</object1>
For the moment my xquery looks like:
declare function xf:myTransformation($z_SOURCE1 as element(ns1:SOURCE))
as element(ns0:targetService) {
<ns0:targetService>
<myFlow>
{
for $item in $z_SOURCE1/ns1:OBJECT_1/ns1:item
return
<object1>
{
for $MONTH in $item/ns1:MONTH
return
<month>{ data($MONTH) }</month>
}
{
for $INFO_11 in $item/ns1:INFO_11
return
<info11>{ data($INFO_11) }</info11>
}
{
for $INFO_12 in $item/ns1:INFO_12
return
<info12>{ data($INFO_12) }</info12>
}
{
for $item0 in $z_SOURCE1/ns1:OBJECT_2/ns1:item
return
{
for $INFO_21 in $item0/ns1:INFO_21
return
<info21>{ data($INFO_21) }</info21>
}
{
for $INFO_22 in $item0/ns1:INFO_22
return
<info21>{ data($INFO_22) }</info22>
}
</object1>
}
</myFlow>
</ns0:targetService>
};
As you can see, there is no "matching" between OBJECT_1 and OBJECT_2...
How can I "find" in OBJECT_2 list the objects that match the object1 month key (in SQL : OBJECT_1.MONTH=OBJECT_2.MONTH
) ?
While building the OBJECT_1, can I walk into the OBJECT_2 list to find the keys I need ?