[xquery-talk] How to write this XQuery program?
Mark Volkmann
volkmann2 at charter.net
Mon Sep 6 20:07:58 PDT 2004
Here's my attempt at it. I tested this with Saxon 8. If there's a better
way, I'd love to see it!
declare variable $c1 { doc("c1.xml")/company/parts/part };
declare variable $c2 { doc("c2.xml")/company/parts/part };
declare variable $c3 { doc("c3.xml")/company/parts/part };
declare variable $partId { "p2" };
<result> {
let $parts := $c1[id=$partId] | $c2[id=$partId] | $c3[id=$partId]
let $bestPrice := min($parts/price)
let $bestPart := $parts[price/text()=$bestPrice]
return <part> {
$bestPart/id,
$bestPart/price,
$bestPart/../../name
} </part>
} </result>
----- Original Message -----
From: "Zhimao Guo" <021021090 at fudan.edu.cn>
To: <talk at xquery.com>
Sent: Monday, September 06, 2004 8:48 AM
Subject: [xquery-talk] How to write this XQuery program?
> Hi, all:
>
> Now I have three XML files, c1.xml, c2.xml, c3.xml.
> Each XML file contains information of one company, and of parts supplied
by it.
> Given a part id, I want to get the company which offered this part with
the lowest price.
> How can I write this XQuery?
>
> -----begin of source data----
> c1.xml:
> <company>
> <name>CompanyA</name>
> <parts>
> <part>
> <id>p1</id>
> <price>100</price>
> </part>
> <part>
> <id>p2</id>
> <price>101</price>
> </part>
> </parts>
> </company>
> c2.xml:
> <company>
> <name>CompanyB</name>
> <parts>
> <part>
> <id>p2</id>
> <price>105</price>
> </part>
> <part>
> <id>p3</id>
> <price>106</price>
> </part>
> </parts>
> </company>
> c3.xml:
> <company>
> <name>CompanyC</name>
> <parts>
> <part>
> <id>p2</id>
> <price>100</price>
> </part>
> <part>
> <id>p6</id>
> <price>106</price>
> </part>
> </parts>
> </company>
> -----end of source data----
>
> -----begin of expected result----
> <result>
> <part>
> <id>p2</id>
> <price>100</price>
> <company>CompanyC</company>
> </part>
> </result>
> -----end of expected result----
>
> Who would like to give me a hand? Thanks very much.
>
> best regards,
> -zhimao
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
>
More information about the talk
mailing list