如何将xsl变量值传递给javascript函数

时间:2011-05-29 09:44:20

标签: javascript xslt

我正在尝试将xsl变量值传递给javascript函数。

我的xsl变量

<xsl:variable name="title" select="TITLE" />

我正在传递像这样的值

<input type="button" value="view" onclick="javascript:openPage('review.html?review=$title')" />

我以不同的方式尝试了上面的代码,但是我得到了错误。

<script type="text/javascript">
                    function jsV() {
                    var jsVar = '<xsl:value-of select="TITLE"/>';
                    return jsVar;
                    }
                </script>

                <input type="button" value="view" onclick="javascript:openPage('javascript:jsV()')" />

I also tried 

<input type="button" value="view" onclick="javascript:openPage('review.html?review='\''
    +$title+'\')" />

有替代方式还是我做得不对?

3 个答案:

答案 0 :(得分:4)

你忘记了{}:

<input type="button" value="view" onclick="javascript:openPage('review.html?review={$title}')" />

答案 1 :(得分:4)

以下是如何执行此操作的工作示例:

此转化:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
   <xsl:variable name="vTitle" select="TITLE"/>

     <input type="button" value="view"
     onclick="javascript:openPage('review.html?review={$vTitle}')" />
 </xsl:template>

</xsl:stylesheet>

应用于此XML文档(未提供XML文档!):

<contents>
 <TITLE>I am a title</TITLE>
</contents>

生成想要的正确结果

<input type="button" value="view" 
 onclick="javascript:openPage('review.html?review=I am a title')"/>

解释:使用 AVT (属性值模板)。

答案 2 :(得分:3)

通过执行以下操作,还可以从同一文件中的JavaScript代码访问xsl变量:

<xsl:variable name="title" select="TITLE"/>

<script type="text/javascript">
    function getTitle() {
        var title = <xsl:value-of select="$title"/>;
        return title;
    }
</script>