XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
kensky schulzSubject: Filtering multiple values from xquery
Author: kensky schulz
Date: 26 Apr 2006 09:25 AM
Hello,

I am pretty new to xquery. I have following xml instances.

<?xml version="1.0" encoding="UTF-8"?>
<customerinfo>
<customer>
<name>Kensky</name>
<address>BrandenBerg</address>
<phone>
<home>0012456587
</home>
<office>0014654867
</office>
</phone>
<salary>6000</salary>
</customer>
<customer>
<name>Sebastian</name>
<address>U-Berg</address>
<phone>
<home>0112456587
</home>
<office>00134654867
</office>
</phone>
<salary>3000</salary>
</customer>
<customer>
<name>Ryan</name>
<address>Bayern</address>
<phone>
<home>001223456587
</home>
<office>00146344867
</office>
</phone>
<salary>5000</salary>
</customer>
</customerinfo>

I want to get all customers whose salary > 2000. the query seems to be simple but the problem lies when I want to return multiple attributes.
For example the query should return customer name, customer address, and that whole xml instance. I dont know how to achieve this in xquery.


Thanks in advance.
Kensky

Postnext
Minollo I.Subject: Filtering multiple values from xquery
Author: Minollo I.
Date: 26 Apr 2006 09:44 AM
Something like:

for $richCustomer in //customer
where $richCustomer/salary > 2000
return
<richCustomer>
{ $richCustomer/name, $richCustomer/address, $richCustomer/phone }
</richCustomer>

Postnext
kensky schulzSubject: Filtering multiple values from xquery
Author: kensky schulz
Date: 26 Apr 2006 10:12 AM
Thanks for reply.

Here in your XQuery it will return three different attributes. name, salary etc. My question is I want to return $richCustomer/name, $richCustomer/salary, and $richCustomer itself. This customer example is simple but what if we have very complex document.


Thanks in advance.

Postnext
Minollo I.Subject: Filtering multiple values from xquery
Author: Minollo I.
Date: 26 Apr 2006 10:25 AM
I'm not sure I understand your question; the example in question shows you how you can copy elements to the result sequence. Copying elements (like $richCustomer, for example) will copy its subelements recursively, if that's what you need.

Minollo

Posttop
kensky schulzSubject: Filtering multiple values from xquery
Author: kensky schulz
Date: 26 Apr 2006 04:00 PM
I got the solution. Yes I wanted to have contents of $richCustomer along with its children.

So here is the example using $c in place of $richCustomer,

for $c in collection("customerContainer") where $c//salary > 2000 return <cname>{$c//cname}</cname>,<salary>{$c//salary}</salary>,<wholeDoc>{$c}</wholeDoc>

in fact your query gave me the idea to solve this issue.

Thanks for advice,

 
Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.