Basex Rest API 拒绝查询,而管理页面允许

Basex Rest API rejects query while admin page allows it

当我发送查询时 xml 这样的文档

<query><text><![CDATA[
let $facts := fn:collection("factbook/factbook.xml")/mondial
let $c := ("Antarktika", "Atlantis")
for $name at $id in $c
return
insert node (<continent id="f0_aaa{$id}" name="{$name}" />) into $facts
]]></text></query>

到 REST API 使用

curl -i --data '...' 'http://localhost:8984/rest'

BaseX会报如下错误:

[XPST0003] Incomplete FLWOR expression: expecting 'return'.

如果我在 Web 管理查询页面上执行相同的查询,则接受查询并插入节点。

为什么 REST 调用被拒绝?是否还有不适用于管理界面的进一步限制?

如果我删除 lets 并扩展相应的变量,REST 将接受查询 API:

<query><text><![CDATA[
for $name at $id in ("Antarktika", "Atlantis")
return
insert node (<continent id="f0_aaa{$id}" name="{$name}" />) into fn:collection("factbook/factbook.xml")/mondial
]]></text></query>

REST 用户有写入权限。我正在使用 BaseX 9.0.2.

原来不是查询的问题,而是curl--data选项结合@发送文件内容。此选项在发送前去除换行符(CR 和 LF)。使用 --data-binary '@...' 查询按预期工作。