Template Attribute Language
Die Template Attribute Language (TAL, sinngemäß übersetzt: „Attributbasierte Schablonensprache“) ist eine Templatesprache zur Generierung von HTML- und XML- (und damit auch XHTML-) Seiten. Sie verfolgt das Ziel, die Zusammenarbeit von Designern und Programmierern zu erleichtern, indem sowohl die Templates als auch die Ergebnisseiten gültige Dokumente ihrer Auszeichnungssprache sind. Die Templates können deshalb mit Designwerkzeugen bearbeitet werden, die von TAL nichts wissen, aber die ihnen unbekannten Attribute unbehelligt lassen.
Die TAL entstand im Rahmen des Web-Anwendungsservers Zope; dort wird in der Regel von Zope Page Templates gesprochen.
TAL abstrahiert völlig von der eingesetzten Programmiersprache; lediglich die eingesetzte Sprache für die Ausdrucksauswertung (in der Regel TALES) kann implementierungsabhängig sprachspezifische Ausdrücke erlauben, meist in Python.
Überblick
TAL-Templates werden erstellt als Ergebnisdokumente, bei denen die variablen Inhalte durch spezielle Attribute übersteuert werden; Programmcode außerhalb von Elementen, wie z. B. in PHP oder JSP, ist nicht nötig. Im folgenden Beispiel würde das Element <h1>
<h1 tal:content="string:Eine völlig andere Überschrift">
Für den Designer sichtbare Überschrift
</h1>
von einem üblichen HTML-Editor als
<h1>
Für den Designer sichtbare Überschrift
</h1>
behandelt, während die Anwendung des Templates durch den Application-Server
<h1>
Eine völlig andere Überschrift
</h1>
ergibt. Die Angabe eines konstanten Strings ist natürlich ein in der Praxis eher vernachlässigbarer Fall; die möglichen Attributwerte werden von der TAL Expression Syntax (TALES) definiert. So können in den vorhandenen Python-Implementierungen beispielsweise Python-Ausdrücke verwendet werden.
Wenn XML-Dokumente generiert werden sollen, ist es wichtig, den XML-Namespace einzutragen (xmlns:tal="http://xml.zope.org/namespaces/tal"
).
Makros
Mit Hilfe der METAL (Macro Expansion TAL) ist es möglich, Code über Template-Grenzen hinweg wiederzuverwenden.
Internationalisierung
Mit Hilfe der i18n
-Attribute (siehe i18n TAL) können lokalisierte Seiten generiert werden.
Attribute
Es werden folgende Attribute erkannt, denen im Normalfall das Präfix tal:
vorangestellt werden muss:
- define
- erzeugt innerhalb des durch das Element definierten Blocks gültige, lokale Variablen
- condition
- entscheidet, ob das Element erzeugt wird
- repeat
- erzeugt eine Schleifenvariable, mit der über eine Sequenz iteriert wird, z. B. um eine Auswahlliste oder eine Tabelle zu erzeugen
- content
- ersetzt den Inhalt des Elements
- replace
- ersetzt das Element (und ist deshalb nicht gemeinsam mit content oder attributes einsetzbar)
- attributes
- ersetzt die angegebenen Attribute (z. B. könnten mit
tal:attributes="name name; id name"
Name- und ID-Attribut eines Eingabefelds mit Hilfe der Variablen „name“ definiert werden) - omit-tag
- erlaubt, das Tag dynamisch fortzulassen und nur den Inhalt darzustellen
- on-error
- wird ausgeführt, wenn ein Fehler auftritt, und funktioniert dann wie „content“
Wenn ein Element mehrere TAL-Attribute hat, werden diese (unabhängig von der Reihenfolge ihrer Notierung) in der oben angegebenen (logisch naheliegenden) Reihenfolge ausgewertet; die Reihenfolge der Variablen-Definitionen innerhalb eines „define“-Attributs ist hingegen signifikant, sodass eine Variable in späteren Zuweisungen in demselben define-Attribut verwendet werden kann.
Wenn es kein Element gibt, das sich als Träger der TAL-Attribute anbietet, können auch spezielle TAL-Tags verwendet werden; in diesem Fall ist das Präfix tal:
optional. Beispiel:
<tal:if condition="context/itemlist">
...
</tal:if>
Der Code innerhalb des <tal:if>
-Elements wird dabei verwendet, wenn beispielsweise die im Kontext (was immer das für den verwendeten Application-Server bedeutet, beispielsweise ein Objekt) definierte Variable „itemlist“ true ist, im Falle einer Liste also mindestens ein Element enthält.
Der Bezeichner nach dem Doppelpunkt ist dabei beliebig; er muss lediglich bei öffnendem und schließendem Tag gleich sein.
Verwendung
TAL/TALES/METAL werden von folgenden Projekten verwendet:
- Web-Anwendungsserver Zope
- Roundup (Bugtracker)
Andere Implementierungen
Neben der ursprünglichen Zope-Implementierung gibt es (ohne Anspruch auf Vollständigkeit) die nachfolgend aufgeführten:
Java
- JPT: Java Page Templates (christophermrossi.com)
- JavaZPT (javazpt.sourceforge.net)
JavaScript
- Distal (http://code.google.com/p/distal)
- DomTal (https://github.com/drslump/DomTal)
Perl
- PETAL, die Perl Template Attribute Language (search.cpan.org)
- Template-TAL (search.cpan.org)
PHP
- PHPTAL, die PHP Inkarnation von TAL (http://phptal.org/)
Python
- SimpleTAL (owlfish.com TAL-guide)
- OpenTAL (savannah.nongnu.org)
- ZPT (zpt.sourceforge.net – eine Standalone-Version der Zope Page Templates)
- Chameleon (https://chameleon.readthedocs.io)
XSL
- XSLTAL, transformiert TAL mittels XSL in XSLT (http://wiki.flux-cms.org/display/FLX/Templates+XSLTAL)
Siehe auch
- TALES, METAL, i18n TAL
- Template Engine
Literatur
- Erik Möller: Vorlagen-TALent – Web-Templates mit TAL, TALES und METAL (Praxis, TAL-Templates für Zope X3, Template Attribute Language, TAL, TALES, METAL, Content-Management-System, CMS, PHPTAL, PETAL, JavaZPT). In: c’t, 3/2005, S. 194
Weblinks
- Spezifikation der Version 1.4
- Zope Page Templates Reference (im Zope-Book)