Directives de TAL ----------------- ============== ============================================= Directives ============== ============================================= ``attributes`` pour changer les attributs de l'élément ``condition`` pour effectuer un test ``content`` pour remplacer le contenu ``omit-tag`` pour supprimer la balise mais pas son contenu ``on-error`` pour gérer les erreurs ``repeat`` pour répeter un élément ``replace`` pour remplacer la balise et son contenu ============== ============================================= Ordre des opérations '''''''''''''''''''' Quand un élément comporte plusieurs directives, elles sont exécutées dans l'ordre suivant : 1. ``define`` 2. ``condition`` 3. ``repeat`` 4. ``content`` ou ``replace`` 5. ``attributes`` 6. ``omit-tag`` Cet ordre d'opération suit une certaine logique. En effet on définit des variables avant de les utiliser (donc ``define`` en premier ; ensuite on détermine si l'élément doit être inclus (donc ``condition``) ; comme c'est utile de pouvoir remplacer des éléments à chaque itération d'une boucle, ``repeat`` passe devant ``content`` et ``replace``. Comme ``replace`` pourrait supprimer l'élément, il n'y a pas de sens à affecter des attributs à celui-ci, donc ``attributes`` vient à la suite. ``omit-tag`` est dernier. `on-error`` n'est jamais invoqué qu'en cas d'erreur, il ne fait donc pas partie de cette liste. Détails des directives de TAL ''''''''''''''''''''''''''''' ``attributes`` `````````````` ``attributes`` sert à modifier (ou ajouter) un ou plusieurs attributs à la balise où il se trouve. Il ne peut y avoir qu'une seule directive ``attributes`` par élément. On remplace plusieurs attributs non pas en multipliant les déclarations ``attributes`` mais en séparant les différents attributs par des points-virgules. Exemple, :: Ailleurs deviendra :: Ailleurs Et :: deviendra: :: ``condition`` ````````````` ``condition`` permet d'inclure l'élément auquel il se rapporte uniquement quand la condition est vérifiée. Exemple: ::

Vous n'êtes pas identifié.

Ne provoquera l'affichage du paragraphe et de son contenu que quand la variable ``userToken`` ne sera pas définie. content ``content`` permet de remplacer le contenu d'un élément par le résultat de l'expression. Exemple: ::

Titre

Pourra devenir (suivant la valeur de currentObject.label: ::

Liste des nouveautés

``define`` `````````` ``define`` permet de définir des variables. Exemple : ::

Titre

``omit-tag`` ```````````` ``omit-tag`` permet de supprimer la balise avec laquelle il est associé une fois les autres directives suivies. Exemple : ::

Bonjour

provoquera simplement ::

Bonjour

``on-error`` ```````````` ``on-error`` permet d'intercepter des erreurs qui se produiraient dans d'autres directives. Par exemple : ::

Un peu de texte.

sd

La division 42/0 va provoquer une erreur et le texte Une erreur est survenue sera donc affiché. ``repeat`` `````````` ``repeat`` permet de répéter un certain nombre de fois un élément. Il définit une variable qui contiendra au fur et à mesure des itérations toutes les valeurs de la liste donnée en expression. Exemple : :: Variable repeat supplémentaire `````````````````````````````` Dans une boucle ``repeat``, une variable supplémentaire existe et a pour nom ``repeat-`` suivi du nom de la variable d'itération (dans l'exemple précédent, ``author`` donc ``repeat_author``). Cette variable contient les attributs : ========== ============================================ Attributs ========== ============================================ ``index`` index de l'élément dans la liste (début à 0) ``number`` idem (début à 1) ``even`` vrai si l'index est pair ``odd`` vrai si l'index est impair ``start`` vrai pour le premier élément ``end`` vrai pour le dernier élément ``length`` longueur de la liste ``letter`` index sous forme de lettre (a, b, c...) ``Letter`` la même chose en majuscule ``roman`` index sous forme de chiffres romains ``Roman`` la même chose en majuscule ========== ============================================ Un paragraphe bidon pour séparer. +------------+----------------------------------------------+ | Attributs | +============+==============================================+ | ``index`` | index de l'élément dans la liste (début à 0) | +------------+----------------------------------------------+ | ``number`` | idem (début à 1) | +------------+----------------------------------------------+ | ``even`` | vrai si l'index est pair | +------------+----------------------------------------------+ | ``odd`` | vrai si l'index est impair | +------------+----------------------------------------------+ | ``start`` | vrai pour le premier élément | +------------+----------------------------------------------+ | ``end`` | vrai pour le dernier élément | +------------+----------------------------------------------+ | ``length`` | longueur de la liste | +------------+----------------------------------------------+ | ``letter`` | index sous forme de lettre (a, b, c...) | +------------+----------------------------------------------+ | ``Letter`` | la même chose en majuscule | +------------+----------------------------------------------+ | ``roman`` | index sous forme de chiffres romains | +------------+----------------------------------------------+ | ``Roman`` | la même chose en majuscule | +------------+----------------------------------------------+ Cette variable comporte également deux méthodes, ``first`` et ``last`` qui peuvent être utilisées dans le cas d'éléments triés pour repérer le début ou la fin d'un groupe. Exemple : :: provoquera :: ``replace`` ``````````` ``replace`` permet de remplacer une balise et son contenu par le résultat de l'expression. Exemple : ::

Vous êtes sur l'article test.