2012-06-18 35 views
8

XML FileXQuery trong khi sử dụng riêng biệt-giá trị()

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

Tôi đang sử dụng XQuery sau -

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

Kết quả Tôi hy vọng là - Chandigarh Mumbai New Delhi

nhưng nhận - Chandigarh Chandigarh Mumbai Mumbai New Delhi New Delhi New Delhi

Xin cho biết tôi đang đi sai ở đâu?

Trả lời

8

xin thử này -

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

Tôi đã kiểm tra cùng với Basex 7.1 và hoạt động mượt mà như mong đợi bởi bạn :)

+0

@ John-Nó hoạt động và chính xác như tôi mong đợi. Cảm ơn bạn rất –

+0

@ pratik- chào mừng thân yêu :) – John

4

Bạn hiện đang gọi distinct-values trên từng giá trị riêng biệt. distinct-values trả về các giá trị khác nhau theo trình tự nhưng trình tự hiện chỉ bao gồm một phần tử. Bạn nên gọi số distinct-values(...) trong đó ... là chuỗi tên thành phố.

+0

@ Simeon-Tôi hiểu điều bạn muốn nói. Cảm ơn bạn –

0

Các biệt-giá trị hoạt động

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

Các biệt hàm giá trị được sử dụng
unique-items

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

return (
$unique-items 
) 
Các vấn đề liên quan