Faq/General/045/fr

From The Document Foundation Wiki
< Faq‎ | General‎ | 045
Jump to: navigation, search

LibreOffice et le XML

Vous avez sans-doute souvent entendu parler du XML, entendu dire que le format de fichier de LibreOffice était du XML, mais qu'en est-il exactement et surtout qu'est-ce que cela signifie, qu'est-ce en fin de compte que le XML ?

Qu'est-ce que le XML ?

Cet acronyme est l'abréviation de eXtensible Markup Language. En le traduisant en français, cela voudrait dire "langage à balises extensibles". Cela ne vous en dit pas beaucoup plus :)

Le XML fait partie de la classe des métalangages, c'est en fait un sous-ensemble du SGML. Bon, alors qu'est-ce que le SGML (Standard Generalized Markup Language) ? C'est un langage qui permet de créer des documents de façon structurée et modulaire. Concrètement cela veut dire que vous pouvez créer un document à partir de données aussi hétéroclites que du son, des données provenant d'une base, ou du texte et des images. Le SGML a donc été défini pour une large gamme d'applications et doit être maintenu sur un très long terme. Ce langage étant assez complet et complexe, le XML a été créé pour simplifier le SGML.

Ce qui peut prêter à confusion au premier abord, c'est que le HTML ressemble beaucoup au XML. C'est un langage avec des balises, qui s'ouvrent et qui se ferment. Grande différence pourtant, le HTML a été défini avec des balises qui décrivent la présentation, alors que les balises du XML, elles, traitent du contenu. Mais oui, le HTML est aussi un sous ensemble du SGML, mais uniquement pour traiter des données sur le Web.

Si l'on se résume, le XML est donc un moyen (et ni un langage de programmation, ni un nouveau HTML) clair de structurer, décrire et échanger des données. On sépare le contenu de la forme pour permettre cet échange. Le contenu pourra alors être réutilisé sous d'autres formes ou d'autres supports. Les données peuvent être de toutes sortes : formules chimiques, données financières, données musicales, texte... Vous pouvez retrouver l'actualité du XML en France sur http://xmlfr.org

Un exemple du contenu xml d'un document LibO :

  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE office:document-meta PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "office.dtd">
  <office:meta>
        <meta:generator>LibreOffice/3.3$Win32 LibreOffice_project/330m18$Build-4</meta:generator>
        <meta:initial-creator>Sophie Gautier</meta:initial-creator>
        <meta:creation-date>2011-01-12T19:07:36</meta:creation-date>
        <meta:document-statistic meta:table-count="0" meta:image-count="31" meta:object-count="0" meta:page-count="17" meta:paragraph-count="213"
          meta:word-count="2647" meta:character-count="16353"/>
  </office:meta>

Vous le voyez les balises <> distinguent le contenu du document. Une balise ouverte doit toujours être fermée :

<office:meta> 

sera terminé par

</office:meta>

Pour ajouter des informations au document, on lui donne des attributs, toujours accompagnés d'une valeur : meta:page-count="17". L'attribut meta:page-count a la valeur "17" (le document a 17 pages). On peut également placer des commentaires comme ceci :

Pourquoi choisir le XML ?

Si l'on regarde le fragment de code XML ci-dessus, il y a quelques choses qui surprennent :

  • le XML est lisible par vous même, mais également par la machine. C'est un de ses grands avantages.
  • Il est unicode (unicode : on définit un nombre unique pour chaque caractère, quels que soient la plateforme, le langage, le programme). Cela veut dire qu'il peut être stocké dans différents encodages. Quelle différence ? Vous savez sans doute que les documents étaient (sont encore) encodées en ASCII, mais celui-ci ne se rapporte qu'à un seul alphabet et un seul système d'écriture. Le fragment de code indique un encodage UTF-8 qui est supporté par bon nombre d'alphabets.
  • Le XML est orienté objet : au lieu de décomposer les données dans des tables normalisées liées par relations, il décrit des objets (concrets ou abstraits) en modélisant leurs propriétés telles qu'elles sont, ce qui rend les documents XML plus intuitifs à comprendre.
  • Enfin, le XML distingue le contenu de la forme, la mise en page des données étant assurée par des langages tiers comme CSS, XSL...
  • Le XML génère un faible coût au niveau des composants logiciels, d'où sa bonne intégration dans l'industrie informatique.

Le XML de LibO

Et comment, à quoi voit-on que LibO est du XML ? LibO a un format de fichier .xml natif compressé. Cela signifie que les fichiers qui composent votre document LibO sont encapsulés dans une archive. Un exemple : prenez votre dézipeur favori (voir Quel est le format de LibreOffice ?) et ouvrez n'importe quel fichier LibO. Vous verrez une collection de fichiers différents dont certains portent l'extension .xml.

Quels modules de LibO utilisent le XML ?

Tous les modules de LibO utilisent le XML comme format de fichier natif. Le module Math utilise une structure de package un peu différente, mais du xml à l'intérieur du package : MathML qui est un standard XML pour les formules. Également, certains fichiers de configuration utilisent le XML. Vous retrouverez toujours ces fichiers :

  • le fichier meta.xml contient des informations au sujet du document (l'auteur, la date de la dernière sauvegarde).
  • le fichier styles.xml contient les styles utilisés dans le document
  • le fichier content.xml contient le contenu principal du document (texte, tableaux, éléments graphiques...)
  • le fichier settings.xml, en général spécifique à une application, contient certains paramètres tels que l'imprimante sélectionnée...
  • les fichiers META-INF/manifest.xml contiennent des informations supplémentaires sur les autres fichiers (comme le type MIME ou le cryptage).

Les images sont sauvegardées dans le format natif à l'intérieur du zip. Vous comprenez maintenant pourquoi les fichiers LibO occupent si peu de place sur votre disque !

Pour en savoir plus sur les formats de fichiers LibreOffice, consultez le site http://xml.openoffice.org (en anglais).

Notez qu'un document XML ne peut être affiché tel quel, il lui faut un langage de transformation (XSLT) et un langage de formatage des objets (XSL-FO) pour pouvoir afficher toutes les informations correctement (exemple : si votre document est constitué des diverses parties organisées distinctement ou encore s'il contient un tableau avec des formatages...)

DTD, Schéma XML, XSLT, ..., qu'est-ce ?

DTD Document Type Définition

La DTD va spécifier quels éléments et attributs vont être utilisés dans le document XML et va en décrire la structure et le contenu. La DTD peut être interne au document (elle inclut les définitions au sein même du document) ou externe (elle est située dans un fichier local ou appelée par URL). La norme XML ne rend pas obligatoire la DTD, ainsi, on parle de document XML valide s'il comporte une DTD ou de document XML bien formé s'il n'en comporte pas (mais qu'il respecte le standard XML). Exemple de contenu de DTD LibO :

              List the initial writers in this form (with initial="true"). Initial Writers is a term from the PDL (License).
              If one of these authors assigned copyright to somebody else, e.g. the company they are working for, use the attribute copyright="..."
              and name the copyright holder.
      -->
      <!ELEMENT authors ( author+ ) >
      <!ELEMENT author (#PCDATA)>
      <!ATTLIST author
                  id      ID    #REQUIRED
                  initial CDATA #IMPLIED
                  email   CDATA #REQUIRED>
      <!--

Schéma XML

Un schéma permet également de définir la structure d'un document XML, il est cependant plus souple qu'une DTD pour définir les types d'éléments. Il reprend les acquis des DTD pour définir les modèles. Les schémas font l'objet d'une spécification du W3C.

XSLT : eXtensible Style Language Transformation

C'est un langage de programmation destiné à transformer un document XML en d'autres formes, par exemple en RTF, en HTML ou en PDF, etc. Ce langage est déclaratif et non procédural (pas d'algorithme), ce qui le rend plus facile d'accès pour les non développeurs. Lui même écrit en XML, il peut être réinterprété. En fait, XSLT permet de transformer l'arborescence du XML en règles de modèles décrivant une feuille de style. On le compare souvent aux CSS car comme les CSS il produit des règles, l'ordre d'apparition de ces règles n'a pas d'importance dans le document, il comporte également des priorités lorsque plusieurs règles peuvent s'appliquer. La différence c'est que si une feuille CSS est vide, cela n'aura aucune incidence sur le document html généré, elle sera simplement ignorée n'étant qu'un habillage, alors que la feuille XSLT générera un document vide (en réalité, ce n'est pas tout à fait vrai car la spécification a défini des règles internes toujours présentes, donc le document n'est jamais vraiment vide :). Un très bon site, plein de ressources et de filtres XSLT à utiliser avec LibO : http://www.maxopeninfo.com/

XPath

C'est le langage déclaratif associé à XSLT et qui permet de définir des chemins de localisation à l'intérieur de l'abre XML.

XSL-FO : eXtensible Style Language for Formating Object

Langage permettant de définir les objets de présentation générique (listes, tableaux...) utilisé assez souvent pour des sorties PDF. Il intervient après une transformation XSLT et permet de faire une interprétation visuelle des objets traités.

OASIS

Oasis (Organisation for the Advancement of Structured Information Standard) est un consortium global qui dirige le développement, la convergence et l'adoption de standards pour l'e-business. Il définit donc le standard XML. Cette définition se fait en s'appuyant sur les formats de fichiers LibreOffice, ceux-ci étant ouverts et conforme avec une DTD publiée. Plus d'informations ici : http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office

Le format de fichiers LibreOffice est le même que celui d'OpenOffice.org et est également utilisé par KOffice, Calligra, Lotus Symphony GoogleDocs, Zoho