xquery" last"与其他选择器一起使用

时间:2015-12-11 17:22:42

标签: xquery

我很好奇如何在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和编码一般来说,我还是新手,很抱歉,如果这很容易,我就不会发现问题。谢谢你的帮助!

2 个答案:

答案 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()]