Please consider this naive example:
let $Best := <root>
<p name='p1'>
<s name='s1'>
<line nr='1' ci='0'/>
<line nr='2' ci='10'/>
</s>
<s name='s2'>
<line nr='5' ci='2'/>
<line nr='6' ci='3'/>
</s>
</p>
<p name='p2'>
<s name='s1'>
<line nr='34' ci='0'/>
<line nr='35' ci='1'/>
</s>
<s name='s2'>
<line nr='37' ci='2'/>
<line nr='38' ci='3'/>
</s>
</p>
<root>
let $Least :=
<root>
<p name='p1'>
<s name='s1'>
<line nr='1' ci='15'/>
<line nr='2' ci='1'/>
</s>
<s name='s2'>
<line nr='5' ci='2'/>
<line nr='6' ci='5'/>
</s>
</p>
<p name='p2'>
<s name='s1'>
<line nr='34' ci='0'/>
<line nr='35' ci='0'/>
</s>
<s name='s2'>
<line nr='37' ci='1'/>
<line nr='38' ci='7'/>
</s>
</p>
<root>
These nodes have the same tag structure and the same attribute values except for the value of attribute "ci". I need a xquery function that builds a new node $Result from $Best replacing every its node "line" that has attribute "ci" less than the value of same attribute "ci" of the corresponding node "line" of $Least :
$Result := <root>
<p name='p1'>
<s name='s1'>
<line nr='1' ci='15'/>
<line nr='2' ci='10'/>
</s>
<s name='s2'>
<line nr='5' ci='2'/>
<line nr='6' ci='5'/>
</s>
</p>
<p name='p2'>
<s name='s1'>
<line nr='34' ci='0'/>
<line nr='35' ci='1'/>
</s>
<s name='s2'>
<line nr='37' ci='2'/>
<line nr='38' ci='7'/>
</s>
</p>
<root>
Thank you in advance for your help.