Faq/General/045/fr

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 :

Vous le voyez les balises <> distinguent le contenu du document. Une balise ouverte doit toujours être fermée :  sera terminé par  Pour ajouter des informations au document, on lui donne des attributs, toujours accompagnés d’une valeur :. L’attribut  a la valeur   (le document a 17 pages). On peut également placer des commentaires comme ceci : contient des informations au sujet du document (l’auteur, la date de la dernière sauvegarde). 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 !
 * le fichier  contient les styles utilisés dans le document
 * le fichier  contient le contenu principal du document (texte, tableaux, éléments graphiques…)
 * le fichier, en général spécifique à une application, contient certains paramètres tels que l’imprimante sélectionnée…
 * les fichiers  contiennent des informations supplémentaires sur les autres fichiers (comme le type MIME ou le chiffrement).

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 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. :)

XPath
C'est le langage déclaratif associé à XSLT et qui permet de définir un sous-ensemble d’emplacements à l’intérieur de l’arbre XML par le biais de chemins de localisation.

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 du format OpenDocument. 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 Calligra, GoogleDocs et Zoho.