RE: [xsl] transforming a XML to CSV

Subject: RE: [xsl] transforming a XML to CSV
From: "Xu, Xiaocun" <XXu@xxxxxxxxxxxx>
Date: Wed, 14 Mar 2001 13:36:47 -0500
Hi, Anand:

	This should be pretty easy to do.  The following template should
transform your sample XML to the CSV you wanted.

Enjoy :)
Xiaocun Xu
Emptoris, Inc.
xxu@xxxxxxxxxxxx

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
	<xsl:output method="text"
		encoding="ISO-8859-1"/>

	<xsl:strip-space elements="*"/>

	<xsl:template match="/">
		<xsl:apply-templates select="REPORT_ITEM"/>
	</xsl:template>

	<xsl:template match="REPORT_ITEM">
		<xsl:apply-templates select="DATA"/>
	</xsl:template>

	<xsl:template match="HEADER">
		<xsl:value-of select="REPORT"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="SYSTEM"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="TZ"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="MKT_TYPE"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="SCHED_CLASS"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="UOM"/>		
		<xsl:text>,</xsl:text>
		<xsl:value-of select="INTERVAL"/>
<xsl:text>,</xsl:text>
		<xsl:value-of select="SEC_PER_INTERVAL"/>
	</xsl:template>

	<xsl:template match="DATA">
		<xsl:apply-templates select="../HEADER"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="DATA_ITEM"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="SOURCE"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="SINK"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="RESOURCE"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="OPR_DATE"/>
		<xsl:text>,</xsl:text>
		<xsl:value-of select="INTERVAL_NUM"/>		
		<xsl:text>,</xsl:text>
		<xsl:value-of select="NULL_FLAG"/>
<xsl:text>,</xsl:text>
		<xsl:value-of select="VALUE"/>
<xsl:text>&#013;&#010;</xsl:text>
	</xsl:template>
</xsl:stylesheet>

-----Original Message-----
From: Awasthi, Anand [mailto:Anand_Awasthi@xxxxxxx]
Sent: Wednesday, March 14, 2001 12:47 PM
To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx'
Subject: [xsl] transforming a XML to CSV



Hi,

I am trying to transform  the following XML file in to a comma separated
file (.csv).


<REPORT_ITEM>
		<HEADER>
			<REPORT>Venkatesh</REPORT>
			<SYSTEM>OASIS</SYSTEM>
			<TZ>PPT</TZ>
			<MKT_TYPE>R</MKT_TYPE>
			<SCHED_CLASS/>
			<UOM>US$</UOM>
			<INTERVAL>ENDING</INTERVAL>
			<SEC_PER_INTERVAL>3600</SEC_PER_INTERVAL>
		</HEADER>
		<DATA>
			<DATA_ITEM>SPIN_PRICE</DATA_ITEM>
			<SOURCE/>
			<SINK/>
			<RESOURCE>ZP26</RESOURCE>
			<OPR_DATE>20000512</OPR_DATE>
			<INTERVAL_NUM>24</INTERVAL_NUM>
			<NULL_FLAG>F</NULL_FLAG>
			<VALUE>0.25</VALUE>
		</DATA>
		<DATA>
			<DATA_ITEM>SPIN_PRICE</DATA_ITEM>
			<SOURCE/>
			<SINK/>
			<RESOURCE>ZP26</RESOURCE>
			<OPR_DATE>20000512</OPR_DATE>
			<INTERVAL_NUM>25</INTERVAL_NUM>
			<NULL_FLAG>T</NULL_FLAG>
			<VALUE/>
		</DATA>
	</REPORT_ITEM>
	<REPORT_ITEM>
		<HEADER>
			<REPORT>Parigi</REPORT>
			<SYSTEM>OASIS</SYSTEM>
			<TZ>PPT</TZ>
			<MKT_TYPE>D</MKT_TYPE>
			<SCHED_CLASS/>
			<UOM>MW</UOM>
			<INTERVAL>ENDING</INTERVAL>
			<SEC_PER_INTERVAL>3600</SEC_PER_INTERVAL>
		</HEADER>
		<DATA>
			<DATA_ITEM>SPIN_PRICE</DATA_ITEM>
			<SOURCE/>
			<SINK/>
			<RESOURCE>ZP26</RESOURCE>
			<OPR_DATE>20000512</OPR_DATE>
			<INTERVAL_NUM>24</INTERVAL_NUM>
			<NULL_FLAG>F</NULL_FLAG>
			<VALUE>0.25</VALUE>
		</DATA>
		<DATA>
			<DATA_ITEM>SPIN_PRICE</DATA_ITEM>
			<SOURCE/>
			<SINK/>
			<RESOURCE>ZP26</RESOURCE>
			<OPR_DATE>20000512</OPR_DATE>
			<INTERVAL_NUM>25</INTERVAL_NUM>
			<NULL_FLAG>T</NULL_FLAG>
			<VALUE/>
		</DATA>
	</REPORT_ITEM>  


the kind of output which i am trying to achieve is something like :
( i want HEADER ELEMENT to repeat  with all DATA_ITEM ELELMENTS )

Venkatesh,1,US$,SPIN_PRICE,,,ZP26,20000512,24,F,0.25
Venkatesh,1,US$,SPIN_PRICE,,,ZP26,20000512,25,T
Parigi,2,MW,SPIN_PRICE,,,ZP26,20000512,24,0.25
Parigi,2,MW,SPIN_PRICE,,,ZP26,20000512,25,T





could someone please help me ??


thanks 
Anand

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread