[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