Hello,<br><br>Yes, indeed, i missed that. So, to make it complete:<br><br><testXML><br> <system><br> <node-name><br> <name>name1</name><br> <addInfo>t11</addInfo><br>
<node-name><br>
<name>name2</name><br> <addInfo>t22</addInfo><br> <node-name><br> <addInfo>t33</addInfo><br>
<name>name3</name>
<br> <node-name>
<br> <node-name><br> <node-name><br> </system><br></testXML><br><br><br>Now, later in the same XML, it may be:<br><somewhere-it-is-used><br> <what-the-name--of-var-is><br>
<ref>name1</ref><br>
<ref>name3 'sdsdsd'</ref><br> <what-the-name--of-var-is><br><somewhere-it-is-used><br><br><br>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).<br>
<br>It may also happen that i see:<br><somewhere-it-is-used><br>
<what-the-name--of-var-is><br>
<ref>name1</ref><br>
<what-the-name--of-var-is><br>
<somewhere-it-is-used><br><br>and then i want to get t11.<br><br>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.<br>
<br>And the queries i use:<br><br>declare function local:getNodeDefinitionOne($<div id=":yf" class="ii gt">sys as item(), $node1 as item())as item()*<br>{<br> let $processed := replace(data($node1), ' \(.*\)' , '')<br>
let $res := testXML/$sys//node-name[data(name) = $processed]<br>
return $res<br>};<br><br>declare function local:getNodeDefinitionTwo($sys as item(), $node1 as item(), $node2 as item())as item()*<br>{<br> let $processed := replace(data($node2), ' \(.*\)' , '')<br>
let $fir := local:getNodeDefinitionOne($sys, $node1)<br> let $res := $fir//node-name[data(name) = $processed]<br> return $res<br>};<br><br>declare function local:getNodeDefinitionThree($sys as item(), $node1 as item(), $node2 as item(), $node3 as item())as item()*<br>
{<br> let $processed := replace(data($node3), ' \(.*\)' , '')<br> let $fir := local:getNodeDefinitionTwo($sys, $node1, $node2)<br> let $res := $fir//node-name[data(name) = $processed]<br> return $res<br>
};<br><br>declare function local:getNodeDefinitionFour($sys as item(), $node1 as item(), $node2 as item(), $node3 as item(), $node4 as item() )as item()*<br>{<br> let $processed := replace(data($node4), ' \(.*\)' , '')<br>
let $fir := local:getNodeDefinitionThree($sys, $node1, $node2, $node3)<br> let $res := $fir//node-name[data(name) = $processed]<br> return $res<br>};<br><br>declare function local:getNodeDefinitionFive($sys as item(), $node1 as item(), $node2 as item(), $node3 as item(), $node4 as item(), $node5 as item() )as item()*<br>
{<br> let $processed := replace(data($node5), ' \(.*\)' , '')<br> let $fir := local:getNodeDefinitionFour($sys, $node1, $node2, $node3, $node4)<br> let $res := $fir//node-name[data(name) = $processed]<br>
return $res<br>};</div><br>Thanks!<br><br><div class="gmail_quote">On Wed, Mar 11, 2009 at 12:42 AM, David Carlisle <span dir="ltr"><<a href="mailto:davidc@nag.co.uk">davidc@nag.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
<br>
> The thing is that later in XML there can be referance to that fields:<br>
> <somewhere-it-is-used><br>
<br>
</div>sorry I really can not guess what you mean here, and I doubt anyone else<br>
on the list will be able to guess.<br>
Can you not post, to the list, a complete (but small) example of the<br>
input and say what result the query is supposed to produce, then<br>
probably someone would supply some xquery code.<br>
<br>
<br>
given your testXML node input in your original mail and<br>
the <somewhere-it-is-used> node in the last mail,<br>
what is supposed to be returned? perhaps ypu want the element<br>
<name>name3</name><br>
or perhaps the element<br>
<div class="im"> <node-name><br>
<name>name3</name><br>
<node-name><br>
</div>or perhaps you want something else entirely. I can't guess what you<br>
intend.<br>
<div><div></div><div class="h5"><br>
David<br>
<br>
<br>
________________________________________________________________________<br>
The Numerical Algorithms Group Ltd is a company registered in England<br>
and Wales with company number 1249803. The registered office is:<br>
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.<br>
<br>
This e-mail has been scanned for all viruses by Star. The service is<br>
powered by MessageLabs.<br>
________________________________________________________________________<br>
</div></div></blockquote></div><br>