2016-05-09 6 views
-1

XSLT for XMLをCSVに変換する方法がわかりません。名前空間を持つXMLの構造に対してXSLTを記述してください。xmlタグにnamespaceを指定しました。正しいcsv出力に変換するには正しいxsltを指定してください。

<?xml version="1.0" encoding="UTF-8"?> 
<tns:B3Msg xmlns:tns="http://www.example.org/B3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<tns:InitSys>TESTSYSTEM</tns:InitSys> 
<tns:InitSysRefId>654321</tns:InitSysRefId> 
<tns:ValueDate>2016-05-04</tns:ValueDate> 
<tns:ProdType>C:E:O:S:Cash</tns:ProdType> 
<tns:TradeCaptureSystem>TESTSYSTEM2</tns:TradeCaptureSystem> 
<tns:SysTradeid>AM:123456</tns:SysTradeid> 
<tns:OpsfileId> 
</tns:OpsfileId> 
<tns:UniqueSysTradeid>AM:123456</tns:UniqueSysTradeid> 
<tns:Cups> 
<tns:LEG_NUM>0</tns:LEG_NUM> 
<tns:MTM_USD>1475.210881</tns:MTM_USD> 
<tns:MTM_LOCAL></tns:MTM_LOCAL> 
</tns:Cups> 
<tns:InitSys>TESTSYSTEM</tns:InitSys> 
<tns:InitSysRefId>654321</tns:InitSysRefId> 
<tns:ValueDate>2016-05-05</tns:ValueDate> 
<tns:ProdType>C:E:O:S:Cash</tns:ProdType> 
<tns:TradeCaptureSystem>TESTSYSTEM2</tns:TradeCaptureSystem> 
<tns:SysTradeid>AM:123453</tns:SysTradeid> 
<tns:OpsfileId> 
</tns:OpsfileId> 
<tns:UniqueSysTradeid>AM:1234578</tns:UniqueSysTradeid> 
<tns:Cups> 
<tns:LEG_NUM>0</tns:LEG_NUM> 
<tns:MTM_USD>123456</tns:MTM_USD> 
<tns:MTM_LOCAL></tns:MTM_LOCAL> 
</tns:Cups> 
</tns:B3Msg> 

出力: InitSys、InitSysRefId、ValueDate、PRODTYPE、UniqueSysTradeid、LEG_NUM、MTM_USD TESTSYSTEM、654321,2016-05-04、C:E:O:S:現金、AM:123456,0、 1475.210881 TESTSYSTEM、654321,2016-05-05は、C:E:O:S:現金、AM:1234578,0,123456

答えて

0

次はエレガントな解決策はありませんが、それは仕事をしていません:

<xsl:stylesheet 
    xmlns:tns="http://www.example.org/B3" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0" 
    > 
    <xsl:output method="text" indent="yes" /> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="/"> 
     <xsl:text>InitSys,InitSysRefId,ValueDate,ProdType,UniqueSysTradeid,LEG_NUM,MTM_USD</xsl:text> 
     <xsl:value-of select="'&#x0A;'" /> 
     <xsl:apply-templates select="*/tns:InitSys" /> 
    </xsl:template> 

    <xsl:template match="tns:InitSys"> 
     <xsl:apply-templates select="following::tns:InitSysRefId[1]" /> 
     <xsl:value-of select="','" /> 
     <xsl:apply-templates select="following::tns:ValueDate[1]" /> 
     <xsl:value-of select="','" /> 
     <xsl:apply-templates select="following::tns:ProdType[1]" /> 
     <xsl:value-of select="','" /> 
     <xsl:apply-templates select="following::tns:UniqueSysTradeid[1]" /> 
     <xsl:value-of select="','" /> 
     <xsl:apply-templates select="following::tns:Cups[1]/tns:LEG_NUM" /> 
     <xsl:value-of select="','" /> 
     <xsl:apply-templates select="following::tns:Cups[1]/tns:MTM_USD" /> 
     <xsl:value-of select="'&#x0A;'" /> 
    </xsl:template> 

    <xsl:template match="tns:*" priority="-10"> 
     <xsl:value-of select="." /> 
    </xsl:template> 

</xsl:stylesheet> 
関連する問題