Saxon 9.x vs XQSharp vs。AltovaXML for .net

时间:2011-06-24 09:10:44

标签: .net xslt xslt-2.0

我需要在.net 4.0中使用XSLT 2.0处理器工具。 我发现.net不支持XSLT 2.0。替代方案是Saxon 9.x或XQSharp等第三方引擎。我需要XSLT 2.0支持商业生产环境,其中性能非常重要。问题:

  1. Saxon 9.x或XQSharp,我必须选择哪一个?
  2. 这两种产品的专业版和概念是什么?
  3. 还有其他选择吗?
  4. 与Saxon 9.x或XQSharp相比,AltovaXML怎么样?

3 个答案:

答案 0 :(得分:7)

在过去的几周里,我使用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)翻译性能比较:

  1. 0,02 s Microsoft XSLT1引擎
  2. 0,45 s Saxon 9.x
  3. 0.60 s XQSharp(with OptimizationLevel.None)
  4. 0.90 s XQSharp(默认设置)
  5. 1,20 s AltovaXml

答案 1 :(得分:4)

我是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列表。

答案 2 :(得分:1)

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

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

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