Сложно диагностировать, не видя таблицы стилей, но я подозреваю, что ваша импортируемая таблица стилей и импортированная таблица стилей имеют шаблоны с одинаковыми критериями соответствия или с тем же именем и импорт таблица стилей «переопределила» импортированный шаблон таблицы стилей, не позволяя ему выполнить.
Импортированные таблицы стилей имеют более низкий приоритет, чем шаблоны в вашей таблице стилей верхнего уровня.
Вы можете использовать <xsl:apply-imports />
в своем основном шаблоне таблицы стилей, чтобы применить импортированный шаблон для этого узла.
<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>
Вы также можете использовать режим , чтобы определить несколько шаблонов для данного узла, а затем применять шаблоны в разных режимах, чтобы контролировать, когда они выполняются.
http://www.dpawson.co.uk/xsl/sect2/modes.html
Например, если вы хотите подать заявку
style1.xsl или style2.xsl из
style.xsl, вы можете определить все
шаблоны в style1.xsl с
mode = "style1" (и использовать режим
атрибут тоже во всех call-шаблонах и
apply-templates) и все шаблоны в
style2.xsl с mode = "style2".
Тогда вы можете получить style.xsl
таблица стилей, содержащая:
<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>