0

我正在寻找一个让我很困扰的场景的解决方案。

我正在开发骡子 3.3。

我有一些传入的 XML 和来自丰富器的第二个 XML。

现在将来自浓缩器的 xml 添加到我的输入 XML 中。

我的流程如下所示(摘要)

<flow name="main" >
    <file:inbound  ....> 
    <enricher target="#[variable:myProperty]">
        <vm:outbound .... />
    </enricher>

    <xslt transformer .... />
    .......
    .......
    <file:outbound ..>
</flow>

我的 Mule Flow 部分和 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>

谢谢..

4

3 回答 3

2

使用 XSL-T 转换器并将您从扩充器获得的 XML 片段作为命名参数传递给您的 XSL。

这样您就可以轻松地组合两个 XML。

这样做的正确方法是解析RefXML为 DOM 元素,然后将其作为 XSL 参数传递,但Mule 中的一个错误阻止了这一点:(

所以唯一的选择是字符串值的逐字复制RefXML

<xsl:value-of select="$RefXML" disable-output-escaping="yes" />

不是超级令人满意,但它确实有效。

于 2012-10-26T20:02:54.960 回答
0

目前尚不清楚您的问题或问题是什么。我相信您很难将这两个 xml 片段结合起来。

如果是这种情况,我可能会建议使用 Datamapper -http://www.mulesoft.org/documentation/display/MULE3STUDIO/DataMapper+Transformer+Reference

尝试具体说明您的问题,人们也喜欢问您正在使用什么版本的骡子。(希望我能把这篇文章作为评论)

于 2012-10-26T19:22:33.013 回答
0

您还可以使用saxon:parse 扩展名。以下对我有用:

<xsl:param name="RefXMLIn"/>
<xsl:variable name="RefXML" select="saxon:parse($RefXMLIn)" xmlns:saxon="http://saxon.sf.net/"/>

它将接收 XML 的参数重命名为文本,并用解析函数的结果填充原始变量。

这个扩展是特定于 Saxon 的,但是 Saxon 是 Mule 附带的默认 XML 库。

于 2014-03-19T10:38:27.473 回答