2013-11-02 13 views
6

Otrzymuję żądany schemat. Ale jedyną rzeczą, którą muszę zrobić, to wyeliminować zduplikowane wartości. Dlatego używam różnych wartości, ale funkcja ta wyświetla wszystkie wartości w jednym elemencie.Xquery różne wartości

Schema Wejście:

<?xml version="1.0" encoding="UTF-8"?> 
<hotel> 
<food> 
    <name>Burger</name> 
    <cost>20</cost> 
</food> 
<food> 
    <name>Pizza</name> 
    <cost>20</cost> 
</food> 
<food> 
    <name>Cola</name> 
    <cost>5</cost> 
</food> 
<food> 
    <name>Lemonade</name> 
    <cost>5</cost> 
</food> 
<food> 
    <name>Ice Cream</name> 
    <cost>10</cost> 
</food> 
<food> 
    <name>Cookies</name> 
    <cost>10</cost> 
</food> 
</hotel> 

Wyjście obecnie:

<type> 
<cost>01</cost> 
<food>burger fries cola</food> 
</type> 

Pożądany:

<type> 
<cost>01</cost> 
<food>burger</food> 
<food>fries</food> 
<food>cola</food> 
</type> 

Zasadniczo dostać całe jedzenie w tej cenie.

My xquery następująco:

let $cost:= doc("Untitled7.xml")/hotel/food/cost 
for $unique in distinct-values(doc("Untitled7.xml")/hotel/food/cost) 
let $food:= distinct-values(doc("Untitled7.xml")hotel/food[cost=$unique]/name) 
where $unique = $cost 
return 
<type> 
<year>{$unique}</year> 
<food>{$food}</food> 
</type> 

Każda pomoc zauważyć :)

Odpowiedz

4

różne wartości współczynnika() powróci sekwencji łańcuchów (Burger '', 'frytki', " cola "), ale teraz wyprowadzasz go natychmiast. Co musisz zrobić, to powtórzyć zmienną $ food w innym poleceniu FLWOR:

return 
<type> 
<year>{$unique}</year> 
{ 
    for $f in $food return <food>{$f}</food> 
} 
</type> 
Powiązane problemy