作者:伏染善 | 来源:互联网 | 2023-09-14 13:43
我想将多xsl中js脚本的公共函数提取出一公共函数库。用<xsl:value-ofselectuser:mgetage(.)>的方法可以使用,但在js的函数中却不能调用外部函
我想将多xsl中js脚本的公共函数提取出一公共函数库。
用
的方法可以使用,但在js的函数中却不能调用外部函数。
12 个解决方案
to TXZY(木下藤吉郎) :
我真的是试不出来,请你给出代码范例,江湖救急!
下面是我的一简单范例:
script.xml
script.xsl
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="mynamespace">
my.js
function mexternal()
{
alert('external call');
}
http://www.w3.org/TR/WD-xsl中没有xsl:script的文件调用支持。
可以这样:
var xd=new ActiveXObject("Microsoft.XMLDOM");
xd.async=false;
xd.load("http://yourdomain/youscript.xml");
if(xd.parseError.errorCode)
{
throw(new Error("不能解析xml,脚本资源加载错误"));
}
eval(xd.selectSingleNode("script").text);
to Lostinet(Lostinet):你这个是在http://www.w3.org/TR/WD-xsl名称空间里面执行的吗?
在XSL进行转换的时候,加载一些函数而已。
我没有看到上面的user,应该这样写才好:
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>
var xd=new ActiveXObject("Microsoft.XMLDOM");
xd.async=false;
xd.load("http://yourdomain/youscript.xml");
if(xd.parseError.errorCode)
{
throw(new Error("不能解析xml,脚本资源加载错误"));
}
eval(xd.selectSingleNode("script").text);
]]>
例如yourscript.xml的内容是:
to Lostinet(Lostinet):请教您!下面这些问题?
1、implements-prefix="user" 是什么意思?
2、xmlns:msxsl="urn:schemas-microsoft-com:xslt" 是个什么样的名称空间?它和http://www.w3.org/1999/XSL/Transform有什么区别和连系嘛?
3、throw语句不需要和try...catch...finally 连用嘛?
implements-prefix="user"是MS的方式,
作用和名字空间一样,
可以支持不同公司的N个msxsl:script的的组合而不发生名字冲突。
例如上面提问者的 user:mgetage()
----------------
urn:schemas-microsoft-com:xsl是微软的标准。
------------------
throw如果没有内部的try catch捕获,就会被xsl的解析器处理
----------------------
例如你在asp里面
throw(new Error("Error!!"))
而且脚本又没有捕获住
那么页面是500:
Microsoft JScript 运行时错误 错误 '800a139e'
Error!!
/somefile.asp,行nnn
谢谢!你有什么联系方式嘛?我们以后可以多交流交流!
cxbird@163.com
:)
好啊。
qq68685899
lostinet@chongjian.com
谢谢你们两位!
非常不好意思,我这阵上网不方便,所以没上来看,下星期会比较方便。
我还没调试,应该可以。
再次感谢你们的帮助。