Date: prev next · Thread: first prev next last
2026 Archives by date, by thread · List index


Bonjour,

Ce message vise à documenter **de manière strictement technique et reproductible** la génération 
d’un document ODT *from scratch* à partir de données textuelles simples, **sans utiliser 
LibreOffice Writer**, **sans éditeur XML dédié**, et à montrer ce qui se produit ensuite lorsque le 
moteur de mise en forme intervient.

L’objectif n’est ni polémique ni idéologique :
il s’agit de **rendre observable** la différence entre *document source* et *document rendu*, et 
d’illustrer concrètement la dérive structurelle du XML ODF lorsqu’il est utilisé comme format 
source.

---

## 1. Point de départ : texte brut correctement rédigé

Fichier `source.txt` :

```
Titre du document

Sous-titre

Premier paragraphe de texte.
Deuxième phrase du même paragraphe.

Deuxième paragraphe.

Liste :
- élément A
- élément B
```

Hypothèse volontairement simple :

* texte propre,
* structure humaine évidente,
* aucune information de style.

---

## 2. Construction manuelle d’un ODT minimal (sans Writer)

Un document ODT est un **conteneur ZIP** contenant du XML.
Pour produire un ODT valide, **trois fichiers suffisent**.

### Arborescence minimale

```
demo.odt
├── mimetype
├── content.xml
└── META-INF/
    └── manifest.xml
```

### 2.1 mimetype (fichier texte brut)

```
application/vnd.oasis.opendocument.text
```

Contraintes importantes :

* doit être le **premier fichier** de l’archive,
* doit être **non compressé**.

---

### 2.2 content.xml (structure saine, volontairement minimale)

```xml
<?xml version="1.0" encoding="UTF-8"?>
<office:document-content
 xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
 xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
 office:version="1.2">

 <office:body>
  <office:text>

   <text:h text:outline-level="1">Titre du document</text:h>
   <text:h text:outline-level="2">Sous-titre</text:h>

   <text:p>Premier paragraphe de texte. Deuxième phrase du même paragraphe.</text:p>
   <text:p>Deuxième paragraphe.</text:p>

   <text:p>Liste :</text:p>
   <text:list>
    <text:list-item><text:p>élément A</text:p></text:list-item>
    <text:list-item><text:p>élément B</text:p></text:list-item>
   </text:list>

  </office:text>
 </office:body>
</office:document-content>
```

Remarques :

* aucune section `<office:automatic-styles>`,
* aucun style explicite,
* aucune information de mise en page,
* structure lisible à l’œil humain.

---

### 2.3 META-INF/manifest.xml

```xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest
 xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
 manifest:version="1.2">

 <manifest:file-entry
  manifest:full-path="/"
  manifest:media-type="application/vnd.oasis.opendocument.text"/>

 <manifest:file-entry
  manifest:full-path="content.xml"
  manifest:media-type="text/xml"/>

</manifest:manifest>
```

---

### 2.4 Création de l’archive ODT

```bash
zip -0X demo.odt mimetype
zip -r9 demo.odt content.xml META-INF
zip -T demo.odt
```

Résultat :

* le fichier `demo.odt` s’ouvre dans LibreOffice Writer,
* le document est valide,
* le XML est minimal, stable, lisible.

---

## 3. Intervention du moteur de mise en forme

Étape volontairement simple :

* ouvrir `demo.odt` dans Writer,
* **ne rien modifier**,
* enregistrer,
* fermer.

Puis réextraire `content.xml`.

```bash
unzip demo.odt content.xml
wc -l content.xml
grep 'style:name' content.xml | wc -l
```

Constats observables :

* apparition automatique de `<office:automatic-styles>`,
* génération de styles `P1`, `P2`, `T1`, etc.,
* héritages implicites,
* augmentation significative du volume XML,
* aucune correspondance directe avec l’intention initiale du texte.

Conclusion intermédiaire :

le XML produit après passage par le moteur n’est plus une représentation directe du texte, mais 
une **trace d’exécution du rendu**.

---

## 4. Cas particulier : duplication des images identiques

Cas fréquent :

* insertion d’un même logo ou cartouche à plusieurs endroits,
* copier/coller dans Writer.

Après sauvegarde :

```bash
unzip demo.odt | grep Pictures/
```

Résultat typique :

```
Pictures/10000000000001F4000000A8326EAA3F.png
Pictures/10000000000001F4000000A8326EAA3F_1.png
Pictures/10000000000001F4000000A8326EAA3F_2.png
```

Observations :

* images identiques dupliquées physiquement,
* aucun mécanisme de mutualisation,
* gonflement inutile de l’archive,
* maintenance impossible à grande échelle.

---

## 5. Conclusion technique

Cette démonstration montre que :

1. Il est possible de générer un ODT valide **sans éditeur**, à partir de texte brut.
2. Tant que le document reste à l’état minimal, le XML est :

   * lisible,
   * stable,
   * structurellement sain.
3. Le passage par le moteur de mise en forme :

   * introduit des styles automatiques,
   * mélange structure et rendu,
   * transforme le XML en format d’exécution.
4. Le style et le layout interfèrent alors directement avec la source.

Conclusion générale :

**Le problème n’est pas l’interface utilisateur,
mais le fait que le style modifie aujourd’hui la source du document.**

Ce message ne propose pas de solution logicielle,
il documente un état de fait observable et reproductible.

Cordialement,

Bernard Schoenacker
Rédaction technique / analyse documentaire

-- 
Envoyez un mail à discuss+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/discuss/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.