[xquery-talk] Query Through Multiple Files
Michael Kay
mike at saxonica.com
Tue Jan 22 15:07:25 PST 2008
I wasn't trying to give you a complete solution to your problem because I
don't know what the problem is. I was only trying to explain why you got the
error message that you got.
If you want help writing your query, please explain what the source
documents look like and what output you need.
Michael Kay
http://www.saxonica.com/
_____
From: Wei, Alice J. [mailto:ajwei at indiana.edu]
Sent: 22 January 2008 14:46
To: Michael Kay; 'Liam Quin'
Cc: talk at x-query.com
Subject: RE: [xquery-talk] Query Through Multiple Files
Hi, Michael:
Sorry, but that is not entirely what I want. I was hoping to not just keep
the information but also the markup. Is there some way I can do that?
This means that I should not be using distinct-values() because it is
similar to <xsl:value-of select=""> as in XSLT, right?
Here is the code again:
declare boundary-space preserve;
<book>
{
let $sorted_result:= for $doc in
distinct-values((doc("1.xml"),doc("3.xml"),
doc("4.xml"), doc("2.xml"))//ad/p/address)
order by $doc ascending
return $doc
for $sorted_results at $count in $sorted_result
return
<bibl>
<statistics>Showing Result: {$count} / {count($sorted_result)}
</statistics>
{$sorted_result}
</bibl>
}
</book>
Thanks for your help.
======================================================
Alice Wei
MIS 2008
School of Library and Information Science
Indiana University Bloomington
ajwei at indiana.edu
-----Original Message-----
From: Michael Kay [mailto:mike at saxonica.com]
Sent: Monday, January 21, 2008 4:04 PM
To: Wei, Alice J.; 'Liam Quin'
Cc: talk at x-query.com
Subject: RE: [xquery-talk] Query Through Multiple Files
> I tried using
> distinct-values(doc("1.xml"), doc("3.xml"), doc("4.xml"),
> doc("2.xml"))//title, but I got the error that there should
> be only 2 arguments.
You didn't read my example carefully enough
distinct-values(( doc("1.xml"),
doc("2.xml"),
doc("3.xml"),
doc("4.xml"))//ad)
Firstly, you want to find the set of titles and then take the distinct
values in this set: so the "//title" part needs to inside the argument to
distinct-values(). The way you've written it, you're taking four documents,
then eliminating duplicates, then taking the title elements within those
that are left.
Secondly, if you supply a sequence to a function that expects a single
argument then you need to double the parentheses, for example
sum((1,2,3,4,5)) or distinct-values((1,2,2,4,4)). That's to make it clear
you are passing one argument which is a sequence of five integers, not five
arguments that are single integers. IN your case you've called
distinct-values() with four arguments, rather than with a single argument
that is a sequence.
Michael Kay
http://www.saxonica.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20080122/7d0ad1b8/attachment-0001.htm
More information about the talk
mailing list