In his book XSLT Cookbook ( http://www.oreilly.com/catalog/xsltckbk/ ),
Sal Mangano suggests that the preferred methods for optimizing a given
transformation are usually selecting and then matching (as opposed to
filtering via xsl:if or xsl:choose) in that order. He notes, however,
that filtering turned out to be slightly faster than matching in Xalan
(although I couldn't ever find where he specified which version of Xalan
he had benchmarked).

I was wondering if there were a theoretical, specification, or developer
recommendation as to which form of transformation would result in the
most optimized stylesheet. Also, I'm curious whether one form scales
better than another.

Here's an example XML document:

<?xml version="1.0" encoding="utf-8"?>
<outer>
        <inner leaf="true" />
        <inner leaf="false">
                data
        </inner>
        ...
</outer>

So if I'm interested in transforming the inner elements differently
(and possibly in a particular order) based on their attributes, I could
do something like this:

<xsl:template match="inner">
        <xsl:choose>
                <xsl:when test="@leaf='false'">
                        <!-- something here -->
                </xsl:when>
        </xsl:choose>
</xsl:template>

Or this:

<xsl:template match="[EMAIL PROTECTED]'false']">
        <!-- something here -->
</xsl:template>

Or this:

<xsl:template match="outer">
        <xsl:apply-templates select="[EMAIL PROTECTED]'false']" />
</xsl:template>

I guess another way to phrase my question is:

Which is more efficient in Xalan: XPath structures or XSL logic?

I'm particularly interested in examples that would be applied to XML
documents containing at least 50,000 elements.

-tfo

Reply via email to