我正在尝试在if语句内(在double内)更新$ numMatches变量,以跟踪XML文档中各个团队进行的比赛。该代码引发错误。
伪逻辑是:
“对于团队中的每个团队,对于每场比赛,如果团队的ID与本地或访客球员的ID相等,则将该团队进行的比赛数量加1。”
我尝试过的XQuery是:
<resumen>
{ for $teams in ligue/teams/team
let $numMatches := 0
for $matches in ligue/match_results/match
if ($teams/team_id = $matches/local) or ($teams/team_id =
$matches/visitor) then
$numMatches := $numMatches + 1
return <teamAndMatches>{$teams/name/data()}-{$numMatches}</teamAndMatches>
}
</resumen>
那里是一个错误,因为XBase说它期望返回。错误在哪里?我是这种语言的新手。谢谢!
答案 0 :(得分:2)
XQuery(XML查询)是一种查询和功能编程语言,用于查询和转换结构化和非结构化数据的集合,通常以XML,文本的形式出现,并且具有其他数据格式(JSON,二进制等)的特定于供应商的扩展名)。
XQuery是一种功能编程语言,这意味着变量是不可变的。
因此您不能像这样更新变量
$numMatches := $numMatches + 1
因为变量是不可变的。
您是从命令式范式中思考的,这不适用于此处。
如果您想解决这个难题,请尝试从功能范例中进行思考,然后对该程序进行递归编程(这可能意味着将计数器作为参数传递给递归函数)。
答案 1 :(得分:2)
有一个DataGrid
函数
count
就足够了。