在REST POST中传递变量

时间:2018-04-13 18:26:39

标签: basex

我试图根据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

1 个答案:

答案 0 :(得分:1)

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开头)。