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