我听说大多数情况下,在编写XSLT时,通常可以(并且更好)使用apply-templates而不是for-each。这是真的?如果是这样,使用apply-templates有什么好处?
答案 0 :(得分:5)
如果确切知道如何处理<xsl:for-each>
,则使用<xsl:for-each>
绝不会有害。
麻烦的是许多XSLT的新手在命令式编程方面都有<xsl:for-each>
作为他们最喜欢的PL中“循环”的替代品,并认为它允许他们执行不可能的事情 - 比如说递增计数器或已定义的<xsl:variable>
的任何其他修改。
XSLT 1.0中<xsl:for-each>
的一个必不可少的用途是更改当前文档 - 为了能够在文档上使用key()
函数,这通常是必需的,与当前源不同例如,XML文档可以有效地访问驻留在自己的xml文档中的查找表。
另一方面,使用<xsl:template>
和<xsl:apply-templates>
更加强大和优雅。
以下是两种方法之间最重要的差异:
xsl:apply-templates
比xsl:for-each
更加丰富和深刻,甚至
只是因为我们不知道将在节点上应用什么代码
选择 - 在一般情况下,此代码将有所不同
节点列表的不同节点。
将应用的代码
可以在xsl:apply template
写完之后写出来
那些不了解原作者的人。
如果XSLT没有<xsl:apply-templates>
指令,则无法在XSLT中实现FXSL library高阶函数(HOF)。
摘要:模板和<xsl:apply-templates>
指令是XSLT实现和处理多态的方式。
参考:查看整个帖子: http://www.stylusstudio.com/xsllist/200411/post60540.html