Post RestXQ[XPTY0004]无法将空-sequence()转换为document-node()

Post RestXQ[XPTY0004]无法将空-sequence()转换为document-node(),post,type-conversion,xquery,restxq,Post,Type Conversion,Xquery,Restxq,我有一个RestXQ方法: declare %rest:path("/doSomething") %rest:POST %rest:form-param("name","{$name}") function page:doSomething($name as document-node()) { (: Code... :) }; 我试图通过XForms向这个方法发送POST请求。作为客户端上的响应,我得到[XPTY0004]无法将

我有一个RestXQ方法:

declare
    %rest:path("/doSomething")
    %rest:POST
    %rest:form-param("name","{$name}")
    function page:doSomething($name as document-node())
    {
        (: Code... :)
    };
我试图通过XForms向这个方法发送POST请求。作为客户端上的响应,我得到
[XPTY0004]无法将空的-sequence()转换为document-node():()。
我试图删除
document-node()
,但参数$name只是空的

请求参数如下所示:

<data xmlns=""><name>Test</name></data>
测试

有什么解决方案吗?

问题在于
%rest:form param(“name”,“{$name}”)
用于键值对,但您的方法表明您希望
$name作为document-node()
。这两件事放在一起没有意义

您可能需要POST请求的正文,而不是
form param
,为此,您可以使用以下内容:

declare
  %rest:path("/doSomething")
  %rest:POST("{$body}")
function page:doSomething($body as document-node())
{
    (: Code... :)
};

请参见

您的问题是为什么会出现错误?这是因为函数体不能返回文档节点。或者您的问题是,为什么您的函数没有收到“name”参数的预期数据?