javascript - XSLT 模板不使用参数

标签 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"/>也没有运气。

不知道在这里做什么。

最佳答案

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

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

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

关于javascript - XSLT 模板不使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659246/

相关文章:

Javascript/Toggle/Switch/clearInterval() - 切换关闭时无法 clearInterval()

xml - 如何使用 XSLT 从 XML 文件中删除不需要的元素和属性

javascript - 如何从该字符串中提取单个值?

javascript - 创建一个具有类似 Array 行为的 ES6 类

javascript - 单击页面上的链接后高度变化

java - 我可以使用 <http :auto-config=true> and <UsernamePasswordAuthenticationFilter> at the same time in spring security

php - 在动态 PHP 到 XML 脚本中正确转义 &

php - 使用 php 使用 getElementsByTagName 检索 rss 图像

java - tomcat Web 应用程序中 XML-XSL 转换中的随机错误

XSLT 跨节点和文本排序