有关call-template&with-param的XSLT问题

And*_*son 1 xslt

我正在撞墙,试图弄清楚为什么这不起作用:

<xsl:call-template name="test-template">
    <xsl:with-param name="item" select="WTF" />
</xsl:call-template>

<xsl:template name="test-template">
    <xsl:param name="item" />
    -~<xsl:value-of select="$item" />~-
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

输出是:-~~-当我想要的是-~WTF~-

AJP*_*rez 6

首先,正如RonK所说,你的参数名称应该匹配.

此外,如果要传递值"WTF"(而不是XML节点"WTF"),则需要单引号:

<xsl:call-template name="test-template">
    <xsl:with-param name="item" select="'WTF'" />
</xsl:call-template>

<xsl:template name="test-template">
    <xsl:param name="item" />
    -~<xsl:value-of select="$item" />~-
</xsl:template>
Run Code Online (Sandbox Code Playgroud)