我正在寻找一种让我很困扰的方案。
我正在使用m子3.3。
我有一些传入的XML和第二个来自浓度的XMLComcom。
现在,要将来自浓度的XML添加到我的输入XML中。
我的流程如下(摘要)
<flow name="main" >
<file:inbound ....>
<enricher target="#[variable:myProperty]">
<vm:outbound .... />
</enricher>
<xslt transformer .... />
.......
.......
<file:outbound ..>
</flow>
我的m子流部分和XSL如下
给出 <mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="C:NSBTransformerXSL.xsl" outputEncoding="UTF-8" doc:name="XSLT">
<mulexml:context-property key="RefXML" value="#[header:INVOCATION:RefXML]" />
</mulexml:xslt-transformer>
我的XSL在下面给出
<xsl:param name="RefXML"></xsl:param>
<xsl:template match="@*|node()">
<xsl:copy >
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="TXRequest">
<xsl:copy copy-namespaces="no" >
<xsl:apply-templates select="@* | node()"/>
<xsl:copy-of select="$RefXML"/>
</xsl:copy>
</xsl:template>
谢谢..
使用xsl-t变压器,然后将您从浓度从浓度获得的XML片段传递到XSL作为命名参数。
这样,您可以轻松地组合两个XML。
正确这样做的方法是将RefXML
作为DOM元素解析,然后以XSL参数传递,但是mule中的一个错误阻止了以下方法:(
因此,唯一的选项是RefXML
的字符串值的逐字副本:
<xsl:value-of select="$RefXML" disable-output-escaping="yes" />
不是超级满足,但可以工作。
尚不清楚您的问题或问题是什么。我相信这是您很难将两个XML件结合在一起。
如果是这种情况,我建议使用DatamApper -http://www.mulesoft.org/documentation/display/mule3studio/datamapper transformer rereference
尝试在您的问题上具体特定,也喜欢询问您正在使用哪种版本的m子。(希望我可以将此帖子作为评论)
您也可以使用撒克逊人:分析扩展。以下对我有用:
<xsl:param name="RefXMLIn"/>
<xsl:variable name="RefXML" select="saxon:parse($RefXMLIn)" xmlns:saxon="http://saxon.sf.net/"/>
它重命名为文本接收XML的参数,并以parse函数的结果填充原始变量。
此扩展名是特定于撒克逊人的,但是萨克森是带有m子的默认XML库。