6.5 Vue de rangée de tableau

Les vues de rangée de tableau permettent de mettre en forme un tableau. Cela est particulièrement utile pour des tableaux contenant beaucoup d'attributs, ou dont la structure est complexe. Il est ainsi possible de changer la disposition des éléments pour, par exemple, regrouper plusieurs attributs dans la même colonne.

Contrairement aux vues de document, ou aux vues d'attribut, les vues de rangée de tableau ne contiennent pas de code. Elles sont donc uniquement composées de :

  • un fichier de template, définissant la structure.

Par convention :

  • le fichier de template porte l'extension .xml,
  • son nom détermine le nom de la vue.

6.5.1 Syntaxe du template de rangée de tableau

Un template de vue de rangés de tableau est un fichier XML valide. Il doit respecter la DTD suivante :

<!ELEMENT table (table-head*,table-body*)>
 
<!ELEMENT table-head (cell)*>
<!ELEMENT table-body (cell)*>
 
<!ELEMENT cell ANY>
<!ATTLIST cell
        class CDATA #IMPLIED
        style CDATA #IMPLIED>
]>

Voici un exemple de fichier valide (ici, la DTD est déclarée inline, mais elle n'est pas obligatoire) :

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE table [
    <!ELEMENT table (table-head*,table-body*)>
 
    <!ELEMENT table-head (cell)*>
    <!ELEMENT table-body (cell)*>
 
    <!ELEMENT cell ANY>
    <!ATTLIST cell
            class CDATA #IMPLIED
            style CDATA #IMPLIED>
    ]>
<table>
    <table-head>
        <cell></cell>
    </table-head>
    <table-body>
        <cell></cell>
    </table-body>
</table>
  • Le bloc table-head définit le thead du tableau généré,
  • le bloc table-body définit une rangée tr du tbody du tableau généré.
  • Chaque balise cell définit une cellule et est donc retranscrite sous la forme d'une balise td.
    • les attributs style et class de la balise cell sont transmis tels-quels à la balise td résultante,
    • les autres attributs sont ignorés,
    • le contenu de la balise td résultante est exactement le contenu de la balise cell. ce dernier doit donc être du xhtml valide.
      Attention : puisque le document est interprété en XML pur, pour utiliser des entités HTML, il faut les déclarer dans la DTD (par exemple: <!ENTITY nbsp "&#160;">).

6.5.2 Vue de consultation de rangée de tableau

La représentation spécifique de tableaux est insérée en lieu et place de la représentation standard de tableau.

La représentation standard d'un tableau en consultation est :

<fieldset ><legend>Nom du tableau</legend>
    <table>
        <thead>
            <tr><th>Label 1</th><th>Label 2</th></tr>
        </thead>
        <tbody>
            <tr><td>Valeur 1.1</td><td>Valeur 2.1</td></tr>
            <tr><td>Valeur 1.2</td><td>Valeur 2.2</td></tr>
        </tbody>
    </table>
</fieldset>

Afin de spécifier la vue d'attribut à utiliser en consultation, il faut utiliser l'option rowviewzone.

6.5.2.1 Utilisation des valeurs du document

Lors de l'utilisation des vues de rangés de tableau, les clés suivantes sont instanciées :

  • L_ATTRID pour chaque attribut : le libellé (traduit) de l'attribut,
  • V_ATTRID pour chaque attribut : la valeur (au format HTML) de l'attribut.

Attention : les clés V_ATTRID respectent les visibilités : si la visibilité est H (caché) ou I (invisible) ou O (écriture seule), les clés V_ATTRID sont des chaînes vides. Les clés L_ATTRID ne sont pas affectées par la visibilité.

De plus, il est possible, comme dans tous les templates, d'utiliser :

  • les paramètres globaux,
  • les chaînes traduisibles (syntaxe [TEXT:…]).

Exemple :

Le template suivant :

<?xml version="1.0"?>
<table>
  <table-head>
    <cell class="special">[TEXT:Identification]</cell>
    <cell style="background-color:[COLOR_C3]">[L_MY_NUMBERS]</cell>
  </table-head>
  <table-body>
    <cell style="background-color:[COLOR_B6]">
      <b>[V_MY_NUMBERID]</b><br/>[V_MY_NUMBERLABEL]
    </cell>
    <cell style="background-color:[COLOR_C5];text-align:center">
      [V_MY_NUMBERS]
    </cell>
  </table-body >
</table>

produit pour l'exemple le code HTML suivant :

<fieldset ><legend>Nom du tableau</legend>
    <table>
        <thead>
            <tr><th class="special">Identification</th>
                <th style="background-color:#E5DD57">Mes nombres</th></tr>
        </thead>
        <tbody>
            <tr><td style="background-color:#8EC5F4"><b>1.1</b><br/>numéro 1</td>
                <td style="background-color:#EDE787;text-align:center">001</td></tr>
            <tr><td style="background-color:#8EC5F4"><b>1.2</b><br/>numéro 2</td>
                <td style="background-color:#EDE787;text-align:center">002</td></tr>
        </tbody>
    <table>
</fieldset>

Ce qui représente le tableau suivant :

Identification Mes nombres
1.1
numéro 1
001
1.2
numéro 2
002

6.5.3 Vue de modification de rangée de tableau

Afin de spécifier la vue d'attribut à utiliser en modification, il faut utiliser l'option roweditzone.

La représentation standard d'un tableau en modification est :

<fieldset ><legend>Nom du tableau</legend>
    <table>
        <thead>
            <tr><th class="tools"/>
                <th colspan="2">Label 1</th>
                <th colspan="2">Label 2</th></tr>
        </thead>
        <tbody>
            <tr><td>tools inputs</td>
                <td>Champ n°1.1</td><td>Boutons Champ n°1.1</td>
                <td>Champ n°1.2</td><td>Boutons Champ n°1.2</td>
            <tr><td>tools inputs</td>
                <td>Champ n°2.1</td><td>Boutons Champ n°2.1</td>
                <td>Champ n°2.2</td><td>Boutons Champ n°2.2</td></tr>
        </tbody>
        <tfoot>
            … autres champs cachés …
        </tfoot>
    </table>
</fieldset>
 

6.5.3.1 Utilisation des champs de saisie du document

Lors de l'utilisation des vues de rangés de tableau, les clés suivantes sont instanciées :

  • L_ATTRID pour chaque attribut : le libellé (traduit) de l'attribut,
  • V_ATTRID pour chaque attribut : le champs de saisie correspondant à l'attribut,

Attention : les clés V_ATTRID respectent les visibilités : si la visibilité est H (caché) ou R (lecture seule) les clefs sont des champs cachés <input type="hidden" />. Si la visibilité est I (invisible), les clés V_ATTRID sont des chaînes vides. Les clés L_ATTRID ne sont pas affectées par la visibilité.

De plus, il est possible, comme dans tous les templates, d'utiliser :

  • les paramètres globaux,
  • les chaînes traduisibles (syntaxe [TEXT:…]).

Le template suivant :

<?xml version="1.0"?>    
<table>
    <table-head>
        <cell class="special">[TEXT:Identification]</cell>
        <cell style="background-color:[COLOR_C3]">[L_MY_NUMBERS]</cell>
    </table-head>
    <table-body>
        <cell style="background-color:[COLOR_B6]"> <b>[V_MY_ROMANNUMBER]</b>
            <br/>    
            [V_MY_NUMBERLABEL]
        </cell>
        <cell>
            <span>style="text-align:center">[V_MY_NUMBERS]</span>
        </cell>
    </table-body >
</table>

produit pour l'exemple le code HTML suivant :

À la différence d'un tableau standard, les champs de saisie d'attribut ne sont plus répartis sur deux cellules mais sur une seule cellule (plus de colspan) dans l'entête de tableau.

<fieldset ><legend>Nom du tableau</legend>
    <table>
        <thead>
            <tr><th class="tools"/>
                <th class="special">Identification</th>
                <th style="background-color:#E5DD57">
                   Mes nombres</th></tr>
        </thead>
        <tbody>
            <tr><td>Tool inputs</td>
                <td style="background-color:#8EC5F4">
                    <b><input name="_my_romannumber[]" value="1.1"/> </b><br/>
                    <input name="_my_numberlabel[]" value="numéro 1"/>
                    <input type="button" value="..." /><input type="button" value="x" />
                </td>
                <td><span style="text-align:center">
                  <input name="_my_numbers[]" value="1"/>
                  <input type="button" value="..." /><input type="button" value="x" />
                </span></td></tr>
            <tr>...Deuxième rangée...</tr>
 
        </tbody>
        <tfoot>
            ... autres champs cachés ...
        </tfoot>
    </table>
</fieldset>

Cet exemple produit la représentation suivante :

Nom du tableau
Identification Mes nombres


×