templating - 哪些模板语言将 HTML *输出为节点树*?

标签 templating

HTML 首先是一棵节点树。这不仅仅是一段文字。

然而,大多数模板引擎处理它们的输入和输出,因为它只是一个文本;他们不关心他们的标签、他们的{$foo}周围发生了什么。的和<% bar() %>的;他们也不关心他们输出什么。有时他们碰巧生成了正确的 html,但这只是巧合;他们的目的不是这个,他们只是想用他们的评价替换文本流中的一些有趣的标记。

有一些模板引擎确实将其输出视为一组节点;我想到了 XSLT 和 Haml。对于某些任务,这具有优点:例如,您可以自动重新格式化(例如,删除所有空文本节点;自动缩进;自动换行)。结果保证是正确的 xml/sgml,除非您使用可能破坏该结果的严格操作子集。此外,这样的模板引擎会自动引用字符串,在文本节点和属性中不同,因为它严格知道您正在编写属性还是文本节点。 此外,它可以有条件地从输出中删除节点,因为它知道节点在哪里开始和结束,这很有用,并且可以执行其他重要的节点操作。

您可能不喜欢 XSLT 的冗长或功能性,但是您的模板是可 xmllint 的 XML,并且您的输出是良好的 sgml/xml,这真是太有帮助了。

所以问题是:您知道哪些模板引擎将其输出视为一组正确的节点,而不仅仅是非结构化文本? 我知道 XSLT、Haml 和一些基于 Python 的晦涩难懂的语言。摩尔!

最佳答案

Which template engines do you know that treat their output as a set of correct nodes

令人惊讶的是 ASP.NET 确实如此!如果需要,您可以通过某种 DOM 更改页面的 HTML 输出: http://en.wikipedia.org/wiki/Asp.net#Rendering_technique

关于templating - 哪些模板语言将 HTML *输出为节点树*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869516/

相关文章:

php - 使用 vprintf 的廉价 php 模板?

javascript - UI设计: templates for wizard driven app?

javascript - Angular 类似 Handlebars 的模板

javascript - 模板中的包含、部分和/或 block 之间有什么区别。 EJS/ejs-locals

javascript - 客户端模板引擎 (Rivets.js) 中的性能渲染缓慢

javascript - John Resigs 微型模板引擎,如何处理选择的问题?

javascript - 使用 Nunjucks 模板循环整数值

Node.js 以及存储在数据库中的渲染 View 和模板

java - 如何使用 Mustache.java 忽略标签?

php - 在有限的托管环境中使用 Blade 模板