2012-06-18 5 views
8

XML FileXQuery durante l'utilizzo di distinti valori()

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

Sto usando seguente XQuery -

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

Il risultato mi aspetto è - Chandigarh Mumbai New Delhi

ma ottenere - Chandigarh Chandigarh Mumbai Mumbai New Delhi New Delhi New Delhi

Per favore dimmi dove sto andando male?

risposta

8

pls provare questo -

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

Ho verificato lo stesso con baseX 7.1 e lavorando senza intoppi come previsto da voi :)

+0

@ John-It ha funzionato esattamente come mi aspettavo. Grazie mille –

+0

@ pratik- benvenuto caro :) – John

4

Ora si sta chiamando distinct-values su ciascuno dei valori separatamente. distinct-values restituisce i valori distinti in una sequenza ma la sequenza ora consiste solo di un elemento. Dovresti chiamare distinct-values(...) dove ... è la sequenza di nomi di città.

+0

@ Simeon: ho capito cosa vuoi dire. Grazie –

0

funzionano i distinti valori

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

La distinta la funzione -valori è utilizzata
articoli unici

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

return (
$unique-items 
)