在 REST 中传递一个变量 POST

Pass a variable in REST POST

我试图根据 the docs 将变量传递给 BaseX 查询,但我一直收到未定义变量的错误。为什么?

Stopped at C:/Program Files (x86)/BaseX/webapp, 1/23:
[XPST0008] Undefined variable $which.

这是我正在测试的查询:

<query xmlns="http://basex.org/rest">
    <text>//greeting[position()=$which]</text>
    <variable name="which" value="0"/>
    <context><xml><greeting/></xml></context>
</query>

使用默认凭据 CURL 到本地服务器

curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -d "<query xmlns=\"http://basex.org/rest\"><text>//greeting[position()=$which]</text><variable name=\"which\" value=\"0\"/><context><xml><greeting/></xml></context></query>" http://localhost:8984/rest

REST documentation of BaseX 所述,您需要在查询字符串的序言中声明变量:

<query xmlns="http://basex.org/rest">
  <text>
    declare variable $which as xs:integer external;
    //greeting[position() = $which]
  </text>
  <variable name="which" value="1"/>
  <context><xml><greeting/></xml></context>
</query>

此外,我已经将 $which 的值设置为 1 (在 XPath 中,计数总是从 1 开始)。