Subject: [xsl] Optimizing a XSLT From: "Eric Barre" <ericbarre@xxxxxxxxxxxxxxxxxxx> Date: Mon, 14 Apr 2003 11:01:33 -0700 |
Hi, I wrote a XSL file to transform a XML file to another XML file, everything works fine on small file but eventually I will be using it against large XML file (over 1mg). When I run it against such a large file it takes for ever to return, I mean I have to kill it after running for an hour. Is there a way to optimize the XSL that I have to make it perform better? Here is the 'input' XML: <CSVFile> <ROW> <unit>DOUG_1</unit> <schedule>101</schedule> <textdate>2003-04-09</textdate> <texthour>18</texthour> <mw>999999</mw> <price>16.09</price> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </ROW> <ROW> <unit>DOUG_1</unit> <schedule>199</schedule> <textdate>2003-04-09</textdate> <texthour>18</texthour> <mw>999999</mw> <price>0.00</price> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </ROW> <ROW> <unit>ERIC_1</unit> <schedule>201</schedule> <textdate>2003-04-09</textdate> <texthour>18</texthour> <mw>0</mw> <price>10.79</price> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </ROW> <ROW> <unit>ERIC_1</unit> <schedule>201</schedule> <textdate>2003-04-09</textdate> <texthour>18</texthour> <mw>18</mw> <price>21.59</price> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </ROW> </CSVFile> The XSL: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="no"/> <xsl:template match="/"> <SubmitRequest> <xsl:call-template name="RowProcess"/> <xsl:text disable-output-escaping="yes"></PriceCurvehourly></xsl:text> <xsl:text disable-output-escaping="yes"></OfferPriceCurve></xsl:text> <xsl:text disable-output-escaping="yes"><ScheduleType></xsl:text> <xsl:value-of select="CSVFile/ROW/ScheduleType"/> <xsl:text disable-output-escaping="yes"></ScheduleType></xsl:text> <xsl:text disable-output-escaping="yes"><MarketAvailability></xsl:text> <xsl:value-of select="CSVFile/ROW/MarketAvailability"/> <xsl:text disable-output-escaping="yes"></MarketAvailability></xsl:text> <xsl:text disable-output-escaping="yes"></UnitScheduleOffer></xsl:text> </SubmitRequest> </xsl:template> <!--Processing--> <xsl:template name="RowProcess"> <xsl:for-each select="/CSVFile/ROW"> <xsl:call-template name="UnitProcess"/> </xsl:for-each> </xsl:template> <xsl:template name="UnitProcess"> <xsl:call-template name="unit"/> </xsl:template> <xsl:template name="unit"> <xsl:choose> <xsl:when test="unit=preceding::unit"> <xsl:choose> <xsl:when test="schedule=preceding::schedule"> <xsl:call-template name="PricePointProcess"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="NewUnit"/> <xsl:call-template name="PricePointProcess"/> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:call-template name="NewUnit"/> <xsl:call-template name="PricePointProcess"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="NewUnit"> <xsl:choose> <xsl:when test="position()!=1"> <xsl:text disable-output-escaping="yes"></PriceCurvehourly></xsl:text> <xsl:text disable-output-escaping="yes"></OfferPriceCurve></xsl:text> <xsl:text disable-output-escaping="yes"><ScheduleType></xsl:text> <xsl:value-of select="ScheduleType"/> <xsl:text disable-output-escaping="yes"></ScheduleType></xsl:text> <xsl:text disable-output-escaping="yes"><MarketAvailability></xsl:text> <xsl:value-of select="MarketAvailability"/> <xsl:text disable-output-escaping="yes"></MarketAvailability></xsl:text> <xsl:text disable-output-escaping="yes"></UnitScheduleOffer></xsl:text> </xsl:when> </xsl:choose> <xsl:text disable-output-escaping="yes"><UnitScheduleOffer unit="</xsl:text> <xsl:value-of select="unit"/> <xsl:text disable-output-escaping="yes">" schedule="</xsl:text> <xsl:value-of select="schedule"/> <xsl:text disable-output-escaping="yes">" day="</xsl:text> <xsl:value-of select="textdate"/> <xsl:text disable-output-escaping="yes">"></xsl:text> <xsl:text disable-output-escaping="yes"><OfferPriceCurve></xsl:text> <xsl:text disable-output-escaping="yes"><PriceCurvehourly hour="</xsl:text> <xsl:value-of select="texthour"/> <xsl:text disable-output-escaping="yes">"></xsl:text> </xsl:template> <xsl:template name="PricePointProcess"> <xsl:text disable-output-escaping="yes"><PricePoint MW="</xsl:text> <xsl:value-of select="mw"/> <xsl:text disable-output-escaping="yes">" price="</xsl:text> <xsl:value-of select="price"/> <xsl:text disable-output-escaping="yes">"/></xsl:text> </xsl:template> </xsl:stylesheet> and the expected output: <?xml version="1.0" encoding="UTF-8"?> <SubmitRequest> <UnitScheduleOffer unit="DOUG_1" schedule="101" day="2003-04-09"> <OfferPriceCurve> <PriceCurvehourly hour="18"> <PricePoint MW="0" price="8.04"/> <PricePoint MW="68" price="16.09"/> <PricePoint MW="999999" price="16.09"/> </PriceCurvehourly> </OfferPriceCurve> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </UnitScheduleOffer> <UnitScheduleOffer unit="DOUG_1" schedule="199" day="2003-04-09"> <OfferPriceCurve> <PriceCurvehourly hour="18"> <PricePoint MW="999999" price="0.00"/> </PriceCurvehourly> </OfferPriceCurve> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </UnitScheduleOffer> <UnitScheduleOffer unit="ERIC_1" schedule="201" day="2003-04-09"> <OfferPriceCurve> <PriceCurvehourly hour="18"> <PricePoint MW="0" price="10.79"/> <PricePoint MW="18" price="21.59"/> <PricePoint MW="999999" price="21.59"/> </PriceCurvehourly> </OfferPriceCurve> <ScheduleType>Cost</ScheduleType> <MarketAvailability>RealTime</MarketAvailability> </UnitScheduleOffer> </SubmitRequest> After reading some posting I tried to stay away from the <xsl:for-each> as much as possible as well as using variables and parameters. If anyone could let me know a way to optimize this I would appreciate it. Thanks, Eric Barre XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Sorting Problem, cknell | Thread | Re: [xsl] Optimizing a XSLT, Jeff Kenton |
[xsl] Sorting Problem, walter . crockett | Date | Re: [xsl] Optimizing a XSLT, Jeff Kenton |
Month |