如何使用 Xquery 或 XSLT 构建 xml 格式的字符串



我希望在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时,我认为根元素'x'没有命名空间。但是,我可以在上面看到您已将其与命名空间"http://ws.apache.org/ns/synapse"相关联:将其删除并重试

最新更新