Hello,<br><br>Yes, indeed, i missed that. So, to make it complete:<br><br>&lt;testXML&gt;<br>   &lt;system&gt;<br>       &lt;node-name&gt;<br>           &lt;name&gt;name1&lt;/name&gt;<br>           &lt;addInfo&gt;t11&lt;/addInfo&gt;<br>
            &lt;node-name&gt;<br>
                   &lt;name&gt;name2&lt;/name&gt;<br>                   &lt;addInfo&gt;t22&lt;/addInfo&gt;<br>                   &lt;node-name&gt;<br>                            &lt;addInfo&gt;t33&lt;/addInfo&gt;<br>
                            &lt;name&gt;name3&lt;/name&gt;
<br>                    &lt;node-name&gt; 
<br>            &lt;node-name&gt;<br>       &lt;node-name&gt;<br>   &lt;/system&gt;<br>&lt;/testXML&gt;<br><br><br>Now, later in the same XML, it may be:<br>&lt;somewhere-it-is-used&gt;<br>   &lt;what-the-name--of-var-is&gt;<br>
        &lt;ref&gt;name1&lt;/ref&gt;<br>
        &lt;ref&gt;name3 &#39;sdsdsd&#39;&lt;/ref&gt;<br>   &lt;what-the-name--of-var-is&gt;<br>&lt;somewhere-it-is-used&gt;<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>&lt;somewhere-it-is-used&gt;<br>
   &lt;what-the-name--of-var-is&gt;<br>
        &lt;ref&gt;name1&lt;/ref&gt;<br>
   &lt;what-the-name--of-var-is&gt;<br>
&lt;somewhere-it-is-used&gt;<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), &#39; \(.*\)&#39; , &#39;&#39;)<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), &#39; \(.*\)&#39; , &#39;&#39;)<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), &#39; \(.*\)&#39; , &#39;&#39;)<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), &#39; \(.*\)&#39; , &#39;&#39;)<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), &#39; \(.*\)&#39; , &#39;&#39;)<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">&lt;<a href="mailto:davidc@nag.co.uk">davidc@nag.co.uk</a>&gt;</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>
&gt; The thing is that later in XML there can be referance to that fields:<br>
&gt; &lt;somewhere-it-is-used&gt;<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 &lt;somewhere-it-is-used&gt; node in the last mail,<br>
what is supposed to be returned? perhaps ypu want the element<br>
 &lt;name&gt;name3&lt;/name&gt;<br>
or perhaps the element<br>
<div class="im"> &lt;node-name&gt;<br>
   &lt;name&gt;name3&lt;/name&gt;<br>
&lt;node-name&gt;<br>
</div>or perhaps you want something else entirely. I can&#39;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>