XQuery 输入错误:文档节点类型,其中元素预期,对于 WSO2 ESB



我已经在我的WSO2 ESB上定义了一个代理服务,它使用XQuery转换传入的消息(我遵循示例390)。

问题在于 ESB 将定义为 ELEMENT 的变量 payload 转换为定义为 document-node() 的 XQuery vairable。但是,我的 XQuery 只接受element () :

declare variable $payload as element(ns:payload) external;

有没有办法定义 ESB 变量或修改变量表达式,以便element XQuery 的输入?

我试过了:

<xquery key="xquery-key-req">
<variable xmlns:nms="http://my.nms.com" name="payload" expression="$body/nms:payload" type="ELEMENT" />
</xquery>

但这会返回以下错误:

Required item type of first argument of xf:xqueryRequest() is element({http://my.nms.com}payload); supplied value has item type document-node(element({http://my.nms.com}payload)) 

好吧,您要么必须更改查询以期望文档节点,要么必须更改查询的客户端以提供元素。我不知道 ESB,所以我不知道如何在那里进行更改,但更改查询很容易:

declare variable $payloadDoc as document-node(element(ns:payload)) external;
declare variable $payload as element(ns:payload) := $payloadDoc/ns:payload;

相关内容

最新更新