2012-06-18 8 views
8

XML Dosyası Aşağıdaki XQuery'yi kullanıyorumXQuery ayrı-değerlerini kullanırken()

<Cities> 
    <Place> 
    <City n="New Delhi"></City> 
    <City n="Chandigarh"></City> 
    <City n="Mumbai"></City> 
    </Place> 
    <Place> 
    <City n="New Delhi"></City> 
    <City n="Chandigarh"></City> 
    </Place> 
    <Place> 
    <City n="New Delhi"></City> 
    <City n="Mumbai"></City> 
    </Place> 
</Cities> 

-

for $x in doc("sample")/Cities/Place/City 
    order by $x/@n 
    return distinct-values($x/@n) 

ben bekliyorum sonucudur - Chandigarh Mumbai New Delhi

ama alma - Chandigarh Chandigarh Mumbai Mumbai New Delhi New Delhi New Delhi

Lütfen bana nerede yanlış gittiğimi söyle?

cevap

8

lütfen bu deneyin - tarafınızdan beklendiği gibi ben baseX 7.1 ile ve sorunsuz çalışan aynı kontrol ettikten

for $x in distinct-values(doc("sample")/Cities/Place/City/@n) 
    order by $x 
    return $x 

:)

+0

@ John-It ve tam olarak beklediğim gibi çalıştı. Çok teşekkürler –

+0

@ pratik- welcome sevgili :) – John

4

Artık değerlerin her birine distinct-values numaralı telefonu arıyorsunuz. distinct-values, bir sıradaki farklı değerleri döndürür, ancak sıra şimdi yalnızca bir öğeden oluşur. ... adresinin şehir adları dizisi olduğu distinct-values(...)'u aramanız gerekir.

+0

@ Simeon-Ne demek istediğini anladım. Teşekkürler –

0

ayrı değerleri işlev

let $items := (1,2,4,4,5,5,9,9,9,9,3,3,2) 
let $unique-items-by := distinct-values($items) 
return 
    <result> 

     <items> 
     { 
     for $item in $unique-items-by 
     return <item>{$item}</item> 
     } 
     </items> 

    </result> 
0

ayrı -values ​​işlev
benzersiz öğeler kullanıldı

let $x:=doc("/db/my.xml") 
let $unique-items := distinct-values($x) 
for $x in $unique-items 

return (
$unique-items 
)