Wesentlicher Unterschied zwischen <xsl:apply-templates>
y <xsl:-for-each>
auf die niemand hingewiesen hat :
<xsl:apply-templates>
ist wirklich mehr als nur ein schöneres, eleganteres Äquivalent von <xsl:for-each>
:
xsl:apply-templates
ist viel reicher und tiefer als xsl:for-each
sogar einfach weil wir wissen nicht, welcher Code auf die Knoten der der Auswahl angewandt wird -- im allgemeinen Fall wird dieser Code für verschiedene verschiedene Knoten der Knoten-Liste .
Auch, den Code, der angewendet werden soll kann weit nach der Erstellung der xsl:apply-Vorlagen geschrieben werden und von Personen, die den ursprünglichen Autor nicht kennen .
_2. Auf der anderen Seite, mit <xsl:for-each>
ist in keiner Weise schädlich, wenn man genau weiß, wie ein <xsl:for-each>
bearbeitet wird .
Das Problem ist, dass viele XSLT-Neulinge, die Erfahrung in imperativer Programmierung haben, die <xsl:for-each>
als Ersatz für eine "Schleife" in ihrem Lieblings-PL und denken, dass sie damit Unmögliches tun können - wie das Inkrementieren eines Zählers oder eine andere Änderung eines bereits definierten <xsl:variable>
.
Eine unverzichtbare Verwendung von <xsl:for-each>
ist es, das aktuelle Dokument zu ändern - dies ist häufig erforderlich um die Funktion key() auf ein anderes Dokument als das aktuelle Quell-XML-Dokument anwenden zu können um z. B. effizient auf eine Nachschlagetabelle zuzugreifen, die sich in einem eigenen XML-Dokument befindet.