XSLT值得学习吗?

116
前一阵子,我开始一个项目,在该项目中,我设计了一个类似于HTML的XML模式,以便作者们可以用简化格式编写他们的内容(教育课程资料),然后通过XSLT转换成HTML。我尝试(挣扎)使用它一段时间,并将其达到了非常基本的水平,但是随后我因为遇到的限制感到非常恼火(这些限制可能是我知识的限制),当我读到一篇博客建议放弃XSLT,只需在你选择的语言中编写自己的XML转换器时,我热切地跳上了这条路线,结果效果很好。
我至今仍在继续开发它(实际上我现在应该在工作,而不是在SO上打游戏),我看到越来越多的东西使我认为放弃XSLT是一个明智的决定。
我知道XSLT有其存在的意义,因为它是一个被广泛接受的标准,如果每个人都在编写自己的解析器,其中90%的人最终会出现在TheDailyWTF上。但是,考虑到它是一个函数式语言,而不是大多数程序员熟悉的过程式语言,对于像我这样开始类似项目的人,你会推荐他们走我选择的道路,还是坚持使用XSLT

1
我认为你的问题主题(有争议)和你所问的实际问题(即SO读者是否实际使用XSLT或推荐使用它)之间存在严重脱节。同时也不清楚你为什么需要回答这个问题。 - Martin v. Löwis
3
@Martin,你有什么建议作为标题吗?我并不一定需要这个问题被回答,但我认为它很有趣,并且对于那些正在考虑是否要投资于XSLT或其他替代方案的人来说也很有用。 - Benjol
7
我认为XSLT已经在炒作周期的生产力高原上达到了顶峰。 - Dirk Vollmar
我个人认为,除非我将XML通过至少1或2次转换处理,否则它不会增加任何价值。 - user74754
@Martinv.Löwis,我同意你的看法。此外,这确实归结于企业问题,也就是说,如果同一个人做所有事情,并且方法是创业公司...很好,以最快的实现方式完成它,反正在这种情况下你只是自己搞砸而已。虽然 XSLT 在点击之前相当困难,需要具有领域专业知识,但在大型组织中......我的天啊,您会意识到反对 XML 的所有人是多么错误。此外,一旦您了解了 XSLT,它就是最佳选择,只有在您不了解 XSLT 时才会出现其他情况,因此您需要考虑学习投资。 - J. M. Becker
新时代已经到来,JSON和JavaScript(例如客户端、后端、数据库)的文件转换变得更加易读(还有其他非常好的特性)。 - ddsultan
41个回答

0

在我看来,是的。

如果想要一个非常酷的 XSLT 使用示例,请查看暴雪公司的《魔兽世界橱窗》。

http://www.wowarmory.com


是的,你可以用它做一些很酷的东西,而正是WoW首页对XSLT的使用让我首次尝试,但相比过程式方法,它是否更容易 - nickf

0

我曾经广泛使用XSLT...大约几个小时。它很适合像更改元素名称或过滤输入文档(去除不需要的内容)这样的事情。

其他任何事情都会很快变得复杂。这种继承的复杂性加上大多数其他编程语言中所使用的大多数东西(如变量)的缺乏以及使XPath表达式难以阅读的简单方法,真的很痛苦。

最终,XSLT遭受了分裂:程序员不喜欢它,因为它有限制,而其他人根本无法使用它(比如网页设计师或任何其他非程序员类型)。

如果XSLT被推广为XML的某种SQL,情况可能会有所不同。首先,人们甚至不会费心去看它。那些看过的人也不会对痛苦感到惊讶。


在之前的一份工作中,我们使用XML通过XSLT转换为XHTML来制作网站。虽然一开始有些抵触,但是网页设计师最终理解了这个概念,并能够有效地使用XSLT进行工作。永远不要说永远!我认为,任何稍微涉猎过函数式编程的人都不会对XSLT感到太害怕。 - Kyle Walsh

0

我认为这个概念是可行的,也许执行起来并不像它本应该那样“干净”。

然而,我认为它应该被视为一种工具,可能不明智地在每个实例中使用它,但解决问题时永远不应忽略一个工具。

我见过非常好的XSLT,也见过非常糟糕的XSLT使用,我得出结论,其中一些可能取决于开发人员的技能。我认为这需要开发人员同时考虑多个领域。

它是未来吗?也许不是,也许有更好的解决方案...

我不知道什么新技术会出现,但至少学习它是最好的,增加自己的工具集肯定不是坏事吧?


0

我使用XSLT来纠正非常复杂的XML文件中的错误。因此,我使用XSLT来纠正XML中的错误,而不是处理它们。

这很棒。因为语言非常强大,而且它非常适合XML用例。 要在通常的编程语言中做同样的事情,需要花费很长时间来适应每次出现新的变化。

它还可以用于迁移Visual Studio解决方案,而不让Microsoft决定更改哪些内容。因此,将一个解决方案转换,检查发生了什么变化。还原您不想更改的内容,并在所有文件上运行执行工作的XSLT脚本。

因此,我从未使用它来制作Web演示文稿或类似的东西,但它有助于解决我的基于XML的问题。解决这些问题非常强大,值得一试。


0
就生产力而言,使用jQuery风格的库(如pyQuery、phpQuery等)会更好。大多数XML库都很糟糕,而XSLT本质上只是另一个打包成完整语言但没有像样工具集的XML库。jQuery使得在您选择的编程语言中遍历和操作XML格式数据变得非常容易。

0
XSLT并不是XML转换的全部解决方案。然而,仅凭所提供的信息很难判断它是否是解决您问题的最佳方案,或者是否存在其他更有效和易于维护的方法。您说作者可以以简化格式输入其内容 - 是什么格式?文本框?您将其转换为什么样的HTML呢? 要判断XSLT是否是适合此工作的正确工具,需要更详细地了解此转换的功能。

作者们在文本编辑器中编写XML。基本上它是一个简化的HTML - 一些东西已经被删除以强制一致的样式,像<video />标签这样的东西已经被添加为更复杂的HTML的速记。其他元素用于生成菜单/参考书目/词汇表等。 - nickf

0

我也曾经涉足过XSLT的世界,但有时候感觉有些棘手。我认为我的主要问题在于将“纯数据”XML转换成完整的HTML页面时存在困难。回想起来,也许使用XSLT生成一个页面片段,然后使用服务器端脚本(如SSI)将其与其他片段组合在一起,可以解决我的许多问题。

可能犯的一个错误是尝试构建一个通用的页面布局,通过使用document()函数导入XHTML或其他XML数据来包围我的数据。

另一个错误是尝试做编程性的事情,比如创建一个通用模板来生成基于XML数据的表格,其中逻辑会执行一些操作,例如对具有特定值的行使用不同的背景行颜色,并允许您指定要过滤掉的某些列。

更不用说尝试从XML数据中构造值的字符串列表,似乎只能使用递归模板调用才能解决。

那么我得到了什么?嗯,页面源代码就在那里,可供查看。数据和呈现被清晰地分离开来。

我会再这样做吗?可能不会,除非我真的想在一个静态页面上实现数据/展示分离。否则,我可能会编写一个Rails或Java EE应用程序,该应用程序可以使用模板生成XML视图或HTML视图 - 所有好处都在那里,但是我更自然(对我来说)的编程语言更容易上手。


0

我喜欢使用XSLT来改变XML文档的树形结构。但是,我发现它在处理文本方面有些繁琐,因此我会将这部分工作交给一个自定义脚本,在应用XSLT到XML文档之前或之后运行。

XSLT 2.0包含了更多的字符串函数,但我认为它并不适合该语言,并且也没有太多的XSLT 2.0实现。


0

我认为你做得很对。根据我的经验,XSLT开发人员是最难招聘的,因为它既没有被Web开发人员广泛采用,也没有被普通程序员所接受。

因此,你最终不得不支付“精通非主流语言的高级程序员”的溢价,但这种语言可能并不是该程序员最喜欢的。


0

我在使用XSLT方面有着不错的经验,但我并没有将其转换为HTML。可能XSLT-HTML组合对于完成任务来说非常困难。


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