我想要实现的是将$stationsSequence
中的值添加到新序列$newSequence
中,然后在序列中返回distinct-values
。我“天真地”试图用这样的if语句来做:
let $stationsSequence := fn:doc("stations.xml")//station
let $newSequence := ()
for $station in $stationsSequence
return
if ( fn:starts-with($station, "W") or fn:starts-with($station, "B") )
then
fn:insert-before($newSequence , last(), $station)
else ()
fn:distinct-values($newSequence)
这样做的正确方法是什么? 谢谢
答案 0 :(得分:1)
您无法在XQuery中更新变量,因为变量是不可变的。也就是说:
let $s := ()
return
let $s1 := fn:insert-before($s, last(), "a")
let $s2 := fn:insert-before($s, last(), "b")
return
$s2
给出结果:
("b")
相反,您必须创建一个包含旧值和新值的新变量,然后重复该变量,直到获得所有值。
但是,我认为最容易解决问题的方法是:
fn:distinct-values(
fn:doc("stations.xml")//station[fn:substring(., 1, 1) = ("W", "B")]
)