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

时间:2014-11-20 05:42:35

标签: xml xslt wso2 xquery cdata

我想在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。

提前致谢。

1 个答案:

答案 0 :(得分:0)

当您定义XQUERY时,我认为根元素&#39; x &#39;没有命名空间。但是,我可以在上面看到,您已将其与名称空间&#34; http://ws.apache.org/ns/synapse&#34;相关联。 :删除它并再试一次