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

时间:2018-08-25 15:00:42

标签: 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] Cannot convert empty-sequence() to document-node(): ().,我试图删除document-node(),但是参数$ name只是空的。

request参数如下:

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

有解决方案吗?

1 个答案:

答案 0 :(得分:1)

问题在于%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