Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Julien Chable

He blogs, you blog, I blog ...

Archives

[Open XML] Première plongée en eaux troubles

La sortie de Office 2007 s'est accompagné de l'arrivée d'un nouveau format de document : Office Open XML. Je ne reviendrais que rapidement sur les avantages et les inconvénients pour les utilisateurs ou les développeurs dans ce post. Je vais juste tenter d'apporter quelques informations sur le format de fichier lui-même (certainement entrecoupé d'opinions personnelles dont je suis le seul garant) après une introduction et quelques rappels. Ce post sera suivi de plusieurs autres, chacun exposant un aspect ou un ensemble d'informations ciblées sur le format Open XML, et orientés pour les développeurs.

Du concurrent ...

OpenDocument est le format de document bureautique standardisé par L'OASIS et utilisé par OpenOffice majoritairement, ainsi que par quelques autres applications bureautique (Word Perfect par exemple). Celui-ci est issu à l'origine du format de fichier d'OpenOffice 1.x et partiellement revu par le consortium de l'OASIS.

Evidemment, de la même manière que le format ODF (OpenDocument Format) est calqué sur les fonctionnalités de OpenOffice, le format Open XML est quant à lui calqué sur les fonctionnalités de Office 2007. Même si les fonctionnalités de base des deux outils sont très similaires, les formats sont quant à eux très différents ; tellement d'ailleurs, que l'équipe en charge du développement du convertisseur ODF vers Open XML a rencontré quelques problèmes de traduction (blog : http://odf-converter.sourceforge.net/blog/).

Open XML ... le XML ouvert ?

Lors de certaines conférences ou certaines discussions sur le web, j'ai fait le constat que les personnes ne comprenait pas ce qu'était Open XML aux premiers abords. La question suivante revenait souvent : Open XML, c'est comme un nouveau standard XML, un peu comme un XML 2.0 ???

Qu'on le comprenne bien, le nom complet de Open XML est Office Open XML ! Open XML est bien un standard ECMA qui utilise le XML comme langage de description des données tout au plus, mais ce dernier n'est en rien associé au standard XML, Open XML est un format de document bureautique !

Le comité de standardisation (Microsoft à l'origine ?) a t-il voulu éviter de mettre le terme 'Open' devant 'Office' de peur de trop rappeler 'Open Office' ? La présence de l'acronyme 'XML' est-il présent pour bien insister auprès des développeurs de son utilisation ?

Au moins que l'on soit clair : de toute évidence, le choix de ce nom n'est pas très judicieux ...

OpenXML, une piqure de rappel

Pour rappeler quelques indispensables sur ce nouveau format de document, voici les quelques points les plus important :

  • Format standardisé par l'ECMA sous le nom de Office Open XML (http://www.ecma-international.org/publications/standards/Ecma-376.htm),
  • Des licences d'utilisation royalty-free permettant un accès sans limite à la technologies (existence d'un engagement à ne pas poursuivre juridiquement les utilisateurs -> Convenent Not to Sue + Analyse cabinet Baker)
  • Format basé sur le XML, permet de s'adapter aux futures évolutions et solutions interopérables,
  • Compression standard ZIP afin de réduire la taille des documents,
  • Les données sont segmentées afin de permettre une meilleure robustesse contre la corruption des données, un accès par programmation et une récupération des données améliorés,
  • Un support complet de l'accessibilité (un sous comité de l'OASIS travaille actuellement dessus pour l'ODF),
  • Le format décrit 100% des fonctionnalités de Office,
  • OpenXML est compatible avec les anciens formats de fichiers dans la limite de 2000-2007, des outils de conversions massives sont à disposition.

Avantages pour les utilisateurs :

  • Diminution de la taille : compression accrue du document (pouvant atteindre -70% par rapport à un document Word 2003 binaire)
  • Robuste : les données sont segmentées, la corruption d'une partie n'influe pas sur les autres, les parties sont pour la plupart en XML par conséquent la corruption d'une partie de votre contenu n'alternera pas le reste du document.
  • Protection contre les macros : tous les documents Open XML sont par défaut exempt de toute macro. L'activation des macros se fait en fonction de l'extension du fichier, par défaut 'docx' (sans macro), avec macro 'docm' ('m' -> macro).

Le rôle du XML

On ne pourrait pas parler du format Open XML sans parler du rôle de la technologie XML à l'intérieur de celui-ci. L'utilisation de cette technologie (XML, XML Schema, ...) possède deux axes principaux - en plus du rôle évident du formatage des données -, l'un est joué par les schémas de référence, et l'autre par les schémas personnalisés.

Tout d'abord, les schémas de référence permettent aux applications de générer et de restituer les documents de façon unique, de manière à ce que chacun puisse lire des documents générés par d'autres applications. Iils définissent également la manière dont les applications doivent formater le contenu du document à l'écran, tel que mettre tel ou tel mot en gras ou en italique, ou comment rendre un tableau ou prendre en compte les marges, ... Finalement, les schémas de référence servent à garantir l'interopérabilité des formats de fichier entre plateforme et application, et aussi de permettre un meilleur archivage et traitement des documents de l'entreprise.

Exemple d'un paragraphe contenant les mots 'Open XML', respectivement en gras et italique :

<w:p>
   <w:r>
      <w:rPr><w:b/></w:rPr>
      <w:t>Open</w:t>
   </w:r>
   <w:r>
      <w:rPr><w:i/></w:rPr>
      <w:t>XML</w:t>
   </w:r>
</w:p>

En second lieu, les schémas personnalisés permettent d'étendre la richesse et la souplesse de vos documents. Ce type de schéma est orienté données afin de permettre le stockage des informations métiers et l'intégration des données/informations des différents systèmes du SI directement dans le contenu de vos documents.

Exemple d'un document XML métier dont les données pourraient être injectées dans le contenu d'un document Open XML (nous verrons ce concept en détail plus tard) :

<Report>
   <Date>26/12/2006</Date>
   <Subject>Christmas Eve</Subject>
   <Summary>Happy Christmas</Summary>
</Report>

Ces deux axes déterminent la façon dont vous souhaitez orienter vos données dans vos documents : soit orienté affichage, soit orienté métier.

Outre le formatage des documents, XML permet enfin aux formats de bureatique Office d'être entièrement interopérable, et de ne pas être uniquement lié à une seule plateforme et à un seul fournisseur. Ce format multiplateforme et multiapplication permet donc à certains problèmes d'intégration de trouver quelques solutions de ce côté.

Ainsi avec XML au coeur de ses spécifications, ce format amène enfin à une transition d'une approche fermée (lock-in format/vendeur) vers un modèle ouvert et intéropérable.

On plonge Capitaine ... ou comment est composé un fichier OpenXML

Juste pour le rappel, une description un peu plus détaillée du format se trouvant à cette adresse, voici quelques points indispensables pour les développeurs.

Une document OpenXML est basiquement un fichier ZIP, dans lequel chaque élément est nommé une 'partie'. Par exemple, le contenu du document, la définition des styles ou encore les propriétés du document, sont des parties (indifféremment que ce soit des contenus XML ou du binaire, tel que des images). Chaque partie possède un type, le typage MIME ayant été utilisé pour cela ; ces informations sont stockées dans un unique fichier [Content_Types].xml situé à la racine du document.

Afin de faire le lien entre les parties, par exemple pour lier une image au contenu d'un document afin que l'application sache quelle image afficher, Open XML utilise le principes des relations. Chaque relation possède un type de relation afin de connaître la nature de la partie que la relation pointe.

Cette struture est regroupée dans une convention nommée l'Open Packaging Convention (cf Spécifications) et est incluse dans les spécifications Open XML. L'OPC permet de définir précisément la struture sous-jacente de TOUT document Open XML, voire même de vos prochains formats de fichiers ... car vous l'aurez compris, cette structure n'est en rien rattaché à Open XML, elle est complètement indépendante, et permet de stocker n'importe quel type de données.

Les spécifications et les schémas de référence

L'utilisation du XML dans le format Open XML nécessite l'emploie de nombreux schémas (4 pour l'OPC et 87 pour le DML, PML, SML, VML, WML et communs) répartis selon le schéma suivant  :

L'ensemble des schémas est disponibles sur la page des spécifications, et plus précisément à cette adresse. Les schémas sont disponibles sous 2 formes, en W3C XML Schema et OASIS Relax NG ; cependant, bien que les schémas XML Schema sont présents à titre normatif, ceux en relaxNG ne le sont seulement qu'à titre informatif.

Les spécifications sont découpées en 5 parties :

  • Les fondamentaux (173 pages)
  • Les spécifications Open Packaging Convention (129 pages)
  • Le primer (472 pages)
  • Référence des ML (5219 pages)
  • Compatibilité et Extensibilité (43 pages)

La lecture des fondamentaux - partie 1 - et du primer - partie 3 - sont suffisants pour posséder de sérieuses connaissances sur le format. La partie 4 de plus de 5000 pages comportent beaucoup d'exemples ainsi que TOUTE la description des différents schémas, autant dire que la lecture dans son intégralité de ce document est une perte de temps, à moins que vous ne souhaitiez créer une nouvelle suite bureautique !

Conclusion

Cette première partie est une petite introduction au format avant de plonger dans des approches techniques et technologiques. Ce post représente le début d'une série de posts sur le format Open XML orienté pour les développeurs.

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: samedi 30 décembre 2006 14:38 par neodante
Classé sous :

Commentaires

badrbadr a dit :

belle introduction

good job

# janvier 1, 2007 23:13
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Créer un périphérique Windows To Go 10 ! par Blog de Jérémy Jeanson le 11-21-2014, 04:54

- RDV à Genève le 12 décembre pour l’évènement “SharePoint–Office 365 : des pratiques pour une meilleure productivité !” par Le blog de Patrick [MVP Office 365] le 11-19-2014, 10:40

- [IIS] Erreurs web personnalisées par Blog de Jérémy Jeanson le 11-19-2014, 00:00

- BDD/TDD + Javascript par Fathi Bellahcene le 11-16-2014, 16:57

- Sécuriser sans stocker de mots de passe par Blog de Jérémy Jeanson le 11-15-2014, 08:58

- Où télécharger la preview de Visual Studio 2015 ? par Blog de Jérémy Jeanson le 11-13-2014, 21:33

- Les cartes sont partout ! par Le blog de Patrick [MVP Office 365] le 11-13-2014, 17:26

- [ #Office365 ] Courrier basse priorité ! par Le blog de Patrick [MVP Office 365] le 11-12-2014, 08:56

- [Oracle] Fichier oranfsodm12.dll absent du package client par Blog de Jérémy Jeanson le 11-10-2014, 20:44

- [ #Office365 ] Le chapitre 1 des Groupes est écrit, et alors ? par Le blog de Patrick [MVP Office 365] le 11-10-2014, 20:23