2017-07-12 101 views
-1

将XML(带有文档头文件)转换为CSV - 如果我删除XML文件中的文档头文件,能够获得预期的csv输出,但是如果我不删除文档头文件XML文件没有得到预期的csv输出。这里是我的XML将XML(带有文档头文件)转换为CSV

<?xml version="1.0" encoding="UTF-8"?> 
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:secl.010.001.03"> 
    <SttlmOblgtnRpt> 
    <RptParams> 
     <RptId>021/ACSET/00210002/20170628/000002</RptId> 
     <RptDtAndTm> 
     <DtTm>2017-06-28T00:00:00</DtTm> 
     </RptDtAndTm> 
    </RptParams> 
    <Pgntn> 
     <PgNb>1</PgNb> 
     <LastPgInd>true</LastPgInd> 
    </Pgntn> 
    <ClrMmb> 
     <PrtryId> 
     <Id>00210002</Id> 
     <Issr>SETTLING MEMBER</Issr> 
     </PrtryId> 
    </ClrMmb> 
    <RptDtls> 
    </RptDtls> 
    </SttlmOblgtnRpt> 
</Document> 

预期的O/P:

RptId,DTTM,PgNb,LastPgInd,ID,ISSR 021/ACSET/00210002/20170628/000002,2017-06-28T00:00: 00,1,true,00210002,SETTLING MEMBER

这里如果我删除XML文件中的文档头部,得到正确的O/P,但根据我的要求文档头应该在那里,我不能删除它。请帮助我....谢谢。

+2

** 1 **见:https://stackoverflow.com/questions/34758492/xslt-transform-doesnt-work -until-i-remove-root-node/34762628#34762628 ** 2。**如果您无法使其工作,请发布当前的XSLT。 –

+0

嗨迈克尔..它不适合我请在下面看看我的XSLT – Mahesh

+0

它不工作,因为你没有实现给定的建议。 –

回答

0

试试这样说:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:iso="urn:iso:std:iso:20022:tech:xsd:secl.010.001.03" 
exclude-result-prefixes="iso"> 
<xsl:output method="text" encoding="UTF-8" /> 

<xsl:template match="/iso:Document"> 
    <!-- header --> 
    <xsl:text>RptId,DtTm,PgNb,LastPgInd,Id,Issr&#10;</xsl:text> 
    <xsl:for-each select="iso:SttlmOblgtnRpt"> 
     <xsl:value-of select="iso:RptParams/iso:RptId" /> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="iso:RptParams/iso:RptDtAndTm/iso:DtTm" /> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="iso:Pgntn/iso:PgNb" /> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="iso:Pgntn/iso:LastPgInd" /> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="iso:ClrMmb/iso:PrtryId/iso:Id" /> 
     <xsl:text>,</xsl:text> 
     <xsl:value-of select="iso:ClrMmb/iso:PrtryId/iso:Issr" /> 
     <xsl:text>&#10;</xsl:text> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 
+0

非常感谢迈克尔....对我来说工作得很好.... :) – Mahesh