使用 XSLT 创建网站是不是有意义 [关闭]

Posted

技术标签:

【中文标题】使用 XSLT 创建网站是不是有意义 [关闭]【英文标题】:Is there a point creating a site using XSLT [closed]使用 XSLT 创建网站是否有意义 [关闭] 【发布时间】:2010-10-08 07:40:46 【问题描述】:

这项技术现在还流行吗?

我想创建一个自动转换 XSLT 文件的网站。它应该像这样工作: 当用户访问该站点时,单个处理程序将接受他的请求,然后为它找到合适的 XML(根据请求的 URL)并使用其附加的 XSL 文件对其进行转换。

我想这样做是为了便于使用纯 XML 文件更新网站(而不是使用成熟且昂贵的 CMS 系统)。

你说什么?好主意?馊主意?有人推荐吗?

谢谢!

【问题讨论】:

使用 XSLT 无疑是一个好主意,我将它用于几个网站。但是像您一样在请求时动态生成页面可能会很慢。真的有必要吗?我更喜欢预先生成 html 文件。 【参考方案1】:

早在 2002-2003 年,我在 XSLT 上做了很多工作(在 2006-2007 年还做了更多)。你在这方面的努力会有所不同,但老实说,我会避免这样做,原因如下:

语法令人眼花缭乱,难以学习,难以正确理解,简单明了会让您头疼。模板本身并不算太糟糕,但会引入一些粗糙的 XPath 表达式,这很痛苦; 对于大小合理的文档和转换,它相对较慢。它是否足够慢以至于与您相关,只有通过对您的场景进行基准测试才能发现,因此不要将其视为一揽子规则,更多的是警示故事或警告; 错误消息没有那么有用,而且很难找出问题所在。与更传统的方法不同,您不能抽出调试器并单步执行 XSLT; 使用任何现代 Web 风格的语言(C#、Java、php、Python、Ruby 等)生成 HTML 非常简单、直接、易于记录且易于调试; 操作 XML 可以说更加繁琐,并且会生成更多直接操作对象并将其转换为标记的代码。这当然会因您选择的语言为您提供的工具而异。

这些天我真正看到的唯一一个 XSLT 应用程序是使用生成 XML 的 Web 服务(现在很多生成 JSON 和更容易使用的格式)。

即使在那种情况下,我可能仍然会直接使用例如 Java 中的 JAXB(或其他语言中的类似技术)来操作 XML。

更新:我刚刚遇到The Death of XSLT in Web Frameworks。例如:

例如:如何隐藏行 表格(使用不同的 CSS 样式), 基于某些条件,使用 XSLT? 见:

<tr>
  <xsl:attribute name="style">
    <xsl:choose>
      <xsl:when test="CONDITION">
        <xsl:value-of select="'visibility: visible'">
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="'visibility: collapse'">
      </xsl:otherwise>
    </xsl:choose>
  </xsl:attribute>
  ...
</tr>

现在与 JSP 1.x 相同:

<tr style='visibility:<%=CONDITION ? "collapse" : "visible"%>'>
   ...
</tr>

或使用 JSP 2.x:

<tr style='visibility:$CONDITION ? "collapse" : "visible"'>
  ...
</tr>

总结:

因此,如果您开始新项目,请在开始使用 XSLT 之前三思(或十次)。并且 > 如果您使用 Eclipse,您甚至可以在使用 JSP/JSTL 之前三思而后行。 Velocity 或 > FreeMarker 可能是更好的选择。

【讨论】:

实际上同时有不少 XSLT 调试器,例如在 Visual Studio 或 Altova 的 XMLSpy 中。 哇,恕我直言,这在很多层面上都是错误的。我只挑一点。您可以在 Visual Studio 中单步执行 XSLT 转换。或者你可以免费下载这个优秀的工具sourceforge.net/projects/xselerator 你好!? XSLT 2.0 !? xst 2.0: /> 并根据条件设置 CSS 样式怎么样?然后你就有了一个非常简单的模板,你的样式依赖于样式表。 【参考方案2】:

XSLT 只是一种模板方法。它也只是一个完整的 MVC 框架的一部分,其中模板是 View 组件。 XSLT 是一项很棒的技术,但速度很慢,并不是构建可扩展网站的首选。

研究 MVC 框架,看看哪一个最适合您。例如ASP.NET MVC、Ruby on Rails、CakePHP、Catalyst 等。

【讨论】:

【参考方案3】:

对我来说听起来是个坏主意。使用某些东西要容易得多 像存储内容的 ASP.NET 在数据库中 - 然后您可以更新 内容直接进入 数据库——它本身就是 比编辑 XML 更容易。

【讨论】:

为什么会影响搜索引擎索引?搜索引擎机器人将收到与查看它的浏览器相同的转换页面。 +2 - 这没有意义 是的,你是对的。已相应地编辑了答案。【参考方案4】:

我知道波兰很少有大型门户网站大量使用 XSLT。他们使用它是因为它可以最大限度地减少通过网络发送的数据量。

我还参与了这个项目(Huge HRM 应用程序),我们在那里使用它来将我们的编程语言转换为 .NET。

我会说它有时非常有用。

【讨论】:

+1 表示关于数据最小化的评论。如果您要输出巨大的数据表(除了分页),您可以非常紧凑地以 XML 形式发送它并在远端对其进行转换,或者您可以在本地进行转换,然后发送几倍数量的 HTML。而且它具有惊人的跨平台性,是 IE 多年来所拥有的东西之一。【参考方案5】:

基于“语法很难”的答案根本没有答案。一种)。它真的不是,和B)。你应该是个程序员,学吧。

其他技术的发展速度肯定是 XSLT 自 2005 年以来从未有过的,但它仍然是一个强大的工具,它为您提供了一个抽象级别,例如 asp.net 网络表单所没有的,并允许您提供一个通用的可扩展的解决方案,可轻松序列化为一系列输出格式。使用任何给定语言生成 HTML 都很容易,现在将其扩展到 XML、现在将其扩展到 JSON、现在将其扩展到 CSV 则更难。

在仍然受 I/O 限制的环境中,缓存的转换足够快。

OTOH,在 XML 中存储 数据 通常不是一个好主意。出于上述所有原因,最好存储在 DB/mem 中并根据需要进行序列化。

【讨论】:

基于“语法很难”的答案根本没有答案。一种)。它真的不是,和B)。你应该是一名程序员,学习它。” 我不敢相信这被投票赞成!如果你的回答是有效的,那么这个:“回答说用 C++ 编码网站是太难了根本没有答案。” 太荒谬了!程序员的生产力在网络上极其重要;为什么要使用一个工具让它变得更难?为了证明你是一个“值得”程序员?哎呀。 @MikeSchinkel:如果你知道如何使用它,那么你就很有效率。 @MaxToro 您的评论在逻辑上必须是正确的,即 “如果您知道如何进行脑部手术,那么您就可以对某人的大脑进行手术。” 您的断言在一个真空;它能像用另一种语言一样一样高效吗?在一个失败的项目上尝试了 6 个月后,我对它的体验是“不。” XSLT 的问题是您无法封装功能、对其进行测试然后知道它会起作用。使用 XSLT 进行编码,如 CSS,要求您的代码特定于数据的完整上下文,因此随着输入 XML 复杂性的增加,其难度呈指数级增长。 @MikeSchinkel 我的观点是这取决于使用它的人,你不能比较语言的生产力,你可以比较人们的生产力。 “XSLT 的问题是您无法封装功能、对其进行测试然后知道它会起作用。” 当然可以。 “使用 XSLT 进行编码,如 CSS,要求您的代码特定于数据的完整上下文,因此随着输入 XML 的复杂性的增加,其难度呈指数级增长。” 只是因为您没有解决问题'不知道如何解决并不意味着没有解决方案。 @MaxToro 我们必须同意不同意。【参考方案6】:

在工作中,我正在进行的一个项目使用 XSLT,老实说,这真的很痛苦。实际的 XSLT 文件并不难处理,但必须创建 XML 会增加额外的复杂性。我还发现,除了最基本的页面之外,XML 往往会变得非常臃肿和混乱。所以,不,我不会推荐它。

【讨论】:

【参考方案7】:

看看http://www.umbraco.org/这是一个免费的开源CMS工具,广泛使用XSLT来生成页面。

对于那些声称 XSLT 很难的人,我想说它并不比 SQL 难。有些场景很难,比如分组,就像在 SQL 树中一样。

为正确的工作选择正确的工具,您应该不会有任何问题。

【讨论】:

【参考方案8】:

我想这样做是为了便于使用纯 XML 文件更新网站(而不是使用成熟且昂贵的 CMS 系统)。

呃,什么?有许多免费和开源的 CMS。

spoulson 上面所说的模板是重点。从输入 XML 文件提供输出页面很好。但这不会让您获得 CMS。 C.R.U.D. 呢?搜索?页面列表?

如果您的网站很小,所有相关的更新都可以通过您手动编辑一些 XML 文件来完成,那么为什么不呢,那就去吧。但如果就这么简单,您还不如手动编辑 HTML。

【讨论】:

【参考方案9】:

我喜欢这个主意。 XSL 是一个很棒的工具,但是在您意识到它真正有用之前,您必须有那个特殊的启蒙时刻。在此之前,它看起来一般般。

我在各种应用程序中使用过 XSL,它为我节省了很多时间。但显然不要为了它而使用它。

【讨论】:

【参考方案10】:

您所描述的已经存在并且是 Apache Cocoon:http://cocoon.apache.org/

【讨论】:

【参考方案11】:

如果您的平台是 ASP.NET,请查看myxsl

XSLT 让您能够进行不显眼的模板,这是 IMO 的终极模板。

【讨论】:

【参考方案12】:

附带说明,wowarmory.com 是使用 XSLT 的高流量站点的一个很好的例子。事实上,我认为整个网站都在使用它。

【讨论】:

【参考方案13】:

xslt 很难?

解决复杂问题和复杂标准是程序员的工作。有些东西更难,但仍然需要。只要坚持下去,每次你需要学习新东西时都会变得更容易。

Xslt 很简单。

真的!那里有教你 xslt 的好书。只需学习例如rdf/owl(一个 w3c 标准),它仍然可以变得更加复杂......

xslt 很慢?如果可以的话,只需使用正确的缓存。 (好吧,这并不总是可能的......)。

只需阅读 REST(一些书籍或 Roy Fielding 论文),这也是必不可少的内容。

现在使用 XProc (xslt piplines) 和一个围绕 calabash (Xproc implementationaion) 的小型 restserver,您可以归档这么多。它绝对可以节省您的时间。任何数据都可以导出为 XML,通过 REST 变为可用并使用 XProc 进行转换。

【讨论】:

【参考方案14】:

Symphony CMS 使用 XSLT。在使用该 CMS 时,我发现我遇到的唯一真正问题是学习 XSL/XPath 语法,主要是由于缺乏好的教程/文档。如果您想了解一些相对现代的 XSLT 用法,可能值得一试 Symphony。

【讨论】:

以上是关于使用 XSLT 创建网站是不是有意义 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在暗网上的 .onion 网站上托管媒体是不是有意义,或者我也可以链接到 lightweb? [关闭]

实体框架 4:为所有实体创建单个图表是不是有意义?

使用 JSLint 并遵循它是不是有意义? [关闭]

在解释语言中使用匈牙利符号前缀是不是有意义? [关闭]

将 DAO 模式与 ORM 系统一起使用是不是有意义? [关闭]

c++ 指针参数:创建指向值的副本是不是有意义,然后再次将副本存储为指针?