- turn indenting off <xsl:output indent="no" />
- The special-case stylesheet should import the general-case stylesheet, not the other way around.
from Michael Kay
Within a single stylesheet, a pipeline is expressed as a series of variables:
<xsl:variable name="phase-1-output"> <xsl:apply-templates select="/" mode="phase-1"/> </xsl:variable> <xsl:variable name="phase-2-output"> <xsl:apply-templates select="$phase-1-output" mode="phase-2"/> </xsl:variable> <xsl:template match="/"> <xsl:copy-of select="$phase-8-output"/> </xsl:template>
To do this in XSLT 1.0, you need the xx:node-set() extension.
Using multiple stylesheets gives you greater modularity and reusability, but is a bit more complex to deploy. Importantly, it also allows you to incorporate steps into the pipeline [I've never been sure what a step in a pipeline should be called!]? that are implemented using technologies other than XSLT - for example, STX, XQuery?, Java SAX filters, Perl scripts.