Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 组合输入XML以生成另一个XML输出_Xslt - Fatal编程技术网

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

Xslt 组合输入XML以生成另一个XML输出,xslt,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">

正在尝试构建执行以下操作的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>
我必须取这些值并将它们插入其中:

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

提前多谢!
斯拉瓦。

您的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 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>
使用源输入,它应该生成如下XML:

<?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 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>

你能在这里发布你的其他输入吗,请从你的链接指向的三个选项中选择一个。。。。还包括输出应该是什么样子。