【问题标题】:How to build string in xml format using Xquery or XSLT如何使用 Xquery 或 XSLT 以 xml 格式构建字符串
【发布时间】: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 Askhow to post an SSCCE,了解一个好问题的重要性。

标签: xml xslt wso2 xquery cdata


【解决方案1】:

当您定义 XQUERY 时,我认为根元素 'x' 没有命名空间。但是,我可以在上面看到您已将其与命名空间“http://ws.apache.org/ns/synapse”相关联:删除它并重试

【讨论】:

  • 感谢您的重播,但这是 wso2esb 突触的默认命名空间,我没有提到它。每个 xquery 都会自动出现
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多