2013-11-02 10 views
6

私は希望のスキーマを取得しています。しかし、私がする必要があることは、重複した値を排除することです。したがって、私は別個の値を使用しますが、その機能は1つの要素内のすべての値を表示することです。Xquery distinct-values

入力スキーマ:

<?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> 

出力現在:理想の

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

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

は、基本的にはその価格のため、すべての食品を取得します。

次のように私のXQueryがある:

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> 

任意の助けが理解されるであろう:)

答えて

4

異なる値を()文字列の配列を返します( 'バーガー'、 'フライ'、「コーラ ')、今すぐすぐに出力しています。あなたがしなければならないことは、別のFLWORステートメントであなたの$ food変数を繰り返すことです: