2011-05-27 115 views

回答

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>是更强大和优雅。

这里有一些的两种方法之间最重要的区别

  1. xsl:apply-templates也更加丰富,比xsl:for-each更深,甚至只是 因为我们不知道会是什么码应用于 的选择节点上 - 在一般情况下,对于 节点列表的不同节点,此代码将有所不同。

  2. 将应用于 可写的方式xsl:apply template S为书面后由 人不知道原作者的代码。

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

摘要:模板和<xsl:apply-templates>指令是XSLT如何实现和处理多态性。

参考:看到这个整个主题:http://www.stylusstudio.com/xsllist/200411/post60540.html

相关问题