Un site Wap
Les templates
HomeUpDown

Le Wml qui se doit d'être économe en octets, propose un outil qui permet d'épargner des lignes de code. Ce sont les templates [modèles]. Les événements/actions que l'on aura défini avec la balise <template> s'appliqueront, un peu à l'image d'un modèle, à toutes les cartes du deck. Il serait équivalent de reprendre le même code dans chacune des cartes mais au détriment de la longueur du code.


 

La balise <template> ... </template>

Les attributs (facultatifs) sont :

onenterforward="URL" La template est activée quand le navigateur appelle la carte par une action <go>.
onenterbackward="URL" La template est activée quand le navigateur appelle la carte par une action <prev>.
ontimer="URL" La template est activée à la fin d'un compte à rebours.

Exemple :

Je souhaite faire apparaître sur chaque carte une vignette Help pour permettre à l'utilisateur de consulter une aide à tout moment.

<template>
<do type="accept" label="Help"
<go href="#help"/>
</do>
</template>

Le résultat est (bien entendu) conforme à ce souhait.


 

Où se met-elle ?

La balise <template> se met juste après la déclaration de document Wml soit la balise <wml> et en toute logique, avant toutes balises de cartes <card>.

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
... événement/action ...
</template>
<card id="card1" title="Carte 1">
<p>
Texte de la carte 1
</p>
</card>
<card id="card2" title="Carte 2">
<p>
Texte de la carte 2
</p>
</card>
<card id="card3" title="Carte 3">
<p>
Texte de la carte 3
</p>
</card>
</wml>


 

Comment l'éviter ?

Et si je ne veux pas qu'un de ces modèle s'applique à une carte déterminée ? Il suffira de mettre dans la carte, une action <do> du même nom (name) que celui de la template et une balise <noop/>. En outre toute action spécifiée dans la carte est prioritaire par rapport à celle de la template. Un exemple sera de loin plus explicatif...

Grâce à une template, je vais mettre une vignette Retour pour faciliter la navigation entre les cartes. Cette vignette Prev n'a bien entendu pas de sens pour la première carte.

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
<do type="accept"
name="back" label="Retour">
<prev/>
</do>
</template>

<card id="card1" title="Carte 1">
<do type="accept" name="back">
<noop/>
<do>
<p>
Texte de la carte 1
</p>
</card>
<card id="card2" title="Carte 2">
<p>
Texte de la carte 2
</p>
</card>
<card id="card3" title="Carte 3">
<p>
Texte de la carte 3
</p>
</card>
</wml>



   

Simulations d'après Nokia Wap Toolkit