<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6001.18203" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2>Is "someStr" the same element name throughout? If so, it
looks like this:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2>declare function local:depth($e as element(*)) as
xs:integer {</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2>
count($e/ancestor::*[node-name(.)=node-name($e)]</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2>};</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2>declare function local:histogram($root as
element(mainNode), $name as xs:QName) as element(count)*</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=217331823-08032009><FONT face=Arial
color=#0000ff size=2> 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
class=217331823-08032009> 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
class=217331823-08032009>}</SPAN></FONT></FONT></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial><FONT size=2><FONT color=#0000ff><SPAN
class=217331823-08032009></SPAN></FONT></FONT></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial><FONT size=2><FONT color=#0000ff><SPAN
class=217331823-08032009>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
class=217331823-08032009>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
class=217331823-08032009></SPAN></FONT></FONT></FONT> </DIV>
<DIV dir=ltr align=left><FONT face=Arial><FONT size=2><FONT color=#0000ff><SPAN
class=217331823-08032009>Michael Kay</SPAN></FONT></FONT></FONT></DIV>
<DIV dir=ltr align=left><FONT face=Arial><FONT size=2><FONT color=#0000ff><SPAN
class=217331823-08032009><A
href="http://www.saxonica.com/">http://www.saxonica.com/</A></SPAN><SPAN
class=217331823-08032009> </SPAN></FONT></FONT></FONT></DIV><BR>
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> talk-bounces@x-query.com
[mailto:talk-bounces@x-query.com] <B>On Behalf Of
</B>Michalmas<BR><B>Sent:</B> 08 March 2009 20:29<BR><B>To:</B>
talk@x-query.com<BR><B>Subject:</B> [xquery-talk] xquery: iteration
simulation<BR></FONT><BR></DIV>
<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></BLOCKQUOTE></BODY></HTML>