XSL 模板如何动态确定匹配的模式

XSL template how to determine dynamically which mode was matched

假设一个 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>