[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] n squared behavior with XT for 'preceding' tests?
hi all, we have what is probably a pretty common problem: we have a series of elements in our input which may repeat a heading, or may be different than the preceding instance, like so... <hd>some heading</hd> ... <hd>some heading</hd> ... <hd>some OTHER heading</hd> ... we are checking for the 'change points' like this: <xsl:template match="HD"> <!-- Check to see if the text of the HD matches the previous HD's text --> <xsl:choose> <xsl:when test="not(text()=from-preceding-siblings(HD[position()=1])/text())"> <NEWDOC><xsl:copy> <xsl:apply-templates/> <!-- Output the tag's attributes and its contents --> </xsl:copy></NEWDOC> </xsl:when> <xsl:otherwise> <xsl:copy><xsl:apply-templates/></xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> now, this works fine (with XT) for small documents, but what we find is that, as documents get larger, this template works more and more slowly, in proportion to how far we've progressed through the document. Since our input file is pretty large (10 megs) this n squared behavior eventually brings the process to its knees. We could split up the input, but of course would like to do it all in XSL if there's a Right Way To Do It. Any ideas from the gurus? James Wilson XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|