Le Document Object Model (DOM)

The present article gives an overview of the Document Object Model ( DOM), a hierarchy of standard interfaces proposed by the W3 Consortium. It allows application programs to access the structure of XML documents and manipulate their content. We start with a brief theoretical description of the DOM. Then we have a look at a few use cases expressed in three languages (Java, Perl and JScript). The parallel treatment in these three languages should allow you to get an idea of the functionality offered by the DOM, as well as emphasize its programming language neutral character. At the end of the article we discuss the present limitations of the DOM and its foreseeable future evolution. Mot-clés : DOM, XML, modèle objet d’un document, structure d’un document. 1. Qu’est-ce que le DOM? XML tend à devenir le méta-format universel de représentation des données et des documents. XML est défini dans une spécification publiée par le consortium W3 [4]. 156 F. ROLE et Ph. VERDRET D’autres spécifications du même consortium 1 définissent des aspects complémentaires des documents XML et de leur traitement : – XLink [7] et XPointer [8] qui couvrent les aspects hypertextuels des documents ; – XSL [6] qui traite du rendu graphique des documents ainsi que de leur transformation ; – le DOM qui fait l’objet de cet article. Le DOM [1] peut schématiquement être décrit comme une interface de programmation indépendante des langages et des plate-formes permettant aux programmes applicatifs de naviguer dans la structure des documents XML et d’en manipuler le contenu. Dans un système utilisant le DOM, un parseur analyse (et valide éventuellement) un fichier balisé en XML pour en construire une représentation sous forme d’une collection d’objets (éléments, attributs, fragments de texte, etc.) organisée hiérarchiquement. Les méthodes définies sur ces objets peuvent alors être invoquées par des logiciels applicatifs (par exemple un navigateur internet, un éditeur structuré, etc.) voulant accéder au document XML ou le manipuler. Ce scénario typique est décrit à la figure 1. On notera que tous les parseurs XML disponibles actuellement ne construisent pas forcément une représentation arborescente. C’est notamment le cas des parseurs dits « évènementiels » qui exposent les constituants d’un document les uns après les autres, de manière séquentielle et sans construire explicitement un arbre, ce qui est suffisant pour de nombreux traitements. On aura par contre intérêt à utiliser le DOM chaque fois que le traitement à réaliser nécessite un accès aléatoire et/ou en contexte aux constituants élémentaires du document. De façon plus précise, le DOM a pour fonction d’étendre les possibilités de manipulation des documents XML. Sur un navigateur, il peut permettre de filtrer un document, de l’afficher seulement à un certain niveau de détail (en extrayant la liste des auteurs dans un tableau, en créant des tables des matières avec dépliement/repliement des niveaux, etc.). Il peut également être utilisé pour enrichir des données, par exemple, par une pose d’annotations. Comme pour toute interface normalisée, l’avantage est que les méthodes (au sens de ce terme en programmation orientée objet) d’accès utilisées pour accéder à l’arbre XML sont les mêmes quels que soient les applications et les langages utilisés . 1. Les documents publiés par le consortium W3 ont, en fonction de leur degré de validation, des statuts divers. On distingue par exemple les working drafts, les proposed recommendations, les recommendations. Les documents ayant le statut de recommendation sont les documents officiellement approuvés par le consortium. XML et le DOM sont des recommendations. 2. Pour une description plus détaillée des principes et des motivations ayant présidé à la conception du DOM, le lecteur peut se référer à [9]. Le Document Object Model (DOM) 157