Google Chercher dans diml.org
[ english ]

Table des matières
Syntaxe des noms de templates
Conséquences de la spécification
Noms simples
Caractères à signification spéciale
Conventions formelles
Définition de portées
Portées et sous portées
Variables-Indices automatiques
Résumé  Dernières infos
 Une application du composant  WCT_NEWS  
>> Haut de la page

Nommage des templates et variables

Syntaxe des noms de templates

Conséquences de la spécification

L'utilisation du DIML conduit à la définition de noms pour les templates et les variables. Le DIML impose des guillemets (") pour la définition de l'ID de template et le caractère % pour les noms de variables :


<TEMPLATE ID="UnElementDIML">

<%set %UnElementDIML% = "..." %>

Par conséquent, toute chaîne de caractères excluant " et % est acceptable pour constituer un nom d'élément DIML. Par convention culturelle, on pourra choisir d'éviter l'utilisation d'espaces.

Quelques autres caractères sont très vivement déconseillés, car utilisés par des syntaxes spéciales du DIML (voir ci-après).

Noms simples

Le plupart des templates disposent de noms simples, décernés sur le moment, suivant un besoin sémantique immédiat ("DebutTable", "EnTete", "MargeGauche", etc.). Autant de noms qui designent des éléments simples.

La liberté est absolue dans ce domaine, tant que les choix de sémantiques ne viennent pas contrecarrer certaines "traditions" des auteurs de DIML évoquées ci-après.

Caractères à signification spéciale

Dans le DIML, les éléments '[', ']', ou '[]' peuvent préter à confusion car utilisés pour des formes tabulaires.

Conventions formelles

Définition de portées

L'utilisation de noms simples peut poser de nombreux problèmes dans des projets utilisant des templates de plusieurs auteurs. Les collisions de noms peuvent y apparaître et perturber gravement le fonctionnement d'un document. Le DIML n'est pas "exigeant" dans ce cas, la dernière définition l'emportant toujours. Une "variable" donnée peut ainsi prendre des valeurs successives au fur et à mesure de la construction du document.

Cette caractéristique est souvent un handicap lorsque des "mécanismes packagés" (composants) utilisent ces variables.

Le DIML ne précisant aucune syntaxe formelle de portée (on rappelle ici que toutes les variables DIML sont rassemblées dans un seul et unique tableau associatif d'interface), un nom est valable pendant toute la construction du document.

Les programmeurs DIML utilisent les faibles restrictions sur la syntaxe de nommage pour résoudre ce problème. A l'aide d'un préfixe, on définit une portée séparée du nom de variable effectif par une séquence ::.

Certaines portées permettent au moteur DIML de fournir des variables, sans se soucier de collisions de noms, devenues alors beaucoup moins probables. Par exemple, la portée ENV:: (voir Variables et super éléments) dans laquelle le moteur DIML fournit à l'utilisateur les principales variables d'environnement de la machine de script (voir variables réservées).

La syntaxe de portée (::) n'est qu'une convention formelle des programmeurs en DIML. En effet, le processeur ESSI ignore tout de cette portée. Pour lui, les variables MaVariable et ENV::HTTP_REFERER fonctionnent à l'identique.

Portées et sous portées

Il est possible, le cas échéant, d'utiliser des sous-portées. Leur utilisation est aussi simple que celle des portées de variables. Il suffit d'utiliser deux séparateurs de portée dans le nom de variable, ainsi :

<TEMPLATE ID="WCT_FORUM::CLIENT::MESSAGE_LIST">
...
</TEMPLATE>

définit un sous élément "MESSAGE_LIST" d'une implémentation "CLIENT" d'un composant Web intitulé "WCT_FORUM", d'une façon toujours transparente pour le processeur ESSI.

Les noms de portée peuvent être choisis librement, tant que les règles générales de nommage des templates sont respectées. Les portées suivantes sont déjà exploitées :

  • ENV:: Les variables d'environnement du script.
  • ESSI:: Les variables publiques construites par le processeur lui-même.
  • FORM:: L'ensemble des variables provenant d'un formulaires HTML (variables POST ou GET).

Transport de valeurs entre portées

Il peut être pratique de transférer des valeurs d'une variable d'une portée à une autre. Il n'existe pour cela aucune opération sécifique, il suffit de stocker dans la variable d'arrivée le résultat d'une évaluation de la variable de départ grâce aux instructions %set ou %eval, ainsi :

<%set %MaVariable% = "UneValeur" %>
<%eval %MAPORTEE::MaVariable% = %MaVariable% %>
<%set %MaVariable% = "UneAutreValeur" %>

NOTE : On se reportera à la spécification DIML pour la différence entre les deux instructions d'affectation.

Variables-Indices automatiques

Par convention, lors de l'emploi de formes vectorielles, des indices automatiques sont générés par le processeur. Ces variables-indices sont accessibles dans la page DIML au même titre que les variables définies par le développeur. Leur nom est formée par le nom initial de la variable tableau suivi d'un indicateur de dimension :

%MON_TABLEAU§I§I%

De plus, les contenus de tableaux sont des variables respectant la syntaxe particulière suivante (exprimée en forme BACKUS-NAUR étendue) :

suffixe ::= '§' indice *[ suffixe ]
indice ::= numerique *[ numerique ]
numerique ::= '0|1|2|3|4|5|6|7|8|9';

L'emploi du caractère § (paragraphe) est donc vivement déconseillé pour le nommage des templates ou variables DIML.

Commandes ou "méthodes formelles"

Ceux qui vont aller explorer le parcours 4 rencontreront des noms de templates écrits comme des fonctions :

<TEMPLATE ID="WCT_FORUM::LIST::TO_START()">
<A HREF="Javascript:wct_forum_listformlaunch('tostart')" 
class=WCC_FORUM_links><%%WCT_FORUM::toStartCmd%%></A>
</TEMPLATE>

Il s'agit là encore d'une convention sans conséquence algorithmique. Le processeur DIML ignore les parenthèses, qu'il considère appartenir au nom de la variable au même titre que les lettres, ou le : du séparateur de portée.

Résumé

Le nommage des variables et des templates ne répond à aucune syntaxe particulière.

Les caractères interdits ou vivement déconseillés sont :

% L'indicateur de variable DIML
[, ] Les marques d'appel vectoriel
', " Les quotations
§ La marque d'indice automatique
& Le caractère d'échappement des entités SGML

Tous les autres caractères sont libres d'emploi.

Est définie une convention d'écriture appelée "définition de portée", et notée :: permetant de dissocier des variables portant un même nom (ou souhaitant le porter pour des raisons sémantiques)

Le DIML utilise les portées ENV::, ESSI::, et FORM:: comme portées standard.

précédent sommaire suivant


All material is copyleft V.G. FREMAUX (EISTI France) 1999 to 2003 except explicitly mentioned