【问题标题】:Is XSLT worth investing time in and are there any actual alternatives?XSLT 值得投入时间吗?是否有任何实际的替代方案?
【发布时间】:2010-05-20 18:37:34
【问题描述】:

我意识到关于这个主题还有其他一些问题,一般的共识是使用您选择的语言来操作 XML。但是,这个解决方案不太适合我的情况。

首先,项目范围: 我们希望开发独立于平台的电子学习,目前,它是一堆 HTML 页面,但随着它们的发展和发展,它们变得难以维护。 我们已经有大约 30 个模块,每个模块有 10-30 个 HTML 页面,并且一直在增长。

想法: 有一个 XML 文件 + Schema pre eLearning Module,然后生成一些 XSLT 文件,将 XML 处理成 eLearning 模块。通过 XSLT 将 XML 转换为 HTML。

为什么: 我们希望能够轻松地重新格式化内容的灵活性 我意识到 CSS 在这里是一个可行的替代方案,尤其是在视觉上改变外观,但我们可能需要比这更多的功能,并尽可能地重构页面。 如果我们决定以任何方式更改页面布局或功能,我猜测更改“共享”XSLT 文件会比更新 HTML 文件更容易。

根据一些“参数”,我们可以输出完全不同的页面布局/结构,超出 CSS 的能力范围。 XSLT 可以接受 QueryString 参数吗?不确定..

现在,所有这些都必须独立于平台,并且能够“离线”运行,即无需服务器为 HTML 提供动力,因此服务器端技术是不可能的(C#、PHP)

到目前为止我读到的关于 XSLT 的负面评价:

  • 开销?不完全确定为什么...转换为 HTML 需要计算能力吗?
  • 难学
  • 更好的选择

现在,我想确切知道的是:

  • 对于这种“离线”,实际上有任何可行的替代方案吗?
  • 我的做法是否正确
  • 你们有什么建议或替代方案吗?

编辑: 无论有没有 XSL,CSS 和 JQuery 都将是我们解决方案中非常突出的部分 发展。 总体整理(马虎英语!)

【问题讨论】:

  • XSLT 的巨大开销来自 XSLT 处理器。大多数流行的 XSLT 处理器在处理之前将整个文档树加载到内存中。这可能会导致大量服务器端渲染页面的开销。

标签: html xml xslt architecture offline


【解决方案1】:

为此使用 XSLT 方案是合法的。如果您开发了专业知识,XSLT 将非常强大。

  • 开销:是的,对于大型文档,转换可能需要几秒钟。对每分钟调用多次的大型文档进行转换可能是一个糟糕的策略。这对您来说不是什么大问题,因为您不会在需要修改时进行这些转换。
  • 难学。您很快就可以使用 XSLT 提高工作效率,但请注意:就在 XSLT 似乎变得容易的时候,您会惊讶于它突然变得棘手!您认为困难的事情可能很容易,反之亦然。例如,您可能必须导入或创建一些模板来进行一些简单的日期格式设置。不过这一切都是可行的。不要害怕学习如何制作“模板”。
  • 更好的选择。是的,有更好的选择,但它们是特定于平台的。例如,我在 .NET 领域,我已经放弃了 XSLT,转而支持操作我们的新 XElement 等,而 VB.NET 嵌入式 XML 非常强大且简单。但是,当您希望避免依赖特定平台时,XSLT 仍然很棒。

您仍将使用 CSS 作为您策略的一部分,对吗?将 XSLT 更改为始终如一地输出样式比在 30 个模块中手动完成要好,但精心策划的 CSS 样式表仍然可以帮助简化事情(提高可维护性和灵活性)。

总结:组织静态 html 页面的布局/修订,独立于平台,灵活分发:是的,据我所知,你有一个很好的策略。您在 XSLT 中开发的专业知识在未来也会很有用。在掌握 XSLT 之后,您将真正了解 XML,这将永远有用。

【讨论】:

  • 所有样式都在 CSS 中。所有的交互都将是 JQuery。感谢您的建议。
  • +1,好建议。 XSLT 是一种很好且有用的技术,似乎不适合这种用途。但正如帕特里克所说,就在你认为事情变得容易时,它很可能会咬你一口。为此做好准备。但这并不意味着您不应该使用它,我们在我们的几个项目中使用 XSLT 做类似的事情并且它工作得非常好(除了一些关于 xslt 如何给某人带来狂犬病的偶尔的诅咒词)。 XSLT 处理器开销并没有那么可怕,尤其是在按需完成的情况下。 :)
  • @Keeno:听起来你有一个很好的计划。 JQuery(和其他此类高质量的 javascript 库)确实可以轻松实现静态化,不是吗?而且您无法获得比这更好的性能:有人要一个 html 文件,然后您将其交给他们。我想我们会逐渐更频繁地看到这种策略。
【解决方案2】:

XSLT 是在您所描述的情况下用于从 XML 文档生成 HTML 的理想工具。如果您正在使用 XSLT 生成静态 HTML 页面,那么对于 XSLT 的处理开销的常见抱怨(它需要将整个源 XML 文档加载到内存中)实际上是无关紧要的,除非您正在生成数十万个这样的页面。

(事实上,这种抱怨实际上只在源 XML 文档很大的情况下才相关。如果您已经构建了一个围绕从大型 XML 文档动态生成 HTML 的体系结构,那么选择 XSLT 作为您的技术可能是一个错误,但是这不是大错误。)

你当然应该也使用 CSS。

【讨论】:

    【解决方案3】:

    将数据与演示文稿分开。

    将演示文稿渲染卸载到浏览器,使用 CSS 和 CSS“增强器”,如 SASS、Less 等。

    生成严格的 XHTML - 可以使用 CSS 格式化,可以使用 XML 解析器等进行解析

    使用 JQuery 之类的交互性

    XSLT 是相当重量级的,不能很好地扩展,而 XHTML+XSS+JQuery 很好理解并且存在很多工具。

    【讨论】:

      【解决方案4】:

      如果您已经了解 C# 或 VB.NET,请考虑使用 LINQ to XML,代码会更长,但对于非 XSLT 专家而言,编写和维护可能会更轻松。

      这一切都取决于您需要多少 XML 转换,只要 1 或 2 次,我就不会花时间学习 XSLT。

      【讨论】:

        猜你喜欢
        • 2017-03-06
        • 1970-01-01
        • 2022-01-12
        • 2011-06-07
        • 2012-05-03
        • 2010-10-28
        • 2020-04-14
        • 2020-07-13
        • 1970-01-01
        相关资源
        最近更新 更多