[xquery-talk] xquery distinct-values
Michael Kay
mhk at mhk.me.uk
Mon Apr 10 09:18:37 PDT 2006
> First, please accept my apologies if this is the wrong place to post.
It's the right place to post. Is your name really Jane Doe?
I think the following works:
declare variable $f1 := doc("file1.xml");
declare variable $f2 := doc("file2.xml");
$f1/namelist/person
[count(distinct-values(for $x in carids return $f2/id($x)/style)) gt 1]
/name
assuming that @id is an ID attribute
Michael Kay
http://www.saxonica.com/
>
> I have two xml files.
>
> file1.xml has
> <namelist><person>
> <name>John</name>
> <carids>1</carids>
> <carids>3</carids>
> <carids>4</carids>
> </person></namelist>
>
> file2.xml has
> <carlist>
> <car id='1'>
> <style>sedan</style>
> <car id='3'>
> <style>coupe</style>
> <car id='4'>
> <style>sedan</style>
> </carlist
>
> I am trying to write an xquery that will return the names
> with more than 2
> of any style:
>
> for $x in doc("file1.xml")/namelist/person
> let $y := doc("file2.xml")/carlist/car[@id=$x/carids]
> for $value in ($y/style)
> where count($y/style[.=$value]) ge 2
> order by ($x/name) descending
> return <name>{data($x/name)}</name>
>
> This returns the names of everyone with more than 2 of any
> style, but it
> returns that same name multiple times (in relation to the number of
> duplicate styles).
>
> I hope it's not too confusing, and I appreciate any help you
> can give me.
>
> Thanks,
> D
>
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today
> - it's FREE!
> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
>
More information about the talk
mailing list