xquery";最后一句话;与其他选择器一起工作

xquery";最后一句话;与其他选择器一起工作,xquery,Xquery,我很好奇如何在Xquery中使用last()函数以及其他“选择器”(不确定正确的行话)。以下是我所拥有的(这是有效的): 很抱歉,我对Xquery和编码还比较陌生,如果这很容易,我只是看不出问题所在,那么很抱歉。谢谢你的帮助 无论@action如何,您都可以查询get's last play,然后通过[@action=“GOOD”]过滤该last play。相反,您应该首先通过@action进行筛选,然后获取最后一个: //bbgame/plays/period[last()]/play[@a

我很好奇如何在Xquery中使用
last()
函数以及其他“选择器”(不确定正确的行话)。以下是我所拥有的(这是有效的):


很抱歉,我对Xquery和编码还比较陌生,如果这很容易,我只是看不出问题所在,那么很抱歉。谢谢你的帮助

无论
@action
如何,您都可以查询get's last play,然后通过
[@action=“GOOD”]
过滤该last play。相反,您应该首先通过
@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>
在//bbgame/plays/period[last()]/play[@action=“GOOD”][last()]
返回
{data($lastscoreplay/@uni)}

在某些情况下,接受的答案不起作用,如果出现这种情况,请尝试以下替代方法:

let $all := /bbgame/plays/period[last()]/play[@action="GOOD"]
return $all[last()]

是的,我也试过了,但还是不行。我正在另一个程序中使用它,当我同时使用
[@action=“GOOD”]
[last()]
运行它时,它返回一个空输出。如果我只留下
[@action=“GOOD”]
,它工作得很好,它只是返回所有带有
[@action=“GOOD”]
的剧本。您能想出另一种方法在Xquery中完成这项工作吗?也许是这个程序(称为CharacterWorks的图形CG程序)不喜欢我的工作方式。也许这会有所帮助?答案实际上适用于这个XML(xpath和xquery),它返回31(play元素的uni属性的值)。因此,这可能与您的处理器或处理器的配置有关。您是否可以尝试按顺序设置一个变量,然后选择最后一项,如下所示:
let$all:=//bbgame/plays/period[last()]/play[@action=“GOOD”]return$all[last()]
for实际上不需要。谢谢@luciddream!我发誓我试过了,但在你发帖的时候又试了一次,成功了!我猜是我使用的软件使用的处理器。我确信@joemfb发布的内容是有效的,只是在我使用的软件中没有。再次感谢!很高兴知道!我以前对这样的事情感到困惑。我将添加我的评论作为答案仅供参考,无需接受我的评论。您应该提供一个示例XML文件,这样可以更容易地为您提供准确的答案。以下是我正在使用的XML的一个示例。这件事有相当多的道理。
for $lastscoreplay in //bbgame/plays/period[last()]/play[@action="GOOD"][last()]
return
  <datarow>
    <lastscoreplay>{ data($lastscoreplay/@uni) }</lastscoreplay>
  </datarow>
let $all := /bbgame/plays/period[last()]/play[@action="GOOD"]
return $all[last()]