【问题标题】:Saxon 9.x vs XQSharp vs AltovaXML for .netSaxon 9.x vs XQSharp vs AltovaXML for .net
【发布时间】:2011-06-24 09:10:43
【问题描述】:

我需要用于 .net 4.0 的 XSLT 2.0 处理器工具。 我发现.net 不支持 XSLT 2.0。替代方案是 3rd 方引擎,如 Saxon 9.x 或 XQSharp。我需要对性能非常重要的商业生产环境提供 XSLT 2.0 支持。问题:

  1. Saxon 9.x 或 XQSharp,我必须选择哪一个?
  2. 这两种产品的优缺点是什么?
  3. 还有其他选择吗?
  4. AltovaXML 与 Saxon 9.x 或 XQSharp 相比如何?

【问题讨论】:

    标签: .net xslt xslt-2.0


    【解决方案1】:

    在过去的几周里,我使用 XQSharp、Saxon 9.x 和 AltovaXml 来重写我的程序,使用 Microsoft XSLT1 引擎。这是我的经验:

    AltovaXml

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

    XQSharp

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

    撒克逊 9.x

    • 网站不友好,搜索的东西很难找到
    • 由 Michael Kay(XSLT 2.0 语言的 W3C 规范的编辑)创建
    • 我使用的最快的 XSLT2 引擎
    • 有一个有限的开源版本、架构感知和流式传输随非免费版本提供
    • 基于 Java,但附带一个打包的 IKVM 到 .NET 的端口

    对于我具体的 XML 和 XSLT (XSLT1) 翻译性能比较:

    1. 0,02 s Microsoft XSLT1 引擎
    2. 0,45 秒撒克逊 9.x
    3. 0.60 秒 XQSharp(使用 OptimizationLevel.None)
    4. 0.90 秒 XQSharp(默认设置)
    5. 1.20 秒 AltovaXml

    【讨论】:

    • 看看编译转换所花费的时间与每个实现运行转换的时间的细分会很有趣;我怀疑 XQSharp 和 Saxon 的大部分时间都在编译中。您还使用了哪个 Microsoft 实现,是 XslCompiledTransform 吗?
    【解决方案2】:

    我是 XQSharp 开发人员,但我会尽量给出公正的答案。

    XQSharp 和 Saxon 都是好产品。每个都高度符合标准,并且都以出色的性能为目标。我最好的建议是下载试用版并使用您希望运行的转换进行测试。我们很想听听您的进展情况。

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

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

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

    查看implementations 列表。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-05-20
        • 2020-08-07
        • 2023-03-17
        • 2020-02-04
        • 2022-08-03
        • 2013-12-23
        • 1970-01-01
        相关资源
        最近更新 更多