0

我在我的 WSO2 ESB 上定义了一个代理服务,它使用 XQuery 转换传入的消息(我正在关注Sample 390)。

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

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

有什么方法可以定义 ESB 变量或修改变量表达式以便输入到 XQuery 中element

我试过 :

<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)) 
4

1 回答 1

2

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

declare variable $payloadDoc as document-node(element(ns:payload)) external;
declare variable $payload as element(ns:payload) := $payloadDoc/ns:payload;
于 2012-06-01T08:05:59.247 回答