есть ли способ заставить этот шаблон применяться с тем же вызовом и с условием, которое включает глобальную переменную, например, match = "$ mode = 'edit' or more-info"
В XSLT 2.0 это совершенно законно :
<xsl:template match="more-info[$mode = ('edit', 'more-info')]"
mode="docuSection">
В XSLT 1.0 запрещено использовать переменные или ключевые ссылки в шаблоне соответствия.
Однако можно использовать любой из следующих методов :
I.В инструкции <xsl:apply-templates>
укажите точный список узлов для обработки.
<xsl:apply-templates mode="docuSection"
select="self::*[$mode = 'edit' or $mode='more-info']" />
||.Сделайте шаблон соответствия более общим, но выполняйте любую обработку в шаблоне, только если выполняется требуемое условие:
<xsl:template match="more-info" mode="docuSection">
<xsl:if test="$mode = 'edit' or $mode='more-info'">
html
</xsl:if>
</xsl:template>