[xquery-talk] xquery: iteration simulation

Michael Kay mike at saxonica.com
Sun Mar 8 23:29:15 PST 2009


Is "someStr" the same element name throughout? If so, it looks like this:
 
declare function local:depth($e as element(*)) as xs:integer {
  count($e/ancestor::*[node-name(.)=node-name($e)]
};
 
declare function local:histogram($root as element(mainNode), $name as
xs:QName) as element(count)*
  for $d in distinct-values(mainNode//*[node-name()=$s]/local:depth(.)) 
  return <count element="{$name}" depth="{$d}
count="{count(mainNode//*[node-name()=$name][local:depth(.)=$d]))
}
 
for $n in (xs:QName("", "someStr"), xs:QName("", "someOtherStr"), .....)
return local:histogram(mainNode, $n)
 
Michael Kay
http://www.saxonica.com/  


  _____  

From: talk-bounces at x-query.com [mailto:talk-bounces at x-query.com] On Behalf
Of Michalmas
Sent: 08 March 2009 20:29
To: talk at x-query.com
Subject: [xquery-talk] xquery: iteration simulation


Hello guys,

Can you help me with the following problem:

I have some XML.

Now, i need to query it. But what i need to do, is to make queries of the
form:

count(mainNode//someStr)
count(mainNode//someStr/someStr)
(...)
count(mainNode//someStr/someStr/someStr/someStr/someStr/someStr/someStr/some
Str)

The deep level of the last query may be even around 50 (so, 50 queries).  
Such set of queries will be repeated for about 100 keywords (like someStr).
In total, that gives about 500 queries to create.

Is is posible to write iteration in XQuery for that. Or pass it as a
function?

Thanks,
M.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20090308/9d423271/attachment.htm


More information about the talk mailing list