运行时模板引擎的最佳选择?

时间:2013-01-26 00:46:36

标签: templates xslt razor transform t4

我们正在设计一个应用程序,它将生成许多不同类型的文本输出,例如电子邮件,HTML,短信等。输出将使用某种模板生成,数据来自数据库。我们的要求包括:

  1. 模板中的基本逻辑/计算字段。例如“ifs”和“for”循环,加上一些诸如增加税率百分比等等。
  2. 运行时编辑。我们的用户需要能够根据需要调整模板,例如更改样板文本,添加新逻辑等。
  3. 多语言。我们需要为当前文化选择正确的模板。
  4. 文化敏感。例如日期和货币将根据当前的ui文化输出。
  5. 灵活性。我们需要模板能够处理多个重复组,层次结构等。
  6. 无法使用商业软件作为解决方案(例如InfoPath)。我们需要能够随时修改源代码。
  7. 该应用是c#.net。我们正在考虑使用T4,XML + XSLT或托管Razor引擎。鉴于语法对于非技术用户来说太难以承受,我们希望得到您认为对我们来说是正确的模板引擎的意见。我们很高兴考虑那些尚未提及的。

    感谢。

2 个答案:

答案 0 :(得分:3)

我非常犹豫在一个论坛上尝试回答这个问题,因为技术选择取决于比问题中传达的更多因素,包括风险态度,开源态度,以前的好坏。项目的经验,政治和领导等.XSLT相对于Razor的一大优势是它是一个标准,并且在多个平台上有多个实现(包括.NET上的至少三个实现!)所以没有锁定;但这似乎不是您的要求声明中的一个因素。而且你使用.NET这一事实表明供应商锁定并不是你担心的事情。

要记住的一点是,非程序员经常比程序员更快地接受XSLT。它基于规则的声明式方法及其XML语法有时会让程序员感到不舒服(它不像以前看到的那样),但最终用户通常会像鸭子一样接受它。

答案 1 :(得分:0)

我们决定选择Razor Hosting。我发布这个的原因是,如果我包含以下文章链接,我认为它会对其他人有所帮助:

http://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

Rick Strahl的这项出色工作使得Razor很容易上映。