Если ваши блоки «внешнего кода XSL» можно поместить в именованный шаблон, вы можете сделать это легко.
Вот общий пример использования основной таблицы стилей XSLT (base.xsl) и включения внешнегоТаблица стилей XSLT (include.xsl).
input.xml
<test>
<foo trigger-template="yes">
<bar>Original "bar".</bar>
</foo>
<foo trigger-template="no">
<bar>Original "bar".</bar>
</foo>
</test>
base.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="include.xsl"/>
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo">
<foo>
<xsl:if test="@trigger-template='yes'">
<xsl:call-template name="external-template">
<xsl:with-param name="statement" select="'Successfully called external XSL code!'"/>
</xsl:call-template>
</xsl:if>
<xsl:apply-templates/>
</foo>
</xsl:template>
</xsl:stylesheet>
include.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="external-template">
<xsl:param name="statement"/>
<bar><xsl:value-of select="$statement"/></bar>
</xsl:template>
</xsl:stylesheet>
output.xml
<test>
<foo>
<bar>Successfully called external XSL code!</bar>
<bar>Original "bar".</bar>
</foo>
<foo>
<bar>Original "bar".</bar>
</foo>
</test>