
TAL a initialement été développé pour Zope suite à la frustration de
nombreuses personnes quant au DTML. Un des problèmes de celui-ci était
qu'il rendait extrèmement difficile l'interaction du Designer Web avec
le développeur Zope. Et inversément.

Le scénario était le suivant: le designer créait un squelette de page,
avec l'outil de son choix puis envoyait ce squelette au développeur.
Celui-ci démolissait ensuite la page reçue du designer pour remplacer
le contenu de remplissage par du code abscons connu par lui seul (ou
presque) et qui était ensuite interprété par son programme pour créer
une réelle page.

Pas de problème. Sauf que si le designer voulait appliquer une
modification, la page devait obligatoirement repasser entre les mains
du programmeur. Et là, ça devenait un problème.

Les Zope Page Templates (en fait, TAL) ont été créées pour répondre à
ce problème. Il devient dès lors possible au designer et au
programmeur de travailler sur le même fichier, de manière
non-intrusive ni pour l'un ni pour l'autre.

C'est une bonne chose et donc Glasnost a adopté TAL pour son système
de *template*.




Principes de base de TAL
------------------------

On peut imaginer que le code du webdesigner ressemble en partie à
ceci : ::

	<div class="article">
	  <h1>Titre de l'article</h1>
	  <h2>Nom de l'auteur</h2>
	  ...
	</div>

Le principe de TAL est d'ajouter des attributs spéciaux aux balises
HTML classiques. Ces attributs sont dans un *namespace*
particulier, ce qui les protège vis-à-vis des éditeurs HTML
graphiques.

Le code précédent, une fois converti par le programmeur pourrait
ressembler à cela : ::

	<div class="article">
	  <h1 tal:content="currentObject.label">Titre de l'article</h1>
	  <h2 tal:content="currentObject.authorsSet[0].label">Nom de l'auteur</h2>
	  ...
	</div>

``content`` est une des déclarations possibles au niveau de TAL. Le
contenu de l'attribut currentObject.label est lui une expression
Python.


