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/