[xquery-talk] recurrency
Michalmas
michalmas at gmail.com
Wed Mar 11 09:12:02 PST 2009
Hello,
Yes, indeed, i missed that. So, to make it complete:
<testXML>
<system>
<node-name>
<name>name1</name>
<addInfo>t11</addInfo>
<node-name>
<name>name2</name>
<addInfo>t22</addInfo>
<node-name>
<addInfo>t33</addInfo>
<name>name3</name>
<node-name>
<node-name>
<node-name>
</system>
</testXML>
Now, later in the same XML, it may be:
<somewhere-it-is-used>
<what-the-name--of-var-is>
<ref>name1</ref>
<ref>name3 'sdsdsd'</ref>
<what-the-name--of-var-is>
<somewhere-it-is-used>
And what i query for is the addInfo. When i see what-the-name--of-var-is
node, i want to use the ref values (this case name1/name3), and find the
type of last variable (name3 is used as last one - so it is final variable -
and i want its type - what is t33).
It may also happen that i see:
<somewhere-it-is-used>
<what-the-name--of-var-is>
<ref>name1</ref>
<what-the-name--of-var-is>
<somewhere-it-is-used>
and then i want to get t11.
The function i am not showing is simply iterating through all nodes
searching for somewhere-it-is-used. Then, base on count of ref elements, one
of the function for getting types is called.
And the queries i use:
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
};
Thanks!
On Wed, Mar 11, 2009 at 12:42 AM, David Carlisle <davidc at nag.co.uk> wrote:
>
>
> > The thing is that later in XML there can be referance to that fields:
> > <somewhere-it-is-used>
>
> sorry I really can not guess what you mean here, and I doubt anyone else
> on the list will be able to guess.
> Can you not post, to the list, a complete (but small) example of the
> input and say what result the query is supposed to produce, then
> probably someone would supply some xquery code.
>
>
> given your testXML node input in your original mail and
> the <somewhere-it-is-used> node in the last mail,
> what is supposed to be returned? perhaps ypu want the element
> <name>name3</name>
> or perhaps the element
> <node-name>
> <name>name3</name>
> <node-name>
> or perhaps you want something else entirely. I can't guess what you
> intend.
>
> David
>
>
> ________________________________________________________________________
> The Numerical Algorithms Group Ltd is a company registered in England
> and Wales with company number 1249803. The registered office is:
> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
>
> This e-mail has been scanned for all viruses by Star. The service is
> powered by MessageLabs.
> ________________________________________________________________________
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20090311/662c4ac1/attachment.htm
More information about the talk
mailing list