[xquery-talk] distinct-values in Where Clauses

Michael Kay mike at saxonica.com
Thu Jan 17 16:14:47 PST 2008


You replied to me off-list (please don't do that!):

=================================
Hi,

   Actually it is hard to describe the situation I am having here.
 I am processing some nodes of information using a lot of different "or" in
my query structure.

Here is the XQuery:

declare boundary-space preserve;
declare variable $text external;
<text>{
for $find in doc("resume.xml")//div,
$head in $find/head,
$desc in $find/p
where
distinct-values((contains($desc,$text)) or (contains($head,$text))) 
return <div> <head>{data($head)}</head> <p>{data($desc)}</p> </div> 
} </text>

XML:

<div>
<head>PHP and MySQL</head>
<p>So far I have not seen full support of XQuery usage here.</p> </div>

<note>
<head>PHP5</head>
<p>XML nor XQuery does not seem to be even available.</p> </note>

If I set the $text variable to XQuery, the result  is supposed to be
appearing only once for each, but now it gives me two results for each. Can
anyone help out?

Thanks to those who can help.
====================

You've done half of what I asked, which is to show the input. You haven't
done the other half, which is to show the desired output (or the output you
are actually getting).

Unfortunately your input isn't well-formed XML (there is no outer wrapper
element) so I can't try it for myself. Since your input has only one <div>
element I find it hard to see why there should be any duplicates. I don't
really know what you mean by "appearing only once for each" - each what?

Anyway, as I already explained, it's obvious why the distinct-values() does
no good.

Michael Kay
http://www.saxonica.com/




More information about the talk mailing list