为什么这个Xquery表达式返回一个空值?

时间:2018-11-14 23:59:55

标签: xpath xquery

我想获取一个属性的最大值。我有以下说法:

  

让$ posts:= doc(“ Posts.xml”)/ posts / row [./@ OwnerUserId = $ user / @ Id]

     

让$ maxScore:= fn:max(xs:integer($ posts / row / @ Score))

当我想返回maxScore时,它显示为空值。进一步修改后,以下内容:

  

返回$ posts / row / @ Score

即使我知道每一行都有一个“得分”属性,它也显示为空

我已经为此战斗了一个多小时,感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您正在选择符合谓词条件的row元素。因此,$posts变量将具有row元素的序列。

如果要从@Score变量的每个row元素中选择$posts,则XPath应该为:$posts/@Score

如果您将变量命名为$rows,将会减少混乱。

或者,更改XPath以实际选择posts元素:

let $posts := doc("Posts.xml")/posts[row/@OwnerUserId = $user/@Id]
let $maxScore := fn:max(xs:integer($posts/row/@Score))