{{tag>web python template chameleon pyramid}}
====== Moteur de template Chameleon ======
**Chameleon** est un moteur de template Python. Il permet de générer des documents textes formatés par des balises(XML/HTML) à partir de modèles (les templates). Chameleon accepte en entrée des documents XML/HTML bien formés (le modèle ou template) et via un système d'attributs (les déclarations ou statements) il génère un fichier texte XML qui n'est pas nécessairement bien formé.
Le framework Pyramid peut utiliser Chameleon pour produire des pages HTML dynamiquement.
Dans le modèle (template) des attributs spécifiques intégrés dans les balises du document permettent de contrôler la génération du document de sortie. La syntaxe est la suivante:
Contenu de ma balise
Dans cet exemple, la balise paragraphe
...
est l'élément sur lequel porte la déclaration. Les commandes sont préfixés par l'espace de nommage (ou namespace). Les différents espaces de nommage préfixant les commandes sont en général déclarés au début du template. Ces déclaration n'apparaissent pas dans le document en sortie.
...
===== TAL =====
TAL pour Template Attribute Language est utilisé pour créer du contenu XML
^ Déclaration ^ Description |
| tal:define | Définir une variable |
| tal:switch | Définir une condition switch |
| tal:condition | Inclure l'élément si condition vraie |
| tal:repeat | Répéter l'élément |
| tal:case | Inclus l'élément si expression est égale au switch parent |
| tal:content | Substituer le contenu de l'élément |
| tal: replace | remplacer l'élément avec un contenu |
|tal:omit-tag | Ignore les tag laissant seulement le contenu |
| tal:attributes | Changer dynamiquement ou insérer des attributs |
| tal:on-error | Modifier le contenu de l'element en cas d'erreur |
Lorsque de multiples déclaration TAL existent dans un élément, elles ne sont pas executés dans leur ordre d'écriture. L'ordre d’exécution des déclarations TAL est celui donné par le tableau ci-dessus.
These are your items:
Dans cet exemple, la balise contient deux déclarations. Le tableau indique que c'est d'abord **tal:repeat** qui sera exécutée créant une balise par item puis **tal:content** qui peuplera le contenu de chaque balise. Le code suivant produirait le meme résultat:
Toute combinaison de déclarations est possible au sein d'un même élément à l’exception de **tal:content** et **tal:replace**.
===== Références =====
* http://chameleon.readthedocs.io/en/latest/reference.html