Subject: RE: [xsl] transforming a XML to CSV From: "Awasthi, Anand" <Anand_Awasthi@xxxxxxx> Date: Wed, 14 Mar 2001 13:23:16 -0600 |
thanks everyone for pouring repsonses -----Original Message----- From: Evan Lenz [mailto:elenz@xxxxxxxxxxx] Sent: Wednesday, March 14, 2001 1:12 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] transforming a XML to CSV Here's one possible solution. It just asumes that you place the REPORT_ITEM elements inside one root element called REPORT_ITEMS. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:apply-templates select="/REPORT_ITEMS/REPORT_ITEM"/> </xsl:template> <xsl:template match="REPORT_ITEM"> <xsl:apply-templates select="DATA"> <xsl:with-param name="itemNo" select="position()"/> </xsl:apply-templates> </xsl:template> <xsl:template match="DATA"> <xsl:param name="itemNo"/> <xsl:apply-templates select="../HEADER/REPORT"/> <xsl:text>,</xsl:text> <xsl:value-of select="$itemNo"/> <xsl:text>,</xsl:text> <xsl:apply-templates select="../HEADER/UOM"/> <xsl:text>,</xsl:text> <xsl:apply-templates select="*"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="*"> <xsl:value-of select="."/> <xsl:if test="position() != last()"> <xsl:text>,</xsl:text> </xsl:if> </xsl:template> </xsl:stylesheet> Enjoy, Evan Lenz XYZFind Corp. > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Awasthi, > Anand > Sent: Wednesday, March 14, 2001 9:47 AM > 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 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] transforming a XML to CS, Xu, Xiaocun | Thread | RE: [xsl] transforming a XML to CS, Xu, Xiaocun |
RE: [xsl] transforming a XML to CS, Evan Lenz | Date | RE: [xsl] transforming a XML to CS, Xu, Xiaocun |
Month |