[xquery-talk] Query Through Multiple Files

Wei, Alice J. ajwei at indiana.edu
Tue Jan 22 09:46:23 PST 2008


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<mailto: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/93a646e6/attachment.htm


More information about the talk mailing list