[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: position() ne last()
That's remarkable. Somehow it is similar to the prepend optimization I wrote about in my blog last December: http://dnovatchev.spaces.live.com/Blog/cns!44B0A32C2CCF7488!981.entry Does a catalog of such optimizations exist? -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play On Thu, Dec 3, 2009 at 4:43 AM, Michael Kay <mike@xxxxxxxxxxxx> wrote: > > 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"> > B <xsl:apply-templates/> > B <xsl:if test="position() ne last()"> > B B <br/> > B </xsl:if> > </xsl:for-each> > > But a much better way of coding this is: > > <xsl:for-each select="para"> > B <xsl:if test="position() ne 1"> > B B <br/> > B </xsl:if> > B <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
|