0

我想要实现的是将值添加$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)

这样做的正确方法是什么?谢谢

4

1 回答 1

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")]
)
于 2016-05-26T16:58:47.480 回答