I have an xml with following structure
<xml>
<object context="3-cumulative" >
<metadata>
<ref cite="4.2" relevance="first.2"/>
</metadata>
<body>
<para>
<text>
applicable on and after December 14,2007.
</text>
</para>
</body>
</object>
<object context="1-cumulative" >
<metadata>
<ref cite="4.2" relevance="first.1"/>
</metadata>
<body>
<para>
<text>
applicable on and after December 14,2006.
</text>
</para>
</body>
</object>
<object context="1-cumulative" >
<metadata>
<related-content-ref cite="5 annuity" relevance="first.1"/>
</metadata>
<body>
<para>
<text>
applicable on and after December 14, 2008
</text>
</para>
</body>
</object>
<mainbody>
<num cite="4.2">4.2</num>
<num cite="2" type="para">2</num>
<heading>Stock exchanges</heading>
<prov-body>
<text>
Notwithstanding the provisions of a convention ... as defined in the
<italic>Income Tax Act</italic>.
</text>
<prov>
<num cite="1 annuity"/>
<num cite="5 annuity"/>
<num cite="3 annuity"/>
<heading>“annuity”</heading>
<text>
<term>“annuity”</term>does not include any pension payment ...
</text>
<text>
any pension payment ...
</text>
</prov>
</prov-body>
</mainbody>
</xml>
I need, if any object/metadata/ref/@cite has been found in “mainbody” num/@cite and object/@context is ‘1-cumulative’ then para/text from object should copy at the end of first Text node and should be sort by object/metadata/ref/@relevance or if any object/metadata/ref/@cite has been found in “mainbody” num/@cite and object/@context is ‘3-cumulative’ then para/text from object should copy after the first Text node with it’s own Text elemet and should be sort by object/metadata/ref/@relevance
The output should be:
<xml>
<mainbody>
<num cite="4.2">4.2</num>
<num cite="2" type="para">2</num>
<heading>Stock exchanges</heading>
<prov-body>
<text>
Notwithstanding the provisions of a convention ... as defined in the
<italic>Income Tax Act</italic>.
**applicable on and after December 14, 2006**
</text>
<text> **applicable on and after December 14, 2007** </text>
<prov>
<num cite="1 annuity"/>
<num cite="5 annuity"/>
<num cite="3 annuity"/>
<heading>“annuity”</heading>
<text>
<term>“annuity”</term>does not include any pension payment ...
**applicable on and after December 14, 2008**
</text>
<text>
any pension payment ...
</text>
</prov>
</prov-body>
</mainbody>
</xml>
This transformation:
when applied on the provided XML document:
produces the wanted, correct result: