我想在wso2esb中构建字符串请求,因为我正在使用Xquery。我已尝试在xquery中使用字符串函数,但我收到错误,我的xquery就像这样。 我希望将此xml格式发送到我的客户端
<kls:XInput>
<kls:XData>
<DATA>
<REQUEST ID_VALUE="5" NAME_VALUE="khfgd" MESSAGE_VALUE="Who" USER_TYPE="Daimond" PHNO_VALUE="65879541212" ></REQUEST>
</DATA>
</kls:XData>
</kls:XInput>
对于上面的xml请求,我使用下面的xquery来获取deisre xml请求
<x xmlns="http://ws.apache.org/ns/synapse">
declare namespace xs = "http://www.w3.org/2001/XMLSchema";
declare namespace env="http://eai.googl.afr/Envelope";
declare namespace kls="http://eai.klsdop.inso/klsservice";
declare variable $Id as xs:string+ external;
declare variable $Name as xs:string+ external;
declare variable $Message as xs:string+ external;
declare variable $PHNO as xs:string+ external;
element{'kls:XInput'}{
element{'kls:XData'}{string(
<DATA>
<REQUEST ID_VALUE="{$Id}" NAME_VALUE="{$Name}" MESSAGE_VALUE="{$Message}" USER_TYPE="Daimond" PHNO_VALUE="{$PHNO}" ></REQUEST>
</DATA>)
}
}
上面的参数我在我的代码中传递了那些但也无法构建xquery的代码。 但是我在服务器上遇到这样的错误。因为每次数值都会改变。
[2014-11-14 16:23:44,375] ERROR - XQueryMediator Error during the querying No ex
ternal variable named **Id** exists in the query
javax.xml.xquery.XQException: No external variable named **Id** exists in the qu
ery
at net.sf.saxon.xqj.SaxonXQDynamicContext.bindExternalVariable(SaxonXQDy
namicContext.java:225)
at net.sf.saxon.xqj.SaxonXQDynamicContext.bindObject(SaxonXQDynamicConte
xt.java:154)
at org.apache.synapse.mediators.xquery.XQueryMediator.bindVariable(XQuer
yMediator.java:594)
有没有办法在XSLT中解决这个问题,这意味着在XSLT或Xquery中添加CDATA。
提前致谢。
答案 0 :(得分:0)
当您定义XQUERY时,我认为根元素&#39; x &#39;没有命名空间。但是,我可以在上面看到,您已将其与名称空间&#34; http://ws.apache.org/ns/synapse&#34;相关联。 :删除它并再试一次