amolip: Probleme mit for-each

Beitrag lesen

Hallo Thomas,

Ich bin natürlich zutiefst enttäuscht, dass ich dir nicht genüge ;-), aber ich hoffe, dass du zu Namen wie Michael Kay, Jeni Tennison oder David Carlisle mehr vertrauen hast ;-)

Keine Sorge, ich vertraue dir voll und ganz, ich bin nur um dich besorgt und möchte daher nicht, dass du womöglich einsam und verlassen, alleine auf weiter Flur stehst ;-) Aber ich ahne schon, ich scheine mich unnötig gesorgt zu haben :-)

Nur ein Bsp: http://dpawson.co.uk/xsl/sect2/N5019.html

Danke, werde ich mir aufmerksam durchlesen.

der Inhalt von for-each ist als Template zu sehen. Dieses Template wird dann für den jeweiligen Knotexknoten instanziiert.

Das ist klar, der Inhalt ist als Template zu sehen, aber nicht for-each selber. Also mich stört daran nur, dass du for-each selber als Template bezeichnet hast. Oder muss man for-each tatsächlich als Template sehen, jetzt bin ich gerade etwas verwirrt ;-)

Das stimmt (bedingt). Will man die Position des aktuellen Knotens innerhalb der "current node list" ausgeben, geht das mit position(). Da könnte man schon annehmen, dass die Iterationsrunde "weiß" in wie wievielten Runde sie ist.

Genau an position() habe ich gedacht. Dem Template sind ja zwei Dinge bekannt, der current node und die current node list und ich dachte ...
"XSLT 1.0: The template is instantiated with the selected node as the current node, and with a list of all of the selected nodes as the current node list."

Aber man kann nicht mit diesem Wissen über die Runden hinweg operieren: d.h. man kann diese Information nicht von einer Runde zur nächsten übergeben.

... man könnte an der current node list ansetzen. Aber ich fürchte du hast recht, sinnvoll geht das nicht.

den prinzipiell gibt es ja zwischen »apply-templates« und »for-each« keinen Unterschied.
*lach* dann verwirren uns jetzt gegenseitig, denn allgemein hast du zwar Recht, aber in einigen Details muss ich dir widersprechen.

Ich meine tatsächlich nur prinzipiell, in den Details gibt es natürlich Unterschiede.

Ein anderer Unterschied liegt dann vor, wenn es mehr als ein apply-templates , das auf einen selektieren Knoten zutrifft, gibt. Da spielt dann die Import-Präzedenz und die Priorität eine Rolle.

Stimmt, daran habe ich nicht gedacht.

Also Thomas, meine Sichtweise "for-each als Schleife" ist vermutlich wirklich zu naiv. Ich will nun, was ich schon Tim geschrieben habe, folgendes tun:
Die Frage für mich wird vermutlich sein, ob ich ggf. wider besseren Wissens trotzdem noch von Schleife reden soll, denn auf "Anschaungsebene" tritt mir for-each als Schleife entgegen.
Wenn es "praktisch" gesehen keinen Unterschied machen würde, ob ich von Schleife rede oder nicht, dann dürfte die Sichtweise "for-each als Schleife" keinerlei Auswirkung in Bezug auf die Herangehensweise an die konkrete Aufgabenstellung haben.
Ich werde also versuchen ein Beispiel zu finden, wo diese Sichtweise tatsächlich Auswirkung hat und falls ich fündig werde, rede ich nie, nie mehr von Schleife :-)

Der eigentliche Punkt ist aber, dank deiner und Tims Erklärungen fange ich langsam an zu ahnen, was eigentlich mit funktionaler Programmierung gemeint ist. Ich denke ich muss hier ansetzen (also doch theoretisch) um zu verstehen, warum man for-each nicht einfach so naiv als Schleife betrachten kann.

Gruß Uwe