【问题标题】:征求意见我应该使用 XSLT 2.0 还是直接使用 XSLT 3.0 来完成该任务 [关闭]
【发布时间】:2026-02-15 00:25:02
【问题描述】:

目前我们在 MarkLogic 中存储了 XML 文档。 我需要从XML to HTML 转换那些。 (在 XML 中,有大量的自定义元素。而且 XML 的内容超出了我的控制范围。它们是从 3rd 方供应商处导入的。新的 XML 元素时不时会引入......) 维持这样的转变是一个巨大的运营难题

我想征求意见,我应该使用 XSLT 2.0 还是直接使用 XSLT 3.0 来完成这项任务。

由于 MarkLogic 不支持 XSLT 3.0,我想我需要找到一个 XML 转换服务和其他服务器解决方案。 (我可以使用 SAXON 的 Oxygen XML 编辑器开发 xslt。)但是知道哪个服务器或开源解决方案支持 xslt 3.0?

XSLT 3.0 support in Marklogic xml transformation

似乎使用 XSLT 3.0 的主要好处是它的流转换功能。这是否意味着当使用 xslt 3.0 加载一个大的 html 页面时可能会更加负责和用户友好? 如果我对所有 XML 进行预处理并将其转换为 html 会怎样。那会更快吗? 我想如果我可以将 XML 预处理为 html,是否意味着可以使用 XSLT 2.0?

【问题讨论】:

  • 目前尚不清楚 XSLT 2 或基于 XSLT 2 的处理中似乎缺少哪些特性,从而使 XSLT 2 的使用令人头疼。也许向我们展示输入和输出以及 XSLT 的代表性示例。至于 XSLT 3 中的流式传输,它旨在允许您处理巨大的输入文件(即几 GB 的输入),在正常情况下,首先完全解析为基于 Xdm 树的 XSLT 2 处理由于内存限制而失败,但是新的流式传输,仅转发,逐个节点,处理和转换遇到的每个节点,使用一组相当有限的 XSLT 3 方式避免内存问题。
  • XSLT 2.0 不能做什么?我将从在 MarkLogic 中应用 XSLT 开始并保持简单,直到/除非您发现缺少某些东西并且卡住了。如果您认为您需要流式处理或其他一些功能,请先通过执行 2.0 和 3.0 样式表和计时并分析它来测试该理论,然后再更改您的架构和方法,因为担心缺少 XSLT 3.0 MarkLogic。
  • 关闭,因为该问题明确寻求基于意见的答案,这使其超出了 * 的范围。

标签: xslt xquery xslt-2.0 marklogic xslt-3.0


【解决方案1】:

注定要转换成 HTML 的 XML 文件不可能大到需要流式处理。阈值可能在 200Mb 左右。在目前唯一的流式实现的 Saxon 实现中,流式处理并没有让任何事情变得更快,它只是让它使用更少的内存。

除了流式传输之外,当然还有许多 XSLT 3.0 特性,从文本值模板等次要可用性便利,到对地图、数组和 JSON 的支持等主要功能增强。您是否想通过利用这些功能来限制您对 XSLT 处理器的选择只有您自己可以决定 - 实际上对于 * 来说这不是一个有效的问题。

【讨论】:

    最近更新 更多