为什么XSLT似乎会刺激这么多人呢?

时间:2009-07-13 21:32:53

标签: xslt

XSLT是什么让人感到恼火?它是语法(这是非常不寻常的)还是只是XSLT的工作方式?是否缺少功能?

前一段时间我做了一些XSLT(大约800行)并发现它并没有那么糟糕。那为什么一般的敌意呢?

13 个答案:

答案 0 :(得分:20)

我认为人们发现很难理解XSLT(并且讨厌它),因为它本质上是功能性和声明性的,不像c#或java编程。当XPATH语句变得聪明时,浏览文档最终会变得复杂 - 尽管这是XPATH而不是XSLT的一个特性。当您在设计时不知道文档的确切结构时,XPATH通常会变得复杂,因此您开始查询兄弟姐妹,后代和祖先。这是人们继承复杂的XSLT开始考虑职业变化的时候!

使用XSLT,它是“正确工作的正确工具”。它旨在非常快速有效地将xml文档转换为另一个xml文档。 XSLT几乎可以肯定是用于此目的的最佳工具,因为它具有可扩展性,它已经为此目的而编写,在xml处理器中全面支持它,以及我已经没有提及性能。常见用例:

  1. 将纯粹包含数据的xml文档转换为公开用户界面(如xhtml文档)的文档
  2. 将xml文档转换为不同的结构以适合其他人的模式,例如Biz2Biz通讯
  3. xslt技术的一个很好的实现是apache-cocoon项目,它将xml文档转换为多种输出格式,包括html,excel,图表图像,带有可扩展插件架构的pdf。我们在报告平台上大量使用它,效果很好。当开发人员开始使用它时,他们会发现同样熟悉的问题。一旦他们克服了他们,他们通常会写我在这里的东西。

    我曾与一个不想和(并学习)XSLT合作的人一起工作,最后向客户端展示了一个演示文稿,花了20多秒来渲染一个页面。当我最终说服他使用XSLT转换而不是他愚蠢的DOM代码时,花了一秒钟。

答案 1 :(得分:12)

我喜欢xslt,并且使用它很多。只要你想到函数式编程(即set-once变量,类似于F#等),那么它就是非常通用的。我经常使用它进行数据转换,演示(特别是[x] html)和多功能code generation

绝对高度编程相关;除了程序员之外没有人能够理解它 - 但这是一个非常强大的工具。

我有一些xslt(分成几个xsl:import / xsl:include个文件)基本上超过你在帖子中提到的800个...它真的可以(正确使用时)是一个功能齐全的环境。

注意:

  • 最好在服务器上使用;客户端支持是hit'n'miss
  • 在1.0中错过了一些关键的事情;正则表达式;不区分大小写;等
  • 如果空白很重要,
  • 可能会很棘手

xslt(作为单独的文件)的一个特别有用的功能是它可以在不重建任何代码的情况下更改转换。代码示例来自我运行的开源项目;我知道有几个用户已经根据他们的本地标准进行了调整并调整了代码。一种用途甚至可以用于为整个第二语言编写变换 - 而且所有这些都不会触及二进制文件。

答案 2 :(得分:6)

我个人不喜欢XSLT,因为它似乎结合了开发人员社区中一般不喜欢的几件事情:

  • 它使用魔术字符串(XPATH),看起来像噪音又名perl reg exs。
  • xml标签,可以使语句详细 - 也就是xml编程语言。

答案 3 :(得分:5)

之前我曾经使用过XSLT而且我并不关心它,因为我发现非常冗长了我想要执行的简单任务。

出于好奇,您的800行XSLT做了什么?

答案 4 :(得分:4)

XSLT是开发人员库中强大的真正强大工具。我一直用它来代码生成。 Performance counters,数据访问层,REST接口,您可以为其命名。任何重复的事情。

作为一种语言,它肯定有它的怪癖,但作为一种工具是非常宝贵的。

答案 5 :(得分:3)

许多程序员没有使用函数式编程的经验。从许多方面来说,XSLT类似于功能编程和一种新的和外国的学习范式。

学习一种不熟悉的编程范式可能具有挑战性,更不用说学习用XML表达的不熟悉的编程范式了。

用函数式编程语言编写的代码通常是简约的。 XML很少是简约的。因此,了解功能编程并欣赏其极简主义的人必须放弃这种极简主义。

答案 6 :(得分:2)

我个人认为它非常适合某些类型的编程问题。对我来说,在某些情况下,使用XSLT维护表单要比重写/重新编译/重新部署代码更改要容易得多。虽然XSLT不是实现这一目标的唯一方法,但我还没有找到任何其他更清洁,更容易的案例解决方案。

它有它的位置。像其他一切一样,当被误用时,它就变成了混乱的代码,就像任何语言一样。如果使用得当,它可以很好地补充或解决编程问题。

答案 7 :(得分:2)

XSLT是非常强大的,只要你想用它做什么就匹配它的好处。但是,维护别人的XSLT可能有点令人生畏。它是一种编程语言,但它也是一个XML文件,因此很难理解,即使布局干净且评论充分。

答案 8 :(得分:2)

我们的图书馆CMS主要由html样式表组成,几乎可以做任何事情。当然,我们的数据本身就是XML。我们的一些程序员没有得到函数式编程范例。您的第一次体验可能会导致复杂的模板滥用XSLT的迭代功能。你必须告诉程序员的第一件事是不要使用for each语句或遍历xpath轴 如果他们学会克制,他们可能会学会理解模板的概念。

答案 9 :(得分:1)

  1. XSLT同时具有功能性和强制性。这让很多人绊倒了。他们有matchfor loops变量。
  2. 很容易在其中编写错误的代码。但如果你遵循良好的模式,你可以很容易地做一些非常简洁的事情。
  3. 如果您有支持XSLT的浏览器(FF 3很好),请查看http://www.worldofwarcraft.com/index.xmlhttp://www.wowarmory.com/index.xml。它们完全用客户端XSLT编写,带有底层XML。它使得抓取这些网站真的很容易和好,他们被迫保持数据和表示分开。一个很好的例子是他们的角色页http://www.wowarmory.com/character-achievements.xml?r=Mal%27Ganis&cn=Vosk&gn=Juggernaut

答案 10 :(得分:1)

我发现抱怨XSLT的人是误用它的人。例如,我认为将它用作CMS的HTML模板语言是一个糟糕的想法,除非您的数据已经是XML。那些人可能会抱怨XSLT是丑陋的,或者是冗长的,或者其他什么,但那是因为他们出于错误的原因使用它。

答案 11 :(得分:0)

这是将XML转换为编程语言的一个例子。呸。我希望人们不会这样做。我们已经有了非常好的编程语言,它们比XML要好得多。

答案 12 :(得分:0)

因为MS没有实现exslt2