如何将javascript变量传递给xsl变量?

时间:2014-09-10 17:29:59

标签: javascript xslt

以前曾经问过,但我想评估一下这是否可行?...

有没有一种简单的方法将javascript变量传递给xsl变量?原因是,变量将来自外部脚本。

这是我的非工作代码......

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">

    <xsl:template match="/">

    <div>
    <script type="text/javascript">
    var key = window.location.href;
    </script>

    <xsl:variable name="jsvar">$key</xsl:variable>
    <xsl:value-of select="$jsvar"/>

    </div>
      </xsl:template>

我想显示&#34; Term1&#34;在网页上。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

XSL正在输出script标记,它不是定义在XSL上下文中可执行的任何内容的东西。你可以做的是在全局范围内定义XSL变量,并在脚本和div中重复使用它:

<xsl:variable name="jsvar">Term1</xsl:variable>

<xsl:template match="/">

    <script>
        var key = "<xsl:value-of select="$jsvar"/>";
    </script>

    <div>
        <xsl:value-of select="$jsvar"/>
    </div>

</xsl:template>

如果你想在JS执行时知道一个JS知道的变量,并在浏览器页面的元素中显示它,那么你必须在JS中这样做:

<xsl:template match="/">

    <script>
        window.onload = function() {
            document.getElementById('location').textContent = window.location.href;
        };
    </script>

    <div id="location"></div>

</xsl:template>