[xquery-talk] recurrency
Michalmas
michalmas at gmail.com
Tue Mar 10 22:40:29 PST 2009
Hello guys,
I was trying to achieve recurrency in my code. However, it seemed to be
quite hard as there is no 'global' view of variable.
So fat, i developed simple replcement for that. But i believe it can be done
much simpler.
The XML looks like:
<testXML>
<system>
<node-name>
<name>name1</name>
<node-name>
<name>name2</name>
<node-name>
<name>name3</name>
<node-name>
<node-name>
<node-name>
</system>
</testXML>
The path to name3 can be given as name1/name2/name3, but slao as
name1/name3.
I wrote functions for going depper and deeper in the definition. Can it be
simplified?
declare function local:getNodeDefinitionOne($sys as item(), $node1 as
item())as item()*
{
let $processed := replace(data($node1), ' \(.*\)' , '')
let $res := testXML/$sys//node-name[data(name) = $processed]
return $res
};
declare function local:getNodeDefinitionTwo($sys as item(), $node1 as
item(), $node2 as item())as item()*
{
let $processed := replace(data($node2), ' \(.*\)' , '')
let $fir := local:getNodeDefinitionOne($sys, $node1)
let $res := $fir//node-name[data(name) = $processed]
return $res
};
declare function local:getNodeDefinitionThree($sys as item(), $node1 as
item(), $node2 as item(), $node3 as item())as item()*
{
let $processed := replace(data($node3), ' \(.*\)' , '')
let $fir := local:getNodeDefinitionTwo($sys, $node1, $node2)
let $res := $fir//node-name[data(name) = $processed]
return $res
};
declare function local:getNodeDefinitionFour($sys as item(), $node1 as
item(), $node2 as item(), $node3 as item(), $node4 as item() )as item()*
{
let $processed := replace(data($node4), ' \(.*\)' , '')
let $fir := local:getNodeDefinitionThree($sys, $node1, $node2, $node3)
let $res := $fir//node-name[data(name) = $processed]
return $res
};
declare function local:getNodeDefinitionFive($sys as item(), $node1 as
item(), $node2 as item(), $node3 as item(), $node4 as item(), $node5 as
item() )as item()*
{
let $processed := replace(data($node5), ' \(.*\)' , '')
let $fir := local:getNodeDefinitionFour($sys, $node1, $node2, $node3,
$node4)
let $res := $fir//node-name[data(name) = $processed]
return $res
};
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20090310/18ff2a6a/attachment.htm
More information about the talk
mailing list