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のように)。これらは同じ番号のポイントの「ブランチ」であるため、これはコンテンツ関連のOKです。
私が取得したいのは、これらの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
。したがって、BaseXには構文エラーメッセージはありませんが、「avg」は無視されます。
どうすれば上記を達成できますか?よろしくお願いします!