XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Richard PottsSubject: XSL Efficiency tips
Author: Richard Potts
Date: 19 Jul 2007 06:15 AM
I've got a number of XSLTs that I've got integrated into a batch processing application (I'm processing about 50,000 files at a go at the moment and this is increasing). I'm looking to make my XSLT as efficient as possible to reduce processing time.. So are there any general efficiency tips I can review (I couldn't find any)?

I've used the profiler and can see my biggest 'expense' is 'looking up' data in external files e.g.

<xsl:variable name="Name">
<xsl:value-of select="document('filename.xml')/GDX/DATA_IDENTIFIERS/DID[NUMBER = $PIDId]/NAME"/>
</xsl:variable>


Any tips on reducing this 'external file lookup time' or any other 'go faster' tips?

Postnext
Alberto MassariSubject: XSL Efficiency tips
Author: Alberto Massari
Date: 19 Jul 2007 08:13 AM
Hi Richard,
I guess you are invoking that part of the code multiple times (each time looking for a different $pid); in thic case, you could use xsl:key to index the content of the file and quickly pick the right name given the pid.

Hope this helps,
Alberto

Postnext
Richard PottsSubject: XSL Efficiency tips
Author: Richard Potts
Date: 19 Jul 2007 12:39 PM
Thanks for the 'clue' I've not used 'keys' before. After reading a bit this is my best shot at a 'test' file, but it complains about"The attribute 'match' is already used in element xsl:key"??

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key match="PIDName" match="/GDX/DATA_IDENTIFIERS/DID/NAME" use="NUMBER"></xsl:key>
<xsl:template match="/">
<xsl:variable name="PIDId">DD00</xsl:variable>


<xsl:for-each select="document('gdx.xml')">
<xsl:variable name="Name">
<xsl:value-of select="key ('PIDName',$PIDId)"></xsl:value-of>
</xsl:variable>
<xsl:value-of select="$Name"></xsl:value-of>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Posttop
Richard PottsSubject: XSL Efficiency tips
Author: Richard Potts
Date: 20 Jul 2007 08:16 AM
Have figured it out - had a typo in the <xsl:key> line...
Just need to experiment now to see if there is an improvement.

Thanks.




<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="PIDName" match="/GDX/DATA_IDENTIFIERS/DID" use="NUMBER"></xsl:key>
<xsl:template match="/">
<xsl:variable name="PIDId">0xDD00</xsl:variable>


<xsl:for-each select="document('gdx.xml')">
<xsl:variable name="Name">
<xsl:value-of select="key ('PIDName',$PIDId)/NAME"></xsl:value-of>
</xsl:variable>
<xsl:value-of select="$Name"></xsl:value-of>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.