2014-10-28 54 views
1

嘗試構建執行以下操作的POC: 給定一個簡短的輸入XML,從中取值並將它們插入已知格式的較大XML文件。 因此,如果這是我的輸入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必須看起來像什麼?

非常感謝! Slava。

+1

你能在這裏發表您其他的輸入,請(選擇你的鏈接指向的三個之一)。還包括輸出應該是什麼樣子。 – 2014-10-28 20:38:29

回答

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>