我无法获取 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}"/>&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}"/>&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/