Я пытаюсь, чтобы скрипт автоматически преобразовывал xml-файл в несколько html-файлов, используя разные таблицы стилей xslt. Однако, что бы я ни пытался, я получаю ошибки. Я пробовал это как в VBscript, так и в JScript, и оба дают мне ошибки. Размер файла xml составляет 537 КБ, а размер файла xsl - 5 КБ.
Вот итерация 1 в JScript. Этот скрипт работает для одной из моих таблиц стилей (таблица стилей, которая создает меньший HTML-файл), но в таблице стилей, которая создает больший HTML-файл, он дает мне «недопустимый вызов процедуры или аргумент» на outstr (как если бы outstr не сделал вернусь неправильно) ошибка:
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. В этом случае я получаю код «Unspecified error» 80004005 в msxml6.dll:
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, которая выполнит работу?