我正在尝试管理 BaseX 中的 map:get 函数的输出。
映射文件如下所示:
<around>
<point NR="51151">161</point>
<point NR="31252">82</point>
<point NR="54321">323</point>
<point NR="54321">319</point>
<point NR="54321">327</point>
</around>
并以编号为属性(NR),以与某个搜索点的距离为值来表示一些地理点。有些点出现了不止一次(如上例中的点 54321)。这是与内容相关的,因为这些是具有相同编号的点的“分支”。
如果我查找这些 NR,我想要得到的是距离的平均值。
我的查询:
let $c :=
<around>
<point NR="51151">161</point>
<point NR="31252">82</point>
<point NR="54321">323</point>
<point NR="54321">319</point>
<point NR="54321">327</point>
</around>
for $r in $c//point
let $m := map { data($r/@NR) := $r/text() }
return
if ( map:contains($m, '54321' ) ) then
avg(map:get($m, '54321'))
else
()
... 返回323 319 327
,因此忽略“avg”,尽管 BaseX 中没有语法错误消息。
我怎样才能实现上述目标?提前谢谢了!