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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--