RestXQ [XPTY0004] 无法将空序列 () 转换为文档节点 ()

RestXQ [XPTY0004] Cannot convert empty-sequence() to document-node()

我有一个 RestXQ 方法:

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

我试图通过 XForms 向该方法发送 POST 请求。作为对客户端的响应,我得到 [XPTY0004] Cannot convert empty-sequence() to document-node(): (). 我试图删除 document-node() 但参数 $name 只是空的。

请求参数如下所示:

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

有什么解决办法吗?

问题是 %rest:form-param("name","{$name}") 用于键值对,但您的方法表明您想要 $name as document-node()。这两件事放在一起没有意义。

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

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

http://www.adamretter.org.uk/papers/restful-xquery_january-2012.xhtml#media-example