xsl:for-each有什么坏处?

edd*_*ves 6 xslt

我一次又一次地听到你应该如何避免使用XSLT.这是你应该被放逐的内在势在必行的编程恶魔.

这有什么不好的?

这种最佳实践是否取决于XML 的大小(即100对10,000个节点)?

Dim*_*hev 6

<xsl:apply-templates><xsl:-for-each>没有人指出的本质区别:

  1. <xsl:apply-templates>真的不仅仅是一个更好,更优雅的东西<xsl:for-each>:

xsl:apply-templatesxsl:for-each甚至仅仅因为我们不知道将在选择的节点上应用什么代码 -更加丰富和深入- 在一般情况下,该代码对于节点列表的不同节点将是不同的.

此外,将应用的代码可以在编写xsl:apply模板之后以及不知道原始作者的人员的方式编写.


_2.另一方面,如果确切知道如何处理,使用<xsl:for-each>绝不会有害<xsl:for-each>.

麻烦的是许多XSLT的新手在命令式编程方面有经验,可以<xsl:for-each>替代他们最喜欢的PL中的"循环",并认为它允许他们执行不可能的操作 - 比如递增计数器或任何其他修改一个已定义的<xsl:variable>.

一个必不可少的用途<xsl:for-each>是更改当前文档 - 这通常是需要的,以便能够在文档上使用key()函数,与当前源XML文档不同,例如,有效地访问驻留的查找表在自己的xml文档中.


dom*_*mer 5

模板倾向于更好地分割代码.此外,for-each循环受到这样一个事实的影响:人们常常认为他们的操作与主循环编程语言中的循环方式相同.