将XML(带文档标题)转换为CSV

时间:2017-07-12 14:45:58

标签: xml csv xslt

将XML(包含文档标题)转换为CSV - 如果我删除XML文件中的文档标题,则能够获得预期的csv输出,但如果我不删除XML文件中的文档标题,则无法获得预期的结果csv输出。这是我的XML

<?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但是根据我的要求文档标题应该在那里我无法删除它。请帮帮我....谢谢。

1 个答案:

答案 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>