Ausführungsreihenfolge
Ausführungsreihenfolge
Bei nur einer TAL-Anweisung pro Element ist die
Ausführungsreihenfolge einfach. Beginnend mit dem Wurzelelement
werden die Anweisungen jedes Elements ausgeführt und dann die
Kind-Elemente der Reihe nach besucht bzw. abgearbeitet. Jede
beliebige Kombination von Anweisungen kann in einem Element
vorkommen, mit der Ausnahmen, daß ‘replace’ und
‘content’ nicht im selben Element stehen dürfen.
Enthält ein Element mehrere Anweisungen, so werden sie
entsprechend der folgenden Prioritätenliste abgearbeitet:
defineconditionrepeatcontent or replaceattributesomit-tag
Da die ‘on-error’-Anweisung nur dann ausgeführt
wird wenn ein Fehler auftritt, wird sie in der Liste nicht
geführt. Der Sinn hinter dieser Prioritätenverteilung ist
folgender: Die Deklaration von Variablen kann auch andere
Anweisungen betreffen, deshalb kommt ‘define’
zuerst. Dann gilt es zu entscheiden, ob das aktuelle Element
überhaupt eingefügt werden soll, also muß jetzt
‘condition’ folgen. Da ‘condition’
bereits von Variablen abhängen kann, die mit
‘define’ deklariert wurden, muß es danach kommen. Es
ist sehr nützlich, verschiedene Teile eines Elements bei jeder
Wiederholung einer Schleife mit unterschiedlichen Daten zu
ersetzen, deshalb kommt jetzt ‘repeat’. Es macht
wenig Sinn, die Attribute eines Elements zu ersetzen und sie dann
zu löschen, also kommt ‘attributes’ zum Schluß. Die
übrigen Anweisungen stehen im Konflikt zueinander, weil sie
entweder das Anweisungselement verändern oder ersetzen.
Soll die Ausführungsreihenfolge verändert werden, müssen die
Anweisungen in andere Elemente gepackt werden, etwa
<div> oder <span>.
Ein Beispiel:
<p tal:define=“x
/a/long/path/from/the/root“
tal:condition=”x”
tal:content=”x/txt”
tal:attributes=”class x/class”> Ex Text
</p>






