[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] position() ne last()
A little coding tip. I've no idea why this hasn't come up before. It's very common to write things like <xsl:for-each select="para"> <xsl:apply-templates/> <xsl:if test="position() ne last()"> <br/> </xsl:if> </xsl:for-each> But a much better way of coding this is: <xsl:for-each select="para"> <xsl:if test="position() ne 1"> <br/> </xsl:if> <xsl:apply-templates/> </xsl:for-each> Why? Because however hard the optimizer works, the last() function is hard work: it involves some kind of lookahead. With "position() ne last()" the lookahead might be limited to one element, but it's still a lot more complicated than testing whether the position is 1. With streaming coming along, the latter formulation is also more likely to be streamable (because lookahead is impossible with streaming). I might think about doing the above rewrite automatically... Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay
|
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
|