Hallo Uwe,
Interessante Sichtweise, könntest du sie begründen. Damit es nicht langweilig wird, nehme ich schon mal den gegenteiligen Standpunkt ein, behaupte also, for-each ist sehr wohl eine Schleife :-)
Stelle Dir einen Baumstamm mit 10 Ästen vor, welche nacheinander oder je nach Tool (Kettensäge bzw. XSLT-Prozessor) auch gleichzeitig abgetrennt (abgearbeitet) werden. Das ist keine Schleife ("weil da loopt nix" [TM]), sondern eine Mehrfachverarbeitung.
Erst XSLT/XPath 2.0 bieten einen Ansatz von Schleifen und auch das sind eigentlich keine, sondern Sequenzkonstruktoren wie a to b oder for-in-return. Im Zusammenspiel mit xsl:for-each sieht das dann schon sehr schleifenmäßig aus, obwohl auch hier nichts weiter als die mehrfache Abarbeitung der Sequenz aus atomaren Werten von 1 bis 10 erfolgt:
<xsl:for-each select="(1 to 10)">
<xsl:value-of select="."/><br />
</xsl:for-each>
Alternativ auch so formulierbar:
<xsl:value-of select="(1 to 10)" separator="<br />" disable-output-escaping="yes"/>
Hier noch der Auszug der geraden Zahlen über ein for-in-return-Konstrukt:
<xsl:for-each select="for $i in (1 to 10) return if($i mod 2 eq 0) then $i else()">
<xsl:value-of select="."/><br />
</xsl:for-each>
Grüße,
Thomas