Convert XML to CSV

Turn your XML into CSV for use by applications that don’t support XML.

In [Hack #21] , you saw how to convert a comma-separated values (CSV) file to XML. This hack does the reverse, turning XML into CSV. This could be useful to you if you want to read XML data into an application that does not directly support XML but does support CSV, such as Excel 2000.

Let’s go back to the output of CSVToXML, the file inventory.xml , after it has been cleaned up by [Hack #38] . Here is a portion of it (Example 3-19).

Example 3-19. A portion of inventory.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Generated using Dave Pawson's CSVToXML -->
<Inventory>
 <Line>
  <ItemNumber>line</ItemNumber>
  <Description>desc</Description>
  <Quantity>quan</Quantity>
  <Date>date</Date>
 </Line>
 <Line>
  <ItemNumber>1</ItemNumber>
  <Description>Oak chairs</Description>
  <Quantity>6</Quantity>
  <Date>31 Dec 2004</Date>
 </Line>
 <Line>
  <ItemNumber>2</ItemNumber>
  <Description>Dining tables</Description>
  <Quantity>1</Quantity>
  <Date>31 Dec 2004</Date>
 </Line>
 <Line>
  <ItemNumber>3</ItemNumber>
  <Description>Folding chairs</Description>
  <Quantity>4</Quantity>
  <Date>29 Dec 2004</Date>
 </Line>
 <Line>
  <ItemNumber>4</ItemNumber>
  <Description>Couch</Description>
  <Quantity>1</Quantity>
  <Date>31 Dec 2004</Date>
 </Line>
 ...

You can transform this file with the stylesheet csv.xsl , shown in Example 3-20.

Example 3-20. csv.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output ...

Get XML Hacks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.