是否有一点使用XSLT创建一个站点

时间:2009-02-18 11:13:05

标签: xml xslt web content-management-system

这项技术仍然很受欢迎吗?

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

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

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

谢谢!

14 个答案:

答案 0 :(得分:24)

早在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。例如:

  

例如:如何隐藏行   table(使用不同的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之前三思而后行(或十次)。并且&gt;如果您使用Eclipse,您甚至可以在使用JSP / JSTL之前三思而后行。速度或> FreeMarker可能是更好的选择。

答案 1 :(得分:20)

基于“语法很难”的答案根本就没有答案。一个)。它真的不是,B)。你应该是一名程序员,只需要学习它。

绝对其他技术正在以XSLT自2005年以来的速度发展,但它仍然是一个强大的工具,它提供了一个抽象级别,比如asp.net webforms没有,并允许你提供一般可扩展的解决方案,可轻松地串行化为一系列输出格式。使用任何给定的语言生成HTML很容易,现在很难将其扩展到XML,现在将其扩展为JSON,现在将其扩展为CSV。

在一个仍然受I / O约束的环境中,缓存变换足够快。

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

答案 2 :(得分:4)

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

答案 3 :(得分:3)

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

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

我想说它有时非常有用。

答案 4 :(得分:2)

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

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

答案 5 :(得分:2)

  

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

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

spoulson上面提到的关于模板的内容是重点。从输入XML文件提供输出页面很好。但这不会让你成为CMS。 C.R.U.D.怎么样?搜索?页面列表?

如果您的网站太小,以至于您可以通过手动编辑某些XML文件来完成所有相关更新,那么为什么不这样做呢?但如果它很简单,你也可以手工编辑HTML。

答案 6 :(得分:2)

我喜欢这个主意。 XSL是一个很棒的工具,但在你意识到它真正有用之前,你必须拥有这个特殊的启蒙时刻。在此之前它似乎是如此。

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

答案 7 :(得分:2)

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

答案 8 :(得分:2)

xslt很难?

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

Xslt很简单。

真!有好书可以教你xslt。只需了解例如rdf / owl(w3c标准),它仍然可以变得更加复杂......

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

关于REST(一些书或Roy Fielding论文),这也是必不可少的东西。

现在有了XProc(xslt piplines)和一个围绕calabash(Xproc实现)的小型restserver,你可以存档很多。它可以绝对节省您的时间。任何数据都可以导出到XML,通过REST提供,并使用XProc进行转换。

答案 9 :(得分:2)

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

答案 10 :(得分:1)

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

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

为正确的工作选择合适的工具,你不应该有任何问题。

答案 11 :(得分:1)

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

XSLT使您能够进行不显眼的模板化,这是IMO最终的模板。

答案 12 :(得分:1)

作为旁注,wowarmory.com是使用XSLT的高流量网站的一个很好的例子。事实上,我认为整个网站都使用它。

答案 13 :(得分:0)

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