首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XQuery:创建一个新序列并返回它

XQuery:创建一个新序列并返回它
EN

Stack Overflow用户
提问于 2016-05-26 23:21:50
回答 1查看 2.5K关注 0票数 0

我试图实现的是将$stationsSequence中的值添加到新序列$newSequence中,然后在序列中返回distinct-values。我“天真”地尝试使用如下的if语句来完成此操作:

代码语言:javascript
复制
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)

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

EN

回答 1

Stack Overflow用户

发布于 2016-05-27 00:58:47

您不能在XQuery中更新变量,因为变量是不可变的。这就是说:

代码语言:javascript
复制
let $s := ()
return
    let $s1 := fn:insert-before($s, last(), "a")
    let $s2 := fn:insert-before($s, last(), "b")
    return
        $s2

给出结果:

代码语言:javascript
复制
("b")

相反,您必须创建一个包含旧值和新值的新变量,然后重复该操作,直到获得所有值。

然而,我认为对你的问题最简单的解决方案是:

代码语言:javascript
复制
fn:distinct-values(
    fn:doc("stations.xml")//station[fn:substring(., 1, 1) = ("W", "B")]
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37464990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档