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

web*_*ise 20 xml xslt content-management-system web

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

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

我想这样做是为了使用简单的XML文件(而不是使用完整和昂贵的CMS系统)更容易更新站点.

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

谢谢!

cle*_*tus 24

早在2002 - 2003年,我就使用XSLT做了很多工作(2006 - 2007年还有更多).你的里程数会有所不同,但老实说我会避免它,原因有以下几点:

  • 语法是一个令人眼花缭乱的旋转,难以学习,难以正确,只是简单让你头痛.模板本身并不是太糟糕,但扔进一些粗糙的XPath表达式,它只是伤害;
  • 对于合理大小的文档和转换,它相对较慢.它是否足够缓慢与你相关是你只能通过对你的情景进行基准测试而找到的东西,所以不要把它当作一揽子规则,更多的是警示性的故事或警告;
  • 错误消息不是那么有用,很难找出问题.与更传统的方法不同,您无法通过调试器和单步执行XSLT.
  • 使用任何现代Web风格的语言(C#,Java,PHP,Python,Ruby等)生成HTML都是简单,直接,易于记录和易于调试的;
  • 操纵XML可能比较繁琐,并产生更多直接操纵对象并将其转换为标记的代码.这当然会因您选择的语言为您提供的工具而异.

现在我唯一可以真正看到有一个XSLT应用程序的地方就是消费生成XML的Web服务(这些天很多产生JSON和更容易使用的格式).

即使在这种情况下,我可能仍然可以使用Java中的JAXB(或其他语言中的类似技术)直接操作XML.

更新:我刚刚遇到了Web框架中的XSLT之死.例如:

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

<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>
Run Code Online (Sandbox Code Playgroud)

现在与JSP 1.x相同:

<tr style='visibility:<%=CONDITION ? "collapse" : "visible"%>'>
   ...
</tr>
Run Code Online (Sandbox Code Playgroud)

或者使用JSP 2.x:

<tr style='visibility:${CONDITION ? "collapse" : "visible"}'>
  ...
</tr>
Run Code Online (Sandbox Code Playgroud)

总结如下:

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

  • 你好!?XSLT 2.0! (6认同)
  • xst 2.0:<tr style ="{if(CONDITION)然后'visibility:visible'else'visibility:collapse'}"> </ tr /> (6认同)
  • 实际上同时有很多XSLT调试器,例如在Visual Studio或Altova的XMLSpy中. (2认同)
  • 如何只是<tr class = CONDITION>并根据条件设置css的样式?然后你有一个非常简单的模板,你的样式取决于样式表. (2认同)

ann*_*ata 20

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

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

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

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

  • *基于"语法很难"的答案根本就没有答案.一个).它真的不是,B).你应该是一个程序员,只是学习它."*我不敢相信它被投票了!如果你的回答是有效的,那么就这样:*"答案说用C++编写网站太难了没有答案在所有imo."*可笑!程序员的生产力在网络上非常重要;为什么要使用一种能让它变得更难的工具?要*证明*你是一个*"值得"*程序员?Sheesh. (13认同)
  • @MaxToro你的评论在逻辑上必须是真的,即*"如果你知道如何进行脑部手术,那么你可以对某人的大脑进行操作."*你的断言是在真空中陈述的; 它能像其他语言一样高效吗?在尝试失败的项目6个月后,我的经验是"不".*XSLT的问题是你无法封装功能,测试它然后知道它会起作用.使用XSLT进行编码(如CSS)要求您的代码特定于数据的完整上下文,因此随着输入XML的复杂性增加,其难以呈指数级增长. (2认同)