0

我是新手,所以我不知道这种方法是否是传递参数的正确方法。请帮我纠正这个问题或提出另一种方法来做到这一点。我想将节点值从 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>

4

2 回答 2

1

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

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

于 2012-11-04T09:35:45.013 回答
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>
于 2012-11-04T07:20:25.313 回答