/

 

The manual

Self-training

Experimentation

Contact

 

Language

Fabrication d'un fichier par substitution dans un fichier exemple

Cela se fait par substitution de blocs et de sections dans un fichier exemple.

Supposons que le bloc Storga dont l'identifiant est 'x/y/z' soit un bloc fichier et que le contenu du fichier soit:

<table>«row:
<tr>
<td>«date»</td>
<td>«label»</td>
<td><b>«v»</b></td>
</tr>»
</table>

Alors, le morceau de code suivant:

write_file f "test.html" "template [dq]x/y/z[dq] xml ascii date [dq]dd/mm/yyyy[dq] decimal [dq],[dq]"
  f_section "row"
    f_value "date" (date 2001 6 20)
    f_value "label" "Un évènement"
    f_value "v" 12.3
  f_section "row"
    f_value "date" (date 2002 6 22)
    f_value "label" "Un autre évènement"
    f_value "v" 45.6

Produira par substitution un fichier dont le contenu est:

<table>
<tr>
<td>20/06/2001</td>
<td>Un evenement</td>
<td><b>12,3</b></td>
</tr>
<tr>
<td>22/06/2002</td>
<td>Un autre evenement</td>
<td><b>45,6</b></td>
</tr>
</table>

Dans le fichier exemple, les balises «un_nom» indiquent les noms des champs,
et les balises «un_nom:le_contenu» indiquent le contenu d'une section.

Dans le programme, l'instruction 'f_value' fourni la valeur à substituer au niveau d'un champ, et l'instruction 'f_section' indique le nom de la section dont on veut un nouvel exemplaire.

Lorsque la spécification du fichier à produire fixe une longeur maximum à un champ, on peut indiquer le nom de ce champ sous la forme «nom_du_champ longueur_maximale» pour qu'une valeur trop longue fournie via l'instruction 'f_value' soit automatiquement tronquée.

Au niveau de l'instruction 'write_file', les options suivantes sont utilisables:

Syntaxe

Effet

Exemple

charset "code_de_charset"

Spécifie l'encoding des caractères à utiliser dans le fichier produit.

charset "iso8859-1"

ascii

 

 

exclude "caractères_exclu" replace_with "caractère de remplacement"

Specifie les caractères interdit, qui seont remplacé par la chaine fournie via le paramètre 'replace_with'.

exclude "[0][cr][lf][dq]" replace_with "?"

xml

Effectue un encodage XML des chaines de caractères, par exemple '&' sera remplacé par '&#38;' comme prévu dans le standard XML.

xml

json

Effectue un encodage JSON des chaînes de caractères.

json

edi

Effectue un encodage EDI des chaînes de caractères.

edi

decimal "séparateur_décimal"

Spécifie le séparateur décimal à utiliser.

decimal ","

date "format_de_date"

Spécifie le format à utiliser pour les champs date passés via l'instruction 'f_value'.

date "dd/mm/yyyy"

datetime "format_de_date_et_heure"

Idem pour les champs date et heure.

datetime "dd/mm/yyyy HH:MM:SS"

cr

 

 

lf

 

 

cr+lf

 

 

Enfin, il est possible de déporter certaines options du programme vers le fichier exemple, via une balise ««»» en tête du fichier exemple. Ainsi, dans l'exemple précédent, on aurait obtenu le même résultat avec le fichier exemple suivant:

««xml ascii date "dd/mm/yyyy" decimal ","»»<table>«row:
<tr>
<td>«date»</td>
<td>«label»</td>
<td><b>«v»</b></td>
</tr>»
</table>

et le programme suivant:

write_file f "test.html" "template [dq]x/y/z[dq]"
  f_section "row"
    f_value "date" (date 2001 6 20)
    f_value "label" "Un évènement"
    f_value "v" 12.3
  f_section "row"
    f_value "date" (date 2002 6 22)
    f_value "label" "Un autre évènement"
    f_value "v" 45.6