Google Chercher dans diml.org
[ english ]

Table des matières
Définition matricielle
Ecriture d'un motif
Réalisation du motif  Dernières infos
 Une application du composant  WCT_NEWS  
>> Haut de la page

Le DIML Vectoriel : Injection matricielle

Définition matricielle

Les principes vectoriels du DIML ont été particulièrement conçus pour accélerer le développement de documents balisés. Ils s'appuient sur le constat que, lorsque des documents réels sont écrits, la "glue" de mise en forme présente une grande récurrence. Cette récurrence de forme est encore plus importante si une charte documentaire a été instaurée.

Lorsque les documents sont dynamiques, et construits à partir de données structurées, la récurrence augmente encore. Mais à y regarder de plus près, la construction d'un tel contenu est proche d'un matriçage entre un motif et un contenu.

Par exemple, dans le cas d'un remplissage d'une liste, considérons le code :

<SELECT NAME=aselect SIZE=10>
<OPTION VALUE=0>Not selected</OPTION>
<OPTION VALUE=1>January</OPTION>
<OPTION VALUE=2>February</OPTION>
<OPTION VALUE=3>March</OPTION>
<OPTION VALUE=4>April</OPTION>
<OPTION VALUE=5>May</OPTION>
<OPTION VALUE=6>June</OPTION>
<OPTION VALUE=7>July</OPTION>
<OPTION VALUE=8>August</OPTION>
<OPTION VALUE=9>September</OPTION>
<OPTION VALUE=10>October</OPTION>
<OPTION VALUE=11>November</OPTION>
<OPTION VALUE=12>December</OPTION>
</SELECT>

Réécrivons les lignes d'option en utilisant une notation matricielle :

                                             A         B
                                           / 0, "Not selected" \
                                           | 1, "January"      |
                                           | 2, "February"     |
                                           | 3, "March"        |
                                           | 4, "April"        |
                                           | 5, "May"          |
                                          <  6, "June"          >
                                           | 7, "July"         |
                                           | 8, "August"       |
                                           | 9, "September"    |
                                           | 10, "October"     |
                                           | 11, "November"    |
                                           \ 12, "December"    /
 
 
                                     / <OPTION VALUE=0>Not selected</OPTION> \
                                     | <OPTION VALUE=1>January</OPTION>      |
                                     | <OPTION VALUE=2>February</OPTION>     |
                                     | <OPTION VALUE=3>March</OPTION>        |
                                     | <OPTION VALUE=4>April</OPTION>        |
                                     | <OPTION VALUE=5>May</OPTION>          |
{ <OPTION VALUE=A>B</OPTION> }      <  <OPTION VALUE=6>June</OPTION>          >
                                     | <OPTION VALUE=7>July</OPTION>         |
                                     | <OPTION VALUE=8>August</OPTION>       |
                                     | <OPTION VALUE=9>September</OPTION>    |
                                     | <OPTION VALUE=10>October</OPTION>     |
                                     | <OPTION VALUE=11>November</OPTION>    |
                                     \ <OPTION VALUE=12>December</OPTION>    /

On peut dire ici que la matrice finale (les options écrites dans le document) est obtenue par "multiplication" d'une matrice de motif (le motif d'option) avec une matrice de valeurs. Si nous divisons la matrice du haut en deux vecteurs, nous obtenons :

                                             A[]            B[]
                                           / 0  \   / Not selected \
                                           | 1  |   |   January    |
                                           | 2  |   |   February   |
                                           | 3  |   |    March     | 
                                           | 4  |   |    April     |
                                           | 5  |   |     May      |
                                          <  6   > <     June       >
                                           | 7  |   |    July      |
                                           | 8  |   |   August     |
                                           | 9  |   |  September   |
                                           | 10 |   |  October     |
                                           | 11 |   |  November    |
                                           \ 12 /   \  December    /
 
 
                                     / <OPTION VALUE=0>Not selected</OPTION> \
                                     | <OPTION VALUE=1>January</OPTION>      |
                                     | <OPTION VALUE=2>February</OPTION>     |
                                     | <OPTION VALUE=3>March</OPTION>        |
                                     | <OPTION VALUE=4>April</OPTION>        |
                                     | <OPTION VALUE=5>May</OPTION>          |
{ <OPTION VALUE=A[]>B[]</OPTION> }  <  <OPTION VALUE=6>June</OPTION>          >
                                     | <OPTION VALUE=7>July</OPTION>         |
                                     | <OPTION VALUE=8>August</OPTION>       |
                                     | <OPTION VALUE=9>September</OPTION>    |
                                     | <OPTION VALUE=10>October</OPTION>     |
                                     | <OPTION VALUE=11>November</OPTION>    |
                                     \ <OPTION VALUE=12>December</OPTION>    /

L'écriture ci-dessus montre comment l'on peut "multiplier" un motif avec deux vecteurs formels A et B. Le DIML a adapté cette simplicité conceptuelle.

Ecriture d'un motif

Un motif est équivalent à un template, dans lequel apparait des variables d'injection "vectorielles". Elles se différentient d'appels de variables scalaires par leur syntaxe tabulaire:

<TEMPLATE ID="motif">
<OPTION VALUE="<%%A[]%%>"><%%B[]%%></OPTION>
</TEMPLATE>

Ceci correspond à notre première matrice.

Réalisation du motif

Pour produire la matrice réalisée, il faudra fournir deux tableaux %A% et %B% alimentés comme indiqué dans le document précédent, et écrire un appel effectuant l'injection itérative, c'est à dire la multiplication des matrices à un certain endroit du document :

<%%motif[13]%%>


Interpréter

voir le corrigé

Nous verrons par la suite dans le parcours du programmeur comment ces tableaux proviennent en fait le plus souvent de bases de données, ou d'autre sources de données dynamiques.

précédent sommaire suivant


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