[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Transforming XML to CSV

Subject: RE: Transforming XML to CSV
From: "Andrew Welch" <awelch@xxxxxxxxxxxxxxx>
Date: Tue, 15 Oct 2002 13:56:16 +0100
transform xml to csv
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>&#xa;</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>&#xa;</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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.