首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

怎么在xslt中引用js

2012-12-15 
如何在xslt中引用js1.我有一个js文件,如何在js中引用里面的函数?2.如果在xsl里面写一个函数?如打开子窗体

如何在xslt中引用js
1.我有一个js文件,如何在js中引用里面的函数?

2.如果在xsl里面写一个函数?如打开子窗体的函数:
window.open("Form.aspx?taskid="+taskid,"_blank","height=700,width=800,resizable=yes,scrollbars=auto");

3.下面的代码
<msxsl:script language="javascript" implements-prefix="user">
    <![CDATA[ 
    function OpenWin(){ 
       document.write("123123");
    } 
    ]]>
  </msxsl:script>

运行的时候提示:未声明变量“document” ---> System.Xml.Xsl.XslLoadException: 未声明变量“document
[最优解释]
首先,你要分清楚你JS代码操作的对象是HTML DOM,还是XSLT里的DOM。
XSLT仅仅帮你完成将XML转换为HTML的工作,期间的JS代码也是用来完成这个工作的一种手段。
换句话说,两种JS的执行时间点是不一样的。XSLT JS是运行在XSLT过程中,也就是XML=>HTML;HTML JS则是运行在HTML加载,或者与用户交互的过程中。搞清楚这些,你就明白XSLT中的JS该怎么用了。

在回答你的3个问题前,我假设你懂HTML中的JS。
1,如果你是指在XSLT里引用第二句所说的“XSLT仅仅帮你完成将XML转换为HTML的工作,期间的JS代码也是用来完成这个工作的一种手段。”,XSLT中的JS,并没有document对象。HTML DOM里面的对象,在XSLT中都不存在。如果是想在HTML加载时运行的JS,则不需要用XSLT脚本语法来写。
[其他解释]
首先,你要明白XSLT是XML格式转换的语言,可以把一个XML转换成其他格式。
在这里,需要把XML文件转换成HTML,而JS、CSS等都是HTML的内容。JS的写法只需要满足HTML、JS的规范即可。
如下所示:


<xsl:output method="html"/>
    <xsl:template match="root">
    <html>
    <head>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js"/>
    </head>
<body>
<xsl:for-each select="people">
    <div class="p_name">
    <xsl:value-of select="."/>
    </div>
</xsl:for-each>
    </body>
    <script type = "text/javascript">
    alert(1);
    jQuery(".p_name").css("border", "1px solid red");
    </script>
        </html>
    </xsl:template>

[其他解释]
我也遇到该问题,xslt文件如下,其中引入了一个Base.js,里面定义了一个C变量,在下面的msxsl:script调用却不行,说未声明变量“C”:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:user="Qin">
<xsl:output method="html" indent="yes"/>
<xsl:template name="AA" match="Nav">
<script type="text/javascript" src="http://localhost:60080/Scripts/Base.js"></script>
<xsl:for-each select="div/*">
<xsl:copy-of select="."/>
<xsl:if test="user:Isw()">
<i name="Ctr">
<a href="####">编辑</a>
<a href="####">删除</a>
<a href="####">添加</a>
</i>
</xsl:if>
</xsl:for-each>
</xsl:template>
<msxsl:script language="javascript" implements-prefix="user" >
function Isw()
{
var rUrl = "http://localhost:60080/Service.asmx/Existed?Nm=test";
C.EXHR(cNmH, "GET", rUrl);
function cNmH(Rsp)
{
return Rsp.documentElement.firstChild.nodeValue.toLowerCase() == "true" ? true : false;


}
}
</msxsl:script>
</xsl:stylesheet>
[其他解释]
哪位知道怎么实现吗?

热点排行