It is difficult to diagnose without seeing the stylesheets, but I suspect that your importing stylesheet and imported stylesheet have templates with the same match criteria or the same name and the importing stylesheet has "overridden" the imported stylesheet template, preventing it from executing.
Imported stylesheets have a lower precedence than the templates in your top level stylesheet.
You can use <xsl:apply-imports />
within your main stylesheet template to apply the imported template for that node.
<xsl:template match="foo">
<!--First, turn foo into bar -->
<bar>
<xsl:apply-templates />
</bar>
<!--Now, apply the template from the imported file to do whatever it does-->
<xsl:apply-imports />
</xsl:template>
You can also use mode to define multiple templates for a given node and then apply-templates in different modes to control when they are executed.
http://www.dpawson.co.uk/xsl/sect2/modes.html
For example, if you want to apply
style1.xsl or style2.xsl from
style.xsl, you could define all
templates in style1.xsl with
mode="style1" (and use the mode
attribute too in all call-template and
apply-templates) and all templates in
style2.xsl with mode="style2".
Then, you could have a style.xsl
styelsheet that contains:
<xsl:include href="style1.xsl"/>
<xsl:include href="style2.xsl"/>
<xsl:template match="some pattern">
<xsl:choose>
<xsl:when test="some test">
<xsl:apply-templates select="." mode="style1"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="style2"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>