Template Attribute Language Expression Syntax
Abkürzung für Template Attribute Language Expression Syntax, die Syntax für die Auswertung der von der Template Attribute Language (TAL) für Attributwerte verwendeten Ausdrücke. Die Möglichkeit, hierfür eine andere Syntax als TALES zu verwenden, ist ausdrücklich vorgesehen.
Da TAL, TALES und METAL ursprünglich für den in Python implementierten Anwendungsserver Zope geschrieben wurden, können Python-Ausdrücke verwendet werden. Zope erweitert die TALES-Spezifikation im Rahmen der Zope Page Templates.
Überblick
TALES stellt mehrere Methoden zur Verfügung, Ausdrücke zu formulieren, die in TAL- und METAL-Attributen verwendet werden können und durch ein (optionales) Präfix unterschieden werden:
Ausdrucksarten
- Pfadausdruck
- Präfix
path:
(optional, und deshalb fast immer fortgelassen): zum Zugriff auf strukturierte Variablen, Dateisystemobjekte, Makros (METAL) usw. - Stringausdruck
- Präfix
string:
; erlaubt Pfadausdrücke in${...}
- Logische Negation
- Präfix
not:
; wertet den restlichen Ausdruck aus und gibt seine logische Negation zurück - Python-Ausdruck
- Präfix
python:
; wenn implementiert, gibt den Wert des folgenden Python-Ausdrucks zurück. Dies findet üblicherweise nur Anwendung, wenn Pfadausdrücke nicht ausreichen, z. B. wenn eine Funktion mit bestimmten Argumenten aufgerufen werden muß. - Unterdrückung des Quotings
- Präfix
structure:
: unterdrückt das sonst automatisch angewendete HTML-Quoting, um beispielsweise ein komplettes HTML-Element zu erzeugen.
Eingebaute Variablen
- nothing
- ein „Nicht-Wert“, der keine Zeichenkette sein darf, z. B. None (Python), void, Nil, oder NULL.
- options
- die (benannten) Argumente, die dem Template übergeben wurden
- repeat
- zum Zugriff auf Schleifenvariablen wie index, number usw.
Beispiele
Einfacher Pfadausdruck zum Zugriff auf ein Makro
<metal:form use-macro="location/page/MACROS/myform"/>
Hier sei beispielsweise location
das Verzeichnis, das eine Templatedatei page
enthält, in der wiederum das Makro myform
definiert wurde. In Zope Page Templates würde hier anstelle von location
z. B. here
(als Ausgangspunkt der Akquisition zur Suche nach page
) oder container
stehen.
Schleife mit Pfad-, Python- und Stringausdrücken
<tr tal:repeat="item python:({'key': 'eins'}, {'key': 'zwei'})"> <td tal:content="repeat/item/number">99</td> <td tal:content="string:Zeile ${item/key}">Zeile 99</td> </tr>
Erläuterungen:
- das
tal:repeat
-Attribut erzeugt eine Variableitem
und eine Sequenz von Dictionarys, die verwendet wird, um mehrere HTML-Tabellenzeilen zu erzeugen - die speziellen Schleifenvariablen (z. B. number) für
item
werden über die spezielle, vom TALES-Standard geforderte Variablerepeat
zur Verfügung gestellt - Pfadausdrücke können auch innerhalb von String-Ausdrücken verwendet werden, siehe unten
Logische Negation und TAL-Elemente
<tal:if condition="view_ok"> ... </tal:if> <tal:else condition="not:view_ok"> ... </tal:else>
is_view_ok könnte hier eine Methode sein, die aus dem context aufgerufen wird und die Leseberechtigung des Users überprüft. Im „Else-Zweig“ (der syntaktisch nichts anderes ist als der „If-Zweig“; if
und else
sind hier frei gewählte Namen, die sogar hätten gleich sein dürfen) wird die logische Bedingung des If-Zweigs umgekehrt, sodaß nur einer der beiden ausgeführt wird.