针对.net的Saxon 9.x vs XQSharp vs AltovaXML

针对.net的Saxon 9.x vs XQSharp vs AltovaXML,.net,xslt,xslt-2.0,.net,Xslt,Xslt 2.0,我需要在.NET4.0中使用XSLT2.0处理器工具。 我发现.net不支持XSLT2.0。替代方案是第三方引擎,如Saxon 9.x或XQSharp。我需要XSLT2.0对商业生产环境的支持,因为性能非常重要。问题: Saxon 9.x或XQSharp,我必须选择哪一个 这两种产品的优点和缺点是什么 还有其他选择吗 与Saxon 9.x或XQSharp相比,AltovaXML怎么样 我是一名XQSharp开发人员,但我会尽量给出一个公正的答案 XQSharp和Saxon都是好产品。每一个都与标

我需要在.NET4.0中使用XSLT2.0处理器工具。 我发现.net不支持XSLT2.0。替代方案是第三方引擎,如Saxon 9.x或XQSharp。我需要XSLT2.0对商业生产环境的支持,因为性能非常重要。问题:

  • Saxon 9.x或XQSharp,我必须选择哪一个
  • 这两种产品的优点和缺点是什么
  • 还有其他选择吗
  • 与Saxon 9.x或XQSharp相比,AltovaXML怎么样

  • 我是一名XQSharp开发人员,但我会尽量给出一个公正的答案

    XQSharp和Saxon都是好产品。每一个都与标准高度一致,并且都以出色的性能为目标。我最好的建议是下载试用版并使用您希望运行的转换进行测试。我们很想知道你进展如何

    如果您在.NET环境中运行,我希望XQSharp具有一些优势。首先,它是在.NET中开发的,而Saxon是在Java中开发的,并使用IKVM在.NET上运行。您可能希望比较Saxon的Java和.NET版本,以确定这是否会带来性能开销

    XQSharp旨在与.NET framework System.Xml和System.Xml.XPath命名空间中的类很好地集成。例如,该实现使用XPathNavigators。你可能会发现这种熟悉感很有帮助

    XQSharp实现并扩展了XslCompiledTransform中的功能,以便从XSLT调用.NET,您可能会发现这很有用


    查看此列表。

    在过去几周中,我使用XQSharp、Saxon 9.x和AltovaXml从使用Microsoft XSLT1引擎重写了我的程序。以下是我的经验:

    AltovaXml

    • 它是免费的(但免费版本是有限的,不附带源代码)
    • 网站还可以,这样你就可以找到你需要的东西
    • api很简单,易于设置
    • 有许多不同语言的api
    • 它使用COM,换句话说,需要本机代码互操作
    • 这是我用过的最慢的引擎
    XQSharp

    • .NET友好型
    • 抛出具有良好描述的良好异常
    • 比AltovaXml更快
    • 它不是免费的,也没有提供任何来源
    Saxon 9.x

    • 网站不友好,很难找到你搜索的东西
    • 由Michael Kay(XSLT 2.0语言W3C规范的编辑)创建
    • 我使用的最快的XSLT2引擎
    • 有一个有限的开源版本,支持模式和流媒体,附带非免费版本
    • 基于Java,但附带到.NET的打包IKVM端口
    对于我的特定XML和XSLT(XSLT1)转换性能比较:

  • 0,02 s Microsoft XSLT1引擎
  • 0,45秒撒克逊9.x
  • 0.60秒XQSharp(带OptimizationLevel.None)
  • 0.90秒XQSharp(默认设置)
  • 1,20 s AltovaXml

  • 我没有找到如何回复上述答案(这给了我一些很好的提示),所以我将在这里发布: AltovaXML已更改其关于AltovaXML.dll的策略。你可以免费获得一个版本,但它缺少一些功能。所以你最好买一个许可证。 Altova似乎也有一些内存问题,因为即使在您关闭连接后,程序似乎仍能继续工作

    萨克森有一个奇怪的先试后买政策。我的意思是,你得到一个30天的测试有点奇怪,但是开始/结束日期移动了10天左右(在saxon网站上阅读更多)。它还会向转换的文件中添加一些文本。我不喜欢这样,因为我希望我转换的文件(即使在测试中)是正确的,这样我就可以看到有可能将文件转发到我们的系统中。我希望在以后的版本中会有所改变


    XQSharp-我还没有尝试过这个,所以我不能对它说太多。当我升级使用XSLT2.0的服务时,我会给这个库/助手一个机会。

    看看编译转换所花的时间与每个实现运行转换所花的时间的明细会很有趣;我怀疑XQSharp和Saxon的大部分时间都在编译中。另外,您使用了哪个Microsoft实现,是XslCompiledTransform吗?