Character encoding Can';t使用带“的Xquery查询baseX&;amp&引用;

Character encoding Can';t使用带“的Xquery查询baseX&;amp&引用;,character-encoding,xquery,basex,Character Encoding,Xquery,Basex,我试图将baseX REST API与python的requests post方法结合使用,使用一个保存的.xq文件,其中包含一个带有的查询&。 直接在baseX上运行此保存的查询时,没有问题 响应中显示的请求还包括&原样,而不是&,但我仍然得到以下错误(响应代码为400): “在C:/Program Files(x86)/BaseX/webapp,37/37:\n[XPST0003]无效实体:”&&“,“| |”,“!”)处停止…”” 请求正文的相关部分是: <rest:qu

我试图将baseX REST API与python的requests post方法结合使用,使用一个保存的.xq文件,其中包含一个带有
的查询&。
直接在baseX上运行此保存的查询时,没有问题

响应中显示的请求还包括
&原样,而不是
&
,但我仍然得到以下错误(响应代码为400):

“在C:/Program Files(x86)/BaseX/webapp,37/37:\n[XPST0003]无效实体:”&&“,“| |”,“!”)处停止…””

请求正文的相关部分是:

<rest:query xmlns:rest="http://basex.org/rest"> <rest:text>declare function local:enrich_node($attr, $supertype) {
    $attr, attribute {"supertype"} {$supertype}
};

declare function local:enrich($n as node()) as node() {
   typeswitch($n)
      ...
      case $e as element(operator)
         return 
              ...
              else if ($e/text()=("&amp;&amp;", "||", "!")) then
                element {name($e)}
                    {local:enrich_node($e/@*, "boolop"), for $c in $e/(* | text())
                         return local:enrich($c) } 
              else
                 ...
 };

declare variable $assign_id as xs:string external;
declare variable $submission_id as xs:string external;
for $node in db:open($assign_id, $submission_id)
return local:enrich($node)</rest:text><variable name="assign_id" value="val1"/><variable name="submission_id" value="val2"/></rest:query>
declare function local:enrich\u节点($attr,$supertype){
$attr,属性{“supertype”}{$supertype}
};
将函数声明为local:enrich($n作为node())作为node(){
打字开关($n)
...
案例$e作为要素(运营商)
返回
...
否则,如果($e/text()=(“&;”、“||”、“!”),则
元素{name($e)}
{local:enrich_节点($e/@*,“boolop”),在$e/(*| text())中为$c
返回本地:enrich($c)}
其他的
...
};
将变量$assign_id声明为xs:string external;
将变量$submission_id声明为xs:string external;
对于数据库中的$node:open($assign\u id,$submission\u id)
返回本地:充实($node)
当我从查询中删除
&;
部分时,它会工作

我试图寻找相关的问题,但没有找到任何东西,然后是一个用另一个
&;
来“逃避”它的建议,我尝试了,但返回的错误是4
&
s。
有什么想法吗?

因为
rest:text
的内容必须作为XQuery代码进行评估,但不应该被解析为XML,所以应该将XQuery代码封装在CDATA部分的
rest:text
中。

因为
rest:text
的内容必须作为XQuery代码进行评估,但不应该作为XML进行解析,这应该有所帮助将XQuery代码包装在CDATA区域的
rest:text
中。

我想一个解决方法是使用
codepoints来字符串((38,38))
而不是
”&&;“
。或者尝试将
rest:text
的内容包装为CDATA部分是否有帮助。使用CDATA包装有效,谢谢!我已将我的评论变形为您可以接受的答案,以将问题标记为已解决。我想一种解决方法是使用
代码点来表示字符串((38,38))
,而不是
”&&;“
。或者尝试将
rest:text
的内容包装为CDATA部分是否有帮助。使用CDATA包装有效,谢谢!我已将我的评论变形为您可以接受的答案,以将问题标记为已解决。”。