2011-05-27 39 views

Respuesta

5

El uso de <xsl:for-each> no es perjudicial en absoluto si se sabe exactamente cómo se procesa <xsl:for-each>.

El problema es que muchos de los recién llegados a XSLT que tienen experiencia en programación imperativa toman <xsl:for-each> como sustituto de un "bucle" en su PL favorito y piensan que les permite realizar lo imposible, como incrementar un contador o cualquier otra modificación de un <xsl:variable> ya definido.

Un uso indispensable de <xsl:for-each> en XSLT 1.0 es cambiar el documento actual; esto a menudo es necesario para poder utilizar la función key() en un documento, diferente del documento XML de origen actual, por ejemplo, de manera eficiente access lookup-table que reside en su propio documento xml.

Por otro lado, usar <xsl:template> y <xsl:apply-templates> es mucho más potente y elegante.

Estas son algunas de las diferencias más importantes entre los dos enfoques:

  1. xsl:apply-templates es mucho más rica y más profunda que xsl:for-each, incluso simplemente porque no sabemos lo que el código será aplicado en los nodos de la selección - en el caso general, este código será diferente para diferentes nodos de la lista de nodos.

  2. El código que se aplicará manera se pueden escribirse después de los xsl:apply template s fue escrito por y personas que no conocen el autor original.

implementación de funciones de orden superior (HOF) en XSLT El FXSL library 's no sería posible si XSLT no tenía la instrucción <xsl:apply-templates>.

Resumen: Las plantillas y la instrucción <xsl:apply-templates> es cómo XSLT implementa y se ocupa de polimorfismo.

Referencia: Ver toda esta discusión: http://www.stylusstudio.com/xsllist/200411/post60540.html

Cuestiones relacionadas