我想要一个脚本使用不同的xslt样式表自动将一个xml文件转换成多个html文件。但是,无论我尝试什么,我都会遇到错误。我已经在VBscript和JScript中试过,并且都给我错误。 xml文件是537 KB,而xsl文件是5 KB。JScript/VBScript错误
这里是JScript中的迭代1。这个脚本适用于我的一个样式表(一个创建较小html文件的样式表),但是在创建更大的html文件的样式表上,它给了我一个“无效的过程调用或参数”(超出范围)错误:
var xsl = new ActiveXObject("MSXML2.DomDocument.6.0");
xsl.async = false;
var boolval = xsl.load("../Commands/commands.xsl");
if(!boolval)
{
WScript.Echo("XSL load error");
WScript.Quit();
}
var xml = new ActiveXObject("MSXML2.DomDocument.6.0");
xml.async = false;
boolval = xml.load("../Commands/commands.xml")
if(!boolval)
{
WScript.Echo ("XML load error ");
WScript.Quit();
}
var fso = new ActiveXObject("Scripting.FileSystemObject");
var outstr = xml.transformNode(xsl);
var ofl = fso.CreateTextFile("../Commands/commands.html", true, false);
ofl.Write (outstr);
ofl.Close();
所以这里是第2次迭代,而是使用transformNodeToObject方法。在这种情况下,我在msxml6.dll得到一个“未指定的错误”代码80004005:
var xsl = new ActiveXObject("MSXML2.DomDocument.6.0");
xsl.async = false;
var boolval = xsl.load("../Commands/commands.xsl");
if(!boolval)
{
WScript.Echo("XSL load error");
WScript.Quit();
}
var xml = new ActiveXObject("MSXML2.DomDocument.6.0");
xml.async = false;
boolval = xml.load("../Commands/commands.xml")
if(!boolval)
{
WScript.Echo ("XML load error ");
WScript.Quit();
}
var result = new ActiveXObject("MSXML2.DomDocument.6.0");
xml.transformNodeToObject(xsl, result);
result.save("../Commands/commands.html");
我的直觉说,处理器无法处理创建一个文件大。这是对的,还是我做错了什么?如果这只是一个大小问题,那么在vbscript/jscript中可以使用哪些其他库/对象来完成这项工作?
Tomalak, 感谢您的帮助。我尝试了以上所有内容。 xml/xsl格式良好。安装/重新安装没有区别。我能够在不同的机器上重现它。 4.0给出了基本相同的结果(尽管在迭代2中它没有给出错误,但产生了一个空的html文件)。 msxsl.exe运行良好,因此可能是使用的解决方案,但令人沮丧的是我无法使用脚本来处理它。我已经将这些文件上传到http://www.obryantfamilytree.com/TestXSL.zip,主要是为了好奇心,因为msxsl.exe解决方案能够正常工作,所以如果您倾向于... 再次感谢。 – 2009-06-29 16:28:39