2010-08-09 25 views
7

我刚刚在计算器上学到了XLST(我喜欢在计算机上编程多年的计算机,并且经常有'该死,我怎么不知道这个技术'的时刻)。我想知道XLST对Web开发有多大的影响?我已经在几个网站上工作(使用php,ruby和asp.net mvc),但我绝不是一个web开发人员。为什么在ruby,php,asp.net mvc等语言中使用HTML标记而不是XLST将XML转换为HTML?

是我在上面列出的每种网络语言都有它自己的方式来标记html(并因此利用'模板')只是为了使它更简单(更简单,因为更多的重点,而不是更多适合一个特定的目的),因为您不必首先将要显示的内容转换为xml,然后转换为html?还是有其他原因为什么XLST似乎不太受欢迎的Web开发?或者我只是疯了(我的大部分工作都是使用桌面应用程序),实际上它在网页中被广泛使用?如果不在开发中,你主要用它做什么?

似乎能够轻松地用xml序列化XML中的对象将使XLST成为在网站上以HTML显示对象的非常流行的方式?

感谢您喂养我的好奇心!

+0

查看Umbraco CMS软件包,我使用它很多,它是显示数据的主要方式是使用XSLT。我正在写一些XSLT,现在是完全诚实的:) – Marko 2010-08-09 01:56:47

回答

8

恕我直言,主要有两个方面原因XSLT是不是很流行:

  • generally hard
  • 你可以直接跳过它,直接编写HTML,而且HTML并不难,并且具有来自所有Web框架的一流支持。

总之,通常没有足够的理由来引入另一种抽象。抽象并不是免费的,他们解决了一些问题,但引入了其他问题(即“通过增加另一层间接的”adagio“来解决问题),所以好处必须明显超出成本。

这就是说,有许多web框架基于XSLT的解决方案,例如:

Here's an excellent article,讨论XSLT的视图引擎。

+0

(+1)这是我读过的关于这个主题的最好的文章。 – 2010-08-09 02:43:21

+0

是的,伟大的文章!谢谢 – Evan 2010-08-09 03:16:56

3

XSLT在Web框架中并不流行,因为XML在Web框架中不受欢迎。但是,如果您有XML数据,或者您愿意将对象转换为XML,那么XSLT是将该XML转换为HTML或XHTML的最佳工具。

如果您正在使用ASP.NET结账myxsl

4

正如我开始#2这么多答案,这取决于 :)

做你所描述的是增加另一层什么应用程序逻辑和显示输出之间的抽象;并引入另一种语言。这样做可能有非常令人信服的理由,但需要牢记的重要部分是您需要识别并量化的需求,以便能够了解它是否值得。

看来,能够很容易地...

与软件开发的大多数事情,这东西似乎很容易琢磨了几个小时的结果是相当复杂和参与后,当你实际上试图去做。在这里尤其如此,因为我已经在ASP.NET中构建了您正在描述的。它为皮肤网站提供了一个非常有趣的机制,因为您只需定义模型XML模式,任何人都可以编写XSLT来对其进行转换。但XSLT就像一个单向隧道。它不能(容易地)伸出或向两侧拉入未包含在原始模型中的额外信息 - “外围数据”,可以这么说。事实上,它真的很难真正意识到应用程序正在发生什么。

另外,XSLT非常冗长,并且(在很多方面)是粗俗的语言。这使得它... 令人不愉快的做循环等事情,而且甚至耗费时间甚至做一些事情,如if-else语句*。生成类似于您正在查看的页面的XSLT现在可能会有几千行 - 您要在之上添加,您必须以任一方式编写应用程序代码。

这只是一个额外的成本,可能或不值得,这取决于你想要完成什么。

*例如,我曾经看到的显影剂尝试写寻呼机控制(例如,“第一|先前| 1 | 2 | 3 |下一页|尾”)在XSLT。我们仍然不时在疗养院访问她。

+0

+1,谢谢你的回答!我同意,看起来很容易的事情通常最终会成为最复杂的:) – Evan 2010-08-09 03:20:21

1

当我第一次发现XSLT时,我很兴奋,因为我可以编写语义上正确的表示标记,并且我不再需要编写如此多的黑客并使用如此多的嵌套层<divs>来获得我想要的效果 - XSLT可以为我做这一切!

然后,我意识到XSLT是一个奇怪的,倒退,而痛苦的语言来写,我相信其他的Web开发人员已经发现了同样的事情,并从中操纵了。

什么时候你可以直接写HTML并避免额外的抽象层?如果你的应用程序足够复杂以保证,那么有更多更好,更简单,更强大的替代品(其他模板语言)。

1

网页的设计通常交给设计师。

有关网页设计师的一件事是他们知道HTML(如果你幸运的话),但他们不会了解XSLT。

1

在XSLT中执行循环和if-else语句是不愉快的,例如用螺丝刀锤击它是不愉快的。不要这样做。数据驱动XSLT脚本的行为,您只需为模板找到合适的匹配项即可。 XSLT模板不仅仅是一段代码。来自XML文件的实际数据适合于“匹配” - “模板”元素的属性 - 决定是否以及何时执行模板。
一旦您发现XSLT与其他语言的工作方式不同,您将看到这种可能性。用通常的语言来做很难做的事很容易。只要在适当的时候使用它。如果您的数据以XML形式出现,并且您知道XSLT和XPath,则这是构建网页的正确工具。
提示可在例如jenitennison.com/xslt