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 à [email protected] pour vous désinscrire
Les archives de la liste sont disponibles à 
https://listarchives.libreoffice.org/fr/discuss/
Privacy Policy: https://www.documentfoundation.org/privacy

Répondre à