组合输入XML以生成另一个XML输出

时间:2014-10-28 20:19:40

标签: xslt

尝试构建执行以下操作的POC: 给定一个简短的输入XML,从中获取值并将它们插入到已知格式的更大XML文件中。 所以如果这是我的输入XML:

<root>
 <transaction ID="TX123" source-system="xyz" timestamp="2015-10-15T14:20:35.954Z" dest-system="abc" status="success" applicationID="some_app" originator="MQ">
 </transaction>
</root>

我必须将这些值插入其中:MQ FTE Transfer Log message format

我必须在 transferSet 节点(时间戳)和 metaDataSet 中插入值。 为了完成这项工作,XSLT必须具有什么样子?

提前致谢! 斯拉瓦。

1 个答案:

答案 0 :(得分:0)

您的XLS应如下所示:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>    

<xsl:template match="/root">
    <transaction>
        <!-- more elements... -->
        <xsl:apply-templates select="transaction"/>
    </transaction>
</xsl:template>

<xsl:template match="transaction">
    <transferSet>
        <xsl:attribute name="startTime"><xsl:value-of select="@timestamp" /></xsl:attribute>
        <metaDataSet>       
            <metaData key="com.ibm.wmqfte.SourceAgent"><xsl:value-of select="@source-system"/></metaData>
            <!-- more elements... -->
        </metaDataSet>
    </transferSet>
</xsl:template>

使用源输入,它应该生成如下XML:

<?xml version="1.0" encoding="UTF-8"?>
<transaction>
    <transferSet startTime="2015-10-15T14:20:35.954Z">
        <metaDataSet>
            <metaData key="com.ibm.wmqfte.SourceAgent">xyz</metaData>
        </metaDataSet>
    </transferSet>
</transaction>