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:

Andere Implementierungen

Neben der ursprünglichen Zope-Implementierung gibt es (ohne Anspruch auf Vollständigkeit) die nachfolgend aufgeführten:

Java

JavaScript

Perl

PHP

Python

XSL

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