Subject: RE: Transforming XML to CSV
From: "Andrew Welch" <awelch@xxxxxxxxxxxxxxx>
Date: Tue, 15 Oct 2002 13:56:16 +0100
|
Ryan,
If you work through it logically - you want each column value encosed in
quotes:
<xsl:template match="column">
<xsl:text/>"<xsl:apply-templates/>"<xsl:text/>
</xsl:template>
You also want to output a comma if there is another column after the one
you are on:
<xsl:template match="column">
<xsl:text/>"<xsl:apply-templates/>"<xsl:text/>
<xsl:if test="following-sibling::column">,</xsl:if>
</xsl:template>
After each row you want a carriage return:
<xsl:template match="row">
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
</xsl:template>
Don't forget of course, that you are outputting text and not xml (the
default)
<xsl:output method="text"/>
And that you dont want any presentational whitespace (or should that be
FWS ;) messing up your nice output:
<xsl:strip-space elements="*"/>
I know that was kind of in reverse order, so to put it all the right way
around:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="text"/>
<xsl:template match="row">
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="column">
<xsl:text/>"<xsl:apply-templates/>"<xsl:text/>
<xsl:if test="following-sibling::column">,</xsl:if>
</xsl:template>
</xsl:stylesheet>
good luck
cheers
andrew
> -----Original Message-----
> From: Ryan.Asleson@xxxxxxxxxx [mailto:Ryan.Asleson@xxxxxxxxxx]
> Sent: 15 October 2002 13:31
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Transforming XML to CSV
>
>
>
> Hello,
>
> I wish to transform XML which looks like this:
>
> <row>
> <column>Value 1</column>
> <column>Value 2</column>
> <column>Value 3</column>
> </row>
> <row>
> <column>Value 4</column>
> <column>Value 5</column>
> <column>Value 6</column>
> </row>
>
>
> Into a comma separated values (CSV) format looking like this:
>
> "Value 1","Value 2", "Value 3"
> "Value 4","Value 5", "Value 6"
>
> so it can be read in a spreadsheet program. What XSL will do
> this? I'm
> having trouble because the result is not a hierarchical result.
>
> Thanks!!
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
>
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.401 / Virus Database: 226 - Release Date: 09/10/2002
>
>
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.401 / Virus Database: 226 - Release Date: 09/10/2002
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|