xslt - msxsl.exe的后继者?

标签 xslt msxml6 msxsl

我们打算将我们的框架从msxml4迁移到msxml6。
我们目前仍在使用msxsl.exe。
似乎仅支持高达4.0的MSXML版本,作为命令行
msxsl.exe -u版本6.0
告诉我。
是否有msxsl.exe的后继产品?
是否有其他命令行处理器?

最佳答案

有多种方法可以替换现有处理器,这仅取决于所需的功能级别以及是否需要特定于MSXML的功能。例如,存在xsltproc,它是libxslt的一部分(例如,可以从here获取一些Windows二进制文件)。 This页面为您提供了C#的快速替代方法,但它们都更改了命令行用法,并且可能未实现相同的MSXML扩展(xsltproc当然不会)。
如果您只对使用MSXML 6的简单命令行处理器感兴趣,那么可能会比使用简单的JScript应用程序做得更糟。将以下代码另存为xsltr.js并以cscript xsltr.js input.xml template.xsl output.txt的身份运行:

var adTypeBinary = 1;
var adSaveCreateOverWrite = 2;
var adSaveCreateNotExist = 1;

try
{
    var args = WScript.Arguments;

    if(args.length < 3)
    {
        WScript.Echo("Usage: xsltr.js file.xml file.xsl output.txt");
        WScript.Quit(1);
    }
    else
    {
        var xml = args(0);
        var xsl = args(1);
        var out = args(2);

        var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
        var xslDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");

        /* Create a binary IStream */
        var outDoc = new ActiveXObject("ADODB.Stream");
        outDoc.type = adTypeBinary;
        outDoc.open();

        if(xmlDoc.load(xml) == false)
        {
            throw new Error("Could not load XML document: " + xmlDoc.parseError.reason);
        }

        if(xslDoc.load(xsl) == false)
        {
            throw new Error("Could not load XSL document: " + xslDoc.parseError.reason);
        }

        xmlDoc.transformNodeToObject(xslDoc, outDoc);
        outDoc.SaveToFile(out, adSaveCreateOverWrite);
    }
}
catch(e)
{
    WScript.Echo(e.message);
    WScript.Quit(1);
}
仍然有您不能使用msxsl的理由吗? MSXML 4.0版从来都不是标准安装,因此您总是必须手动安装(尽管我认为Office附带了它)。您是否可以在需要进行处理的计算机上部署版本4?

关于xslt - msxsl.exe的后继者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058247/

相关文章:

xml - 如何将纯文本转换为xsl

xslt - 如何编写XPath/xslt查询以匹配两个属性

javascript - MSXML4 与 MSXML6 XSLT 解析命名空间错误

java - 使用java获取xsl消息

c++ - 在 Visual C++ 上使用 msxml6.h 时出错

xml - 用于检索最旧/最早节点的 Xpath 表达式

.net - .NET 2 或 .NET 4 中的 msxsl 内存泄漏错误是否已修复?

javascript - 将 xsl 变量传递给 javascript 函数