【问题标题】:Run XSLT 2.0 with .Net Core 3.1使用 .Net Core 3.1 运行 XSLT 2.0
【发布时间】:2020-12-03 07:22:17
【问题描述】:

我有一个 .Net Core 3.1 应用程序和一个 XSLT 2.0 脚本。该脚本现在应该由应用程序执行。

首先我尝试过:

//Create a new XslCompiledTransform and load the compiled transformation.
        XslCompiledTransform xslt = new XslCompiledTransform();
        xslt.Load(typeof(Transform));

        // Execute the transformation and output the results to a file.
        xslt.Transform("books.xml", "discount_books.html");

但这似乎只适用于 .net 框架并且仅适用于 XSLT 1.0。

不,我找到了 Nuget-Package Saxon-HE-fixedrefs,根据描述,它应该与 .net 核心兼容。但是在编译时,我的第一行出现错误

Saxon.Api.Processor proc = new Saxon.Api.Processor();

"System.TypeInitializationException: "'net.sf.saxon.Configuration' 的类型初始化器抛出异常。"

FileNotFoundException:无法加载文件或程序集“System.Configuration.ConfigurationManager,Version=4.0.3.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。 "

有什么解决方法吗?

【问题讨论】:

  • 请参阅stackoverflow.com/a/58931196/252228 以获取 XmlPrime 选项,至少在技术上,您需要与他们联系以了解许可或未来版本。至于 Saxon,我不知道该 fixedrefs 项目试图修复什么,但我的理解是 .NET 上的 Saxon 依赖于为 .NET 框架开发的 IKVM,与 .NET 核心不兼容。当然,在 ASP.NET 中,应该可以编写一个 ASP.NET 框架 Web API,您的 ASP.NET Core 页面可以像使用另一个 REST API 一样使用它。
  • Saxon-HE-fixedrefs 最后一次发布是在 2016 年,据说可以与“.NET Core CLI 工具 1.0.0-preview2”一起使用。为什么您希望它在 4 年后与当前版本的 .NET Core 一起使用?

标签: c# asp.net-core xslt saxon


【解决方案1】:

您必须联系包所有者 Max Toro,以了解 Saxon-HE-fixedrefs 未按描述工作的原因。尽管包描述声称它是未经修改的 Saxonica 代码,但 Saxonica 并未分发或支持它,而且就我们 Saxonica 而言,我们认为 Saxon 不适用于 .NET Core。

我们意识到需要一个在 .NET Core 上运行的 Saxon 版本,并且正在寻求各种途径来实现这一点,但我们依赖的 IKVM 技术不支持 Core,并且原始开发人员 Jeroen Frijters不再维护它,所以我们不能做出任何承诺。

【讨论】:

【解决方案2】:

SaxonCS EE 已发布,可与 .NET 5 和 .NET 6(RC/预览版)一起使用,这样就可以将 XSLT 3、XPath 3.1 和 XQuery 3.1 与 .NET Core 一起使用。然而,它只能在商业许可下使用,但您可以使用试用许可对其进行测试,从 Saxonica 下载的地址为 https://www.saxonica.com/download/dotnet.xml,在 NuGet 上的下载地址为 https://www.nuget.org/packages/SaxonCS/

由于 SaxonCS 实现的 XSLT 3.0 向后兼容 XSLT 2.0,所以你想运行它应该没有问题使用 SaxonCS 来运行带有 .NET Core 的 XSLT 2.0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2021-02-05
    • 2021-11-06
    • 2022-01-18
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多