Outils pour utilisateurs

Outils du site


dev:web:chameleon

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
dev:web:chameleon [2017/04/04 14:33] – créée yoanndev:web:chameleon [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1
Ligne 3: Ligne 3:
 ====== 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
dev/web/chameleon.1491316437.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)