XSLT是否值得投入时间学习,有没有其他实际的替代方案?

3
我知道关于这个问题已经有了几个其他的提问,通常的共识是使用您选择的语言来操作XML。然而,这种解决方案并不完全适合我的情况。
首先,项目的范围: 我们想要开发平台无关的电子学习,目前,它是一堆HTML页面,但随着它们的增长和发展,它们变得很难维护。 我们已经有大约30个模块,每个模块有10-30个HTML页面,而且这些都在不断增长。
想法: 有一个XML文件+Schema预电子学习模块,然后生成一些XSLT文件,将XML处理成电子学习模块。通过XSLT将XML转换为HTML。
为什么: 我们希望能够灵活地重新格式化内容。 我知道CSS在这里是一个可行的替代方案,特别是用于视觉样式的修改,但我们可能需要更多的功能,并进一步重构页面。 如果我们决定以任何方式改变页面布局或功能,我猜更改“共享”的XSLT文件比更新HTML文件更容易。
根据一些“参数”,我们可以输出截然不同的页面布局/结构,超越CSS所能达到的范围。 XSLT是否可以接收QueryString参数?不确定..
现在,所有这些都必须是平台无关的,并且能够在“离线”状态下运行,即没有服务器支持HTML,因此服务器端技术是不可行的(C#,PHP)。
到目前为止我读到的XSLT负面信息包括:
- 开销?不确定原因...是将其转换为HTML所需的计算能力吗? - 难以学习 - 更好的替代方案
现在,我想要确切地知道:
- 有没有任何“离线”可行的替代方案? - 我是否以正确的方式进行? - 您们有什么建议或替代方案吗?
编辑: 无论是否使用XSL,CSS和JQuery都将是我们开发的重要部分。 对通顺程度进行了一般性整理(拼写错误)。

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

8

使用XSLT方案是合理的。如果你掌握了相关技术,XSLT是非常强大的工具。

  • 开销:对于大型文档,转换可能需要几秒钟的时间。如果每分钟多次调用一个大型文档的转换,这可能是一种不良策略。但是在您只需在需要修订时进行转换而不是按需进行转换时,这将不会成为大问题。
  • 难以学习:使用XSLT很快就能提高生产力,但请注意:当你认为XSLT变得容易时,你会突然发现它变得棘手起来!你认为困难的事情可能很容易,反之亦然。例如,您可能需要导入或创建一些模板才能执行一些简单的日期格式化。尽管如此,这些都是可行的。不要害怕学习如何做“模板”。
  • 更好的替代品:是的,有更好的替代方案,但它们是特定于平台的。例如,我在.NET领域中,我已经放弃了XSLT,转而使用我们的新XElements等进行操作,VB.NET嵌入式XML非常强大且易于使用。但是当你想避免依赖特定平台时,XSLT仍然是一个很好的选择。

你仍然会在策略中使用CSS,对吗?将XSLT更改为输出一致的样式比手动处理30个模块要好,但一个精心计划的CSS样式表仍然可以帮助简化事情(增加可维护性和灵活性)。

总之:为了组织静态HTML页面的布局/修订,实现跨平台、灵活分发:从我所看到的情况来看,您有一个很好的策略。还有,您掌握的XSLT技能将来也将非常有用。掌握XSLT后,您将真正理解XML,这对您将有永久的帮助。


所有的样式将会由CSS控制。所有的交互将会使用JQuery实现。 谢谢你的建议。 - Keeno
+1,好建议。XSLT是一项很好且有用的技术,似乎非常适合这种用途。但正如Patrick所说,就在你认为它变得容易时,它很可能会咬你的手。要有所准备。但这并不意味着你不应该使用它,我们在几个类似的项目中使用XSLT,效果非常好(除了偶尔会有人因为XSLT而发出咒骂)。XSLT处理器的开销并不是非常可怕,特别是如果是按需完成的话。 :) - wasatz
@Keeno:听起来你有一个不错的计划。JQuery(以及其他高质量的JavaScript库)确实使得静态网站变得容易,不是吗?而且你无法获得比这更好的性能:当有人请求HTML文件时,你直接将其交给他们。我认为我们会逐渐看到这种策略更加普遍。 - Patrick Karcher

4
XSLT是从XML文档生成HTML的理想工具,适用于您所描述的情况。关于XSLT处理开销的普遍抱怨——它需要将整个源XML文档加载到内存中——如果您使用XSLT生成静态HTML页面,则并不相关,除非您要生成数十万个页面。
(实际上,这种抱怨只与源XML文档较大的情况有关。如果您已经构建了一个动态从大型XML文档生成HTML的架构,并选择XSLT作为您的技术,那么可能是一个错误,但这不是一个很大的错误。)
当然,您还应该使用CSS。

2

将数据与表现分离。

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

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

使用JQuery实现交互。

XSLT非常笨重,不会很好地扩展,而XHTML+XSS+JQuery则被广泛理解,存在许多工具。


0
如果您已经熟悉C#或VB.NET,考虑使用LINQ to XML,代码可能会更长,但对于非XSLT专家来说编写和维护可能会更轻松。
这完全取决于您需要多少个XML转换,如果只需要1或2个,那么我不会花时间学习XSLT。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接