ThomasM: Probleme mit for-each

Beitrag lesen

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="&lt;br /&gt;" 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