Commentaire sur la fiche : Éléments de base du format XML OpenDocument pour l’écriture de gabarits ODT
Si la réponse à cette question ne vous parait pas claire ou si elle vous semble obsolète, n’hésitez pas à nous en faire part.
Et nous sommes preneurs également de toute correction de faute d’orthographe ou de grammaire...
Rappel du texte de la fiche :
Découvrir le format XML
La présentation complète du format OpenDocument est disponible à l’adresse suivante : docs.oasis-open.org/office/OpenDocument/. Ce n’est évidemment pas la manière la plus simple pour découvrir le format. Le mieux est d’ouvrir LibreOffice, d’écrire des petits textes contenant les éléments que l’on veut comprendre (par exemple, du texte souligné si on veut voir comment s’est exprimé dans les styles) et d’enregistrer au format Document texte ODF XML plat (.fodt) dans LibreOffice.
Avec ce format, LibreOffice va enregistrer le fichier comme un unique fichier texte, ce qui fait gagner une étape par rapport à l’enregistrement au format standard Texte ODF (.odt) car ce dernier étant en fait une fichier au format zip, il faut le décompresser pour accéder au fichier.
L’autre grand avantage du XML plat, c’est que le XML est indenté avec passage à la ligne, il est donc plus lisible. La lecture de son premier fichier XML fait un peu peur car cela commence par beaucoup de déclarations, notamment celles des styles. Le contenu de texte se trouve à la fin.
En fait, si on reste aux éléments de base, le format OpenDocument se révèle plus simple que du HTML. Le but est de produire un document linéaire, il n’y a pas de <div> et de hiérarchie d’éléments imbriqués.
Le format OpenDocument est seulement moins lisible du fait de l’utilisation d’espace de nom : <text:p> est incontestablement plus verbeux que <p>
Une autre piste pour partir à la découverte du format OpenDocument est d’utiliser la fonction de conversion d’un gabarit HTML en gabarit ODT, cela permet de voir les équivalences. Cette piste est décrite plus précisément dans cette fiche Règles à suivre pour réussir une conversion d’un gabarit HTML vers un gabarit ODT.
Éléments de base pour du texte
<text:p text:style-name="">: l’élément de base, présent partout, qui indique un paragraphe de texte ; équivalent à la balise HTML<p>, son attribut essentiel est@text:style-namequi précise le style du paragraphe<text:span text:style-name="">: permet d’indiquer un style pour une suite de caractères à l’intérieur d’un paragraphe (et donc obligatoirement compris dans une élément<text:p>) ; équivalent à la balise HTML<span>, sa grande différence, c’est qu’il n’autorise pas l’imbrication de<span>: si on a des caractères en gras et qu’on veut mettre un des mots en italique, il faut arrêter le<text:span>en cours et en commencer un nouveau pour le mot en gras et italique<text:s text:c="{nombre}"/>: indique une suite d’espaces ; comme le format OpenDocument est du XML des espaces blancs à la suite comptent pour un seul ; cet élement permet d’indiquer la présence de plusieurs espaces successives ; l’attribut@text:cest le nombre d’espaces qui se suivent<text:tab/>: indique une tabulation ; si plusieurs tabulations se suivent, il faut autant d’éléments<text:tab/><text:line-break/>: indique un passage à la ligne au sein d’un paragraphe
Construire une table
Comme montré ci-dessous, la construction d’une table au format OpenDocument est très proche de celle au format HTML. Pour éviter des déboires, il faut avoir en tête les deux éléments suivants :
1) le nombre de colonnes du tableau doit être explicitement indiqué par un nombre correspondant d’éléments
<table:table-column/>2) une cellule (
<table:table-cell>) ne comprend pas de texte directement, celui-ci doit être compris dans des éléments<text:p>
Les éléments de base pour la construction d’une table sont les suivants :
<table:table table:style-name="" table:name="">: élément racine de la table ; équivalent à la balise HTML<table>; l’attribut@table:nameest obligatoire mais cela peut être un nom arbitraire.<table:table-column/>: positionné juste après l’ouverture de la table, il faut un par colonne de la table (on peut aussi utiliser l’attribut@table:number-columns-repeatedsur un élément pour indiquer plusieurs colonnes) ; équivalent à la balise HTML<col><table:table-row table:style-name="">: début d’une nouvelle ligne ; équivalent à la balise HTML<tr><table:table-cell table:style-name="" office:value-type="string">: nouvelle cellule ; équivalent à la balise HTML<td>; l’attribut@office:value-typeindique le type d’information de la cellule, on pourra se contenter d’indiquer que c’est une chaine (valeurstring).<table:covered-table-cell>: indique l’emplacement d’une cellule « recouverte » : une cellule<table:table-cell>peut en recouvrir d’autres avec les attributs@table:number-columns-spannedet@table:number-rows-spannedmais dans ce cas, les cellules recouvertes doivent être clairement indiquées par<table:covered-table-cell>(contrairement au HTML)
L’exemple suivant montre le code d’un tableau de trois colonnes et trois lignes avec deux exemples de cellules fusionnées. Les styles utilisés sont les styles par défaut des tableaux dans les sections de texte tel que défini dans le fichier de ressource css/_ficheblockelements_odt.css
<table:table table:name="FbeTable" table:style-name="NomArbitraire">
<table:table-column table:number-columns-repeated="3"/>
<table:table-row>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 1.1</text:p>
</table:table-cell>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 1.2</text:p>
</table:table-cell>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 1.3</text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="FbeTableCell" table:number-columns-spanned="2" office:value-type="string">
<text:p>Cellule 2.1 sur deux colonnes</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 2.3</text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 3.1</text:p>
</table:table-cell>
<table:table-cell table:style-name="FbeTableCell" table:number-rows-spanned="2" office:value-type="string">
<text:p>Cellule 3.2 sur deux lignes</text:p>
</table:table-cell>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 3.3</text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 4.1</text:p>
</table:table-cell>
<table:covered-table-cell/>
<table:table-cell table:style-name="FbeTableCell" office:value-type="string">
<text:p>Cellule 4.3</text:p>
</table:table-cell>
</table:table-row>
</table:table>