问题描述
假设XSLT模板在两种模式下匹配元素,是否可以动态找出哪个模式触发了匹配?
在伪xslt中:
template match="elementname" mode="a b"
if %mode% = 'a' then do something
if %mode% = 'b' then do something
(这在两种模式下90%的模板相同的情况下很有用,但在一种情况下,需要创建附加属性)
(这个问题已经被问到了Is there a way to use mode in an xsl:if test?,我的错误是没有发现它。仍然感谢您的答复)
解决方法
您始终可以使用参数:
<xsl:apply-templates select="*" mode="ab">
<xsl:with-param name="sw">a</xsl:with-param>
</xsl:apply-templates>
<xsl:template select="elementname" mode="a b">
<xsl:param name="sw" />
<xsl:if test="$sw='a'>do this</xsl:if>
</xsl:template>