| Prochaine révision | Révision précédente |
| dev:web:chameleon [2017/04/04 14:33] – créée yoann | dev:web:chameleon [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| ====== Moteur de template Chameleon ====== | ====== Moteur de template Chameleon ====== |
| |
| **Chameleon** est un moteur de template Python. Il permet de produire des documents textes à balises (XML/HTML). Chameleon accepte en entrée des documents XML/HTML bien formés (le modèle ou template) et via un langage de programmation à attributs il produit en sortie un fichier texte XML qui n'est pas nécessairement bien formé. | **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. | Le framework Pyramid peut utiliser Chameleon pour produire des pages HTML dynamiquement. |
| |
| |
| Dans le modèle (template) des attributs spécifiques permettent de contrôler/spécifier la génération du document en sortie. La syntaxe est la suivante: | 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: |
| |
| <code html> | <code html> |
| <p namespace:command="arguments"> Contenu de ma balise </p> | <p namespace:command="arguments"> Contenu de ma balise </p> |
| </code> | </code> |
| | |
| | Dans cet exemple, la balise paragraphe <p></p> contient un attribut **%%namespace:command="arguments"%%** dit déclaration (ou statement) et la balise dans son ensemble <p>...</p> 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. |
| | |
| | <code html> |
| | <html xmlns="http://www.w3.org/1999/xhtml" |
| | xmlns:tal="http://xml.zope.org/namespaces/tal" |
| | xmlns:metal="http://xml.zope.org/namespaces/metal" |
| | xmlns:i18n="http://xml.zope.org/namespaces/i18n"> |
| | ... |
| | </html> |
| | </code> |
| | |
| | ===== 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. |
| | |
| | <code html> |
| | <html> |
| | <meta> |
| | <title tal:content="context.title" /> |
| | </meta> |
| | <body> |
| | <div tal:condition="items"> |
| | <p>These are your items:</p> |
| | <ul> |
| | <li tal:repeat="item items" tal:content="item" /> |
| | </ul> |
| | </div> |
| | </body> |
| | </html> |
| | </code> |
| | |
| | Dans cet exemple, la balise <li></li> contient deux déclarations. Le tableau indique que c'est d'abord **tal:repeat** qui sera exécutée créant une balise <li></li> par item puis **tal:content** qui peuplera le contenu de chaque balise. Le code suivant produirait le meme résultat: |
| | |
| | <code html> |
| | <ul> |
| | <li tal:content="item" tal:repeat="item items" /> |
| | </ul> |
| | </code> |
| | |
| | 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 ===== | ===== Références ===== |
| |
| * http://chameleon.readthedocs.io/en/latest/reference.html | * http://chameleon.readthedocs.io/en/latest/reference.html |