何时使用for-each,何时使用apply-templates在xslt中?

7

我听说在编写XSLT时,通常情况下使用apply-templates比使用for-each更好。这是真的吗?如果是,使用apply-templates有什么好处?


好问题,这涉及到XSLT的“核心”。+1。 - Dimitre Novatchev
1个回答

5
如果一个人确切知道如何处理,那么使用它并不会有任何危害。问题在于,很多对命令式编程有经验的XSLT新手将视为其喜爱的编程语言中“循环”的替代品,并认为它使他们能够执行不可能的操作——例如增加计数器或修改已定义的任何其他。
在XSLT 1.0中,的一个必不可少的用途是更改当前文档。这通常是必要的,以便能够在与当前源XML文档不同的文档上使用key()函数,例如有效地访问驻留在其自己的xml文档中的查找表。
另一方面,使用和更加强大和优雅。
以下是两种方法之间最重要的一些区别:
  1. xsl:apply-templatesxsl:for-each更加丰富和深入,因为我们不知道会对选择的节点应用什么代码--在一般情况下,这个代码将对节点列表中的不同节点有所不同。

  2. 将应用的代码可以在xsl:apply templates编写之后很长时间编写,并且由不知道原始作者的人编写。

FXSL library在XSLT中实现高阶函数(HOF)是不可能的如果XSLT没有<xsl:apply-templates>指令。

总结: 模板和<xsl:apply-templates>指令是XSLT实现和处理多态性的方式。

参考: 查看整个线程: http://www.stylusstudio.com/xsllist/200411/post60540.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接