使用xslt将节点值作为参数传递给javascript函数

时间:2012-11-04 07:05:07

标签: javascript xml xslt

我是新手,所以我不知道这种方法是否是传递参数的正确方法。请帮我纠正这个或建议另一种方法来做到这一点。我想将节点值从xslt传递给javascript函数。

这是我的XML文件:

   <?xml version="1.0"?>
   <?xml-stylesheet type="text/xsl" href="sample.xsl"?>
   <One>
       <Two>
           HelloWorld
       </Two>
   </One>

这是xslt文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:variable name="url" select="One/Two"/>
<xsl:template match="/">
<html>
    <script>
        function Myclick(vara)
        {
            alert(vara);            
        }
    </script>
    <xsl:for-each select="One">
        <a>
            <xsl:attribute name="href">
                http://www.google.com
            </xsl:attribute>
            <xsl:attribute name="onClick">                      
                alert($url);
                Myclick($url);
            </xsl:attribute>            
            <xsl:value-of select="Two"/>
        </a>
    </xsl:for-each>
</html>
</xsl:template>

2 个答案:

答案 0 :(得分:1)

您的XSLT代码未调用任何Javascript函数;它只是生成HTML。

您知道要生成什么HTML吗?如果是这样,请告诉我们,我们可以帮助您生成它。如果没有,你就不应该尝试编写XSLT代码 - 永远不要开始编写程序(用任何语言编写),直到你知道你希望它产生什么输出为止。

答案 1 :(得分:0)

试试这个:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
    <xsl:variable name="url" select="One/Two"/>
    <xsl:template match="/">
        <html>
            <head>
                <script>
                    function Myclick(a)
                    {
                        var href = a.getAttribute('href');
                        alert(href);
                        location.href= href;
                    }
                </script>
            </head>
            <body>
                <xsl:for-each select="One">
                    <a>
                        <xsl:attribute name="href">
                            http://www.google.com
                        </xsl:attribute>
                        <xsl:attribute name="onClick">
                            javascript:Myclick(this); return false;
                        </xsl:attribute>
                        <xsl:value-of select="Two"/>
                    </a>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>