2013-11-02 5 views
6

İstenilen şemaları alıyorum. Ama yapmam gereken tek şey yinelenen değerleri ortadan kaldırmaktır. Bu yüzden, farklı değerler kullanırım, ama bu fonksiyonun yaptığı şey, bir öğenin içindeki tüm değerleri gösterir.Xquery distinct-values ​​

Girdi Şema:

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

Çıktı anda: İstenilen

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

:

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

Temelde bu fiyata tüm yiyecek almak. aşağıdaki gibi

Benim Xquery olup:

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> 

herhangi bir yardım takdir edilecektir :)

cevap

4

tat-değerlerine() şeritlerinin bir dizi döndürür: ('hamburger', 'patates', ' cola '), ama şu anda bir kerede çıktı alıyorsunuz.

return 
<type> 
<year>{$unique}</year> 
{ 
    for $f in $food return <food>{$f}</food> 
} 
</type> 
: Ne yapmanız gereken başka FLWOR açıklamada senin $ gıda değişkeni üzerinde yineleme olduğunu