XSLT模板不使用参数

时间:2016-02-26 18:37:34

标签: javascript xml xslt

我无法使用xslt参数zoneid

    <xsl:template name="ad">
    <xsl:param name="zoneid" />
    <script><![CDATA[
    var m3_u = (location.protocol=='https:'?'https://XX.php':'http://XX.php');
    var m3_r = Math.floor(Math.random()*99999999999);
    if (!document.MAX_used) document.MAX_used = ',';
    document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
    document.write ("?zoneid={$zoneid}"/>&amp;target=_blank");]]></script>
    </xsl:template>

现在我按照这样运行模板:

 <xsl:template name="ad_300x600">
 <xsl:param name="state" />
 <xsl:param name="locid" />
 <xsl:when test="$state='FL'"><xsl:call-template name="ad"><xsl:with-param name="zoneid">341</xsl:with-param></xsl:call-template></xsl:when>
 </template>

以下是生成的HTML:

        <script>
        var m3_u = (location.protocol=='https:'?'https://XX.php':'http://XX.php');
        var m3_r = Math.floor(Math.random()*99999999999);
        if (!document.MAX_used) document.MAX_used = ',';
        document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
        document.write ("?zoneid={$zoneid}"/>&amp;target=_blank");
        </script>

正如您在生成的HTML中所看到的那样{$zoneid}

我也试过<xsl:value-of select="$zoneid"/>也没有运气。

不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

您正尝试在文字文字内容中使用attribute value templates的语法。

这根本不起作用 - XSLT引擎不会在文本内容中查找AVT。

要输出您需要结束CData部分的变量,请添加<xsl:value-of select="$zoneid"/>(之后开始新的CData部分)。