2012-04-05 118 views
2

我正在使用某个框架,其中主要开发人员正在考虑从原生的基于PHP的模板到XSLT模板的彻底改变。有没有人从PHP模板到XSLT模板而不后悔?

我担心这不可行,因为在我们的网站上我们通常会有非常复杂的模板逻辑。

对于如此简单的东西:

if ($something) { ?> 
     <p><?php if ($another) { ?>Lorem Ipsum<?php } else { ?>Dolor amet<?php } ?>.</p> 
    <?php } else { ?> 
     <p><?php if ($another) { ?>Lorem Ipsum<?php } else { ?>Dolor amet<?php } ?>.</p> 
    <?php } ?> 

等效XSLT是:

<xsl:choose> 
     <xsl:when test="blah"> 
      <xsl:choose> 
       <xsl:when test="another"> 
        <p>Lorem Ipsum.</p> 
       </xsl:when> 
       <xsl:otherwise> 
        <p>Dolor amet.</p> 
       </xsl:otherwise> 
     </xsl:when> 
     <xsl:otherwise> 
       <xsl:when test="another"> 
        <p>Lorem Ipsum.</p> 
       </xsl:when> 
       <xsl:otherwise> 
        <p>Dolor amet.</p> 
       </xsl:otherwise> 
     </xsl:otherwise> 
    </xsl:choose> 

有了这样一个简单的代码片段,它让我害怕的时候我想的高级场景。

我想知道是否有人经历了类似的模板转换,如果是的话,你是如何应对的?你回去了吗?

+0

不理解XSLT没有理由担心团队选择使用它。一个合理的行动项目是扩大自己的视野。不要害怕的好方法是开始学习 - 通过阅读和练习。有很好的学习资源,包括SO的“xslt”标签中的许多问题和答案。 – 2012-04-06 15:59:41

+0

这对我来说不是问题,我只是担心这会导致我的团队中大多数人的生产水平下降(界面开发,从现在开始处理XSLT和模板逻辑,而不是后端开发人员),以及我们已经在紧张的最后期限内运行了。 – 2012-04-06 16:01:56

+2

根据我的经验,使用XSLT处理XML比使用传统命令式语言要快几个数量级。质量更高,数量级更少的错误。你甚至可以用较少的开发人员完成相同的工作。 – 2012-04-06 16:22:49

回答

1

根据我的经验,最终我总是回到原来的.phtml文件 - 这并不是说这是正确的事情或理想的事情,但是当时问题解决了什么。

即使对于更简单的逻辑模板,XSLT也从来没有为我做过正确的事情。

如果有任何模板系统让我开心,那就是Twig

6

在XSLT 1.0你提出的代码可以简化为:

<p> 
    <xsl:choose> 
     <xsl:when test="blah"> 
       <xsl:when test="another">Lorem Ipsum.</xsl:when> 
       <xsl:otherwise>Dolor amet.</xsl:otherwise> 
     </xsl:when> 
     <xsl:otherwise> 
       <xsl:when test="another">Lorem Ipsum.</xsl:when> 
       <xsl:otherwise>Dolor amet.</xsl:otherwise> 
     </xsl:otherwise> 
    </xsl:choose> 
</p> 

在XSLT 2.0中,可以进一步简化为:

<p> 
    <xsl:value-of select="if (test=blah) 
         then if (test=another) then 'Lorem ipsum' else 'Dolor amet' 
         then if (test=another) then 'Lorem ipsum' else 'Dolor amet'"/> 
</p> 

这给我的印象更好了很多比你的PHP原。

对于更一般的问题,XSLT确实有一个陡峭的学习曲线。那些坚持并掌握概念的人通常对语言非常满意。但是很多人在谈论这一点之前就放弃了并放弃了,因为它与以前遇到的任何东西都有很大的不同。