我很好奇如何在Xquery中使用last()
函数以及其他"选择器" (不确定正确的术语)。这就是我所拥有的(这是有效的):
for $lastscoreplay in //bbgame/plays/period[last()]/play[@action="GOOD"]
return <datarow>
<lastscoreplay>{data($lastscoreplay/@uni)}</lastscoreplay>
</datarow>
但是,我想选择play
等于@action
的最后GOOD
。如果这是有道理的。我认为我可以这样做,但它不起作用:
for $lastscoreplay in //bbgame/plays/period[last()]/play[last()][@action="GOOD"]
return <datarow>
<lastscoreplay>{data($lastscoreplay/@uni)}</lastscoreplay>
</datarow>
抱歉,对于Xquery和编码一般来说,我还是新手,很抱歉,如果这很容易,我就不会发现问题。谢谢你的帮助!
答案 0 :(得分:2)
您查询get是最后一次游戏,无论@action
,然后按[@action="GOOD"]
过滤最后一次游戏。相反,您应首先按@action
过滤,然后获取最后一个:
//bbgame/plays/period[last()]/play[@action="GOOD"][last()]
完整查询:
for $lastscoreplay in //bbgame/plays/period[last()]/play[@action="GOOD"][last()]
return
<datarow>
<lastscoreplay>{ data($lastscoreplay/@uni) }</lastscoreplay>
</datarow>
答案 1 :(得分:1)
在某些情况下,接受的答案不会起作用,如果发生这种情况,请尝试以下方法:
let $all := /bbgame/plays/period[last()]/play[@action="GOOD"]
return $all[last()]