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