Hello guys,<br><br>thanks a lot!<br><br>Both solutions seems to be ok (i only had to fix some typos in Michael's solution, like missing '"' or too many ')' :P). The main purpose is, as Micheal guessed, histogram of some nodes.<br>
<br>Best,<br>M.<br><br><br><br><div class="gmail_quote">On Mon, Mar 9, 2009 at 12:29 AM, Michael Kay <span dir="ltr"><<a href="mailto:mike@saxonica.com">mike@saxonica.com</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>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial">Is "someStr" the same element name throughout? If so, it
looks like this:</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial"></font></span> </div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial">declare function local:depth($e as element(*)) as
xs:integer {</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial">
count($e/ancestor::*[node-name(.)=node-name($e)]</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial">};</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial"></font></span> </div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial">declare function local:histogram($root as
element(mainNode), $name as xs:QName) as element(count)*</font></span></div>
<div dir="ltr" align="left"><span><font color="#0000ff" size="2" face="Arial"> for $d in
distinct-values(mainNode//*[node-name()=$s]/local:depth(.)) </font></span></div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span> return <count element="{$name}"
depth="{$d}
count="{count(mainNode//*[node-name()=$name][local:depth(.)=$d]))</span></font></font></font></div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span>}</span></font></font></font></div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span></span></font></font></font> </div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span>for $n in (xs:QName("", "someStr"), xs:QName("",
"someOtherStr"), .....)</span></font></font></font></div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span>return local:histogram(mainNode,
$n)</span></font></font></font></div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span></span></font></font></font> </div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span>Michael Kay</span></font></font></font></div>
<div dir="ltr" align="left"><font face="Arial"><font size="2"><font color="#0000ff"><span><a href="http://www.saxonica.com/" target="_blank">http://www.saxonica.com/</a></span><span> </span></font></font></font></div><br>
<blockquote style="border-left: 2px solid rgb(0, 0, 255); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div dir="ltr" align="left" lang="en-us">
<hr>
<font size="2" face="Tahoma"><b>From:</b> <a href="mailto:talk-bounces@x-query.com" target="_blank">talk-bounces@x-query.com</a>
[mailto:<a href="mailto:talk-bounces@x-query.com" target="_blank">talk-bounces@x-query.com</a>] <b>On Behalf Of
</b>Michalmas<br><b>Sent:</b> 08 March 2009 20:29<br><b>To:</b>
<a href="mailto:talk@x-query.com" target="_blank">talk@x-query.com</a><br><b>Subject:</b> [xquery-talk] xquery: iteration
simulation<br></font><br></div><div><div></div><div class="h5">
<div></div>Hello guys,<br><br>Can you help me with the following
problem:<br><br>I have some XML.<br><br>Now, i need to query it. But what i
need to do, is to make queries of the
form:<br><br>count(mainNode//someStr)<br>count(mainNode//someStr/someStr)<br>(...)<br>count(mainNode//someStr/someStr/someStr/someStr/someStr/someStr/someStr/someStr)<br><br>The
deep level of the last query may be even around 50 (so, 50 queries).
<br>Such set of queries will be repeated for about 100 keywords (like
someStr). In total, that gives about 500 queries to create.<br><br>Is is
posible to write iteration in XQuery for that. Or pass it as a
function?<br><br>Thanks,<br>M.<br><br></div></div></blockquote></div>
</blockquote></div><br>