Question

I need to write an XQuery from a given XML but I cannot find the right way to do it.

Here is the xml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited by XMLSpy -->
<onlinecomputer>
    <item name="Processor" price="100.00"/>
        <item name="USB driver" price="50.00"/>
        <item name="Webcam" price="20.50"/>
        <item name="Notebook" price="700.00"/>
        <place>
         <name>Prishtin</name>
           <customer>
                <name>Hana</name>
                <street> Nen Tereza</street>
                <order item="Processor" amount="1"/>
                <order item="USB driver" amount="3"/>
                <order item="Webcam" amount="3"/>
                <order item="Notebook" amount="2"/>
           </customer>
            <customer>
                <name>Ron</name>
                <street> blbl</street>
                <order item="Webcam" amount="1"/>
           </customer>
      </place>
        <place>
         <name>Tetove</name>
           <customer>
                <name>Edin</name>
                <street> gggg</street>
                <order item="Processor" amount="4"/>
                <order item="Notebook" amount="1"/>
           </customer>
            <customer>
                <name>Alex</name>
                <street> bbbb</street>
                <order item="Processor" amount="2"/>
           </customer>
      </place>
</onlinecomputer>

The XQuery should write an expression that will give the set of pairs (place and item) such that this item has been shipped in a given place.

The result should be like:

<answer place="nameOfPlace" item="nameOfItem" />
Was it helpful?

Solution

for $p in onlinecomputer/place
for $i in distinct-values(customer/order/@item)
return <answer place="{ $p/name }" item="{ $i }"/>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top