【发布时间】:2014-11-20 05:42:35
【问题描述】:
我希望在 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。
提前致谢。
【问题讨论】:
-
该错误表明您没有移交外部变量(例如:参数)。输入文档缺少所用前缀的命名空间声明。您的代码包含不匹配的开始标签。至少对我来说,不清楚您要做什么。您正在与 XQuery 错误作斗争,同时想要包含 CDATA 节点。请阅读How to Ask 和how to post an SSCCE,了解一个好问题的重要性。
标签: xml xslt wso2 xquery cdata