Gérer une fichothèque avec le logiciel BDF

Règles à suivre pour réussir une conversion d’un gabarit HTML vers un gabarit ODT

Par rapport à un gabarit HTML, un gabarit ODT a l’intérêt de fournir un document facilement modifiable et transmissible dans d’autres formats via LibreOffice (PDF, Docx, etc.). Le développement de tel gabarit peut être particulièrement intéressant dans certains cas. Cependant, le développement d’un gabarit HTML est plus simple que le développement d’un gabarit ODT pour trois raisons :

  • les éléments HTML sont plus courts et plus connus que les éléments ODT (comparer l’élément <p> à l’élément <text:p>),

  • les tests en cours de développement sont plus rapides (affichage directement dans le navigateur plutôt que téléchargement dans LibreOffice),

  • le code HTML est plus souple que ce soit dans l’agencement des balises que pour la mise en forme avec le CSS.

La commande EXP-38 Conversion en gabarit ODT permet de profiter des deux premiers points en donnant la possibilité de développer le gabarit en HTML pour le convertir ensuite en ODT, quitte à faire quelques ajustements. Cependant, le troisième point, la souplesse du code HTML, peut être un obstacle car le script de conversion ne peut pas gérer tous les cas de figure. Cette fiche liste les différents points à prendre en compte

Éléments traités et éléments ignorés

Le script de conversion prend en compte les éléments suivants : <p>, <h1> à <h6>, <ul>, <ol>, <li>, <table>, <tr>, <td>, <th>, <col>, <colgroup>, <em>, <strong> et <span> (à certaines conditions).

Les autres éléments (notamment <div>) ne sont pas convertis mais leur contenu est traité. <style>, <script>, <link> sont complètement ignorés, contenu compris ; leur présence ne pose donc pas de risque de « pollution » par des instructions spécifiques au HTML.

Importance de l’élément <p>

Dans le format XML d’OpenDocument, tout texte ou presque est compris dans un élément <text:p>, l’usage systématique de <p> est donc à privilégier (les <h1> à <h6> sont bien sûr à privilégier par rapport à <p> si on veut des niveaux de titre).

Le cas des éléments <li>, <td> et <th> est particulier. En HTML, ils peuvent contenir un mélange de textes et de balises de type blocs. Leurs équivalent OpenDocument ne peuvent pas avoir de texte directement. Le script traite trois possibilités différentes :

  • par défaut, le contenu de ces éléments est encapsulé dans un élément <text:p>

  • si l’élément contient des balises <p> ou <ul>, aucun élément <text:p> n’est introduit et tout texte contenu directement par l’élement est ignoré

  • soit l’élément possède l’attribut data-od-mode à la valeur no-p et, dans ce cas, comme le cas précédent, aucun élément <text:p> n’est introduit (ce cas est utile quand dans la feuille de style, la balise de l’élément contient des instructions XSLT dont on sait qu’elles produiront différents paragraphes).

Obligation des éléments <col> ou <colgroup>

Dans le format XML d’OpenDocument, la déclaration du nombre de colonnes d’un tableau est obligatoire (sinon on se retrouve avec un tableau d’une seule colonne). C’est pourquoi il faudra bien préciser en HTML les colonnes avec <col> ou <colgroup> si on introduit une table avec <table>. À noter que l’attribut span est bien converti et peut donc être utilisé dans <col> ou <colgroup>.

Pas d’imbrication d’éléments en ligne

HTML permet d’imbriquer les uns dans les autres des éléments de type <em>, <strong> ou <span> (ce qui peut conduire d’ailleurs à une vraie « soupe des balises »). Ce n’est pas possible avec OpenDocument : un élément <text:p> peut contenir des éléments <text:span> sans autre imbrication. C’est pourquoi seules les balises <em>, <strong> ou <span> se trouvant directement dans un élément de type bloc (<p> ou autre).

Une balise <span> n’est traitée que si elle possède l’attribut data-od-style indiquant le style de l’élément <text:span> équivalent.

Pas de reconnaissance des liens

Dans l’état actuel du script, les balises <a> sont ignorées.

Styles par défaut

Suivant leurs situations, les éléments se voient attribuer des styles correspondant à ceux des sections de texte (configurés dans css/_ficheblockelements_odt). Pour une balise <p>, on peut indiquer un style particulier avec l’attribut data-od-style.

Conversion des chemins

Le script de conversion ne touche à aucune instruction XSLT à l’exception des instruction <xsl:include> et <xsl:import> : dans ces cas, la première occurrence de la chaine /html/ est remplacée par /odt/ dans la valeur de l’attribut href. Ce comportement permet de faire appel à la version Odt d’une bibliothèque Html.