Working with Cocoon pipelines makes it easy to modularize XSLT. Because each XSLT module contains a small part of the functionality we usually have to copy along a lot of the XML structure. The XML structure can than be used in a following XSL transformation. The following piece of code will copy all XML:
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|text()|comment()|processing-instruction()">
<xsl:copy-of select="."/>
</xsl:template>