我试图根据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
答案 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开头)。