DOM définit, sous la forme d'une API orientée objet et indépendante des langages de programmation et de script, les outils nécessaires à l'accès et à la manipulation de documents structurés sous forme d'arbres d'objets typés. Les documents peuvent être typés selon le vocabulaire HTML, en utilisant une syntaxe XML ou toute autre forme de syntaxe.
Ce sont les niveaux d'implémentation qui définissent le type de structure qu'ils reconnaissent :
L'objectif de cet ensemble de recommandations est de fournir des outils de haut niveau permettant d'accéder et de manipuler un document XML. Ces outils étant définis selon un spécification formelle, indépendante des langages et des systèmes, cette spécification permet de réaliser des développements portables, dans différents environnements.
Au départ, l'objectif était de permettre la mise en oeuvre de programmes dans un logiciel de consultation du Web, de façon indépendante de son éditeur ; aujourd'hui, les recommandations vont beaucoup plus loin, pour s'intéresser à toute activité de programmation, basée sur un arbre d'objets typés et valués : une différence notable avec SAX, qui s'intéresse aux évènements rencontrés dans un document, lors de sa lecture.
Les différents niveaux de DOM élargissent le champ d'action de la spécification : en ajoutant plus de méthodes à des objets ou en définissant de nouvelles classes d'objets. Cependant, les outils logiciels peuvent décider de n'implémenter qu'un niveau particulier. Toutefois, s'ils implémentent le niveau 2, il implémentent par là-même le premier niveau de la recommandation.
DOM est la définition d'une API (Application Programming Interface) orientée objet. La spécification est organisée en différentes parties, différenciant des niveaux que doit supporter une implémentation de DOM.
Pour chaque niveau, les spécifications différencient ce qui est fondamental (et qui doit donc être implémenté pour être conforme) de ce qui est optionnel (les extensions). Par ailleurs, chaque spécification s'intéresse au "coeur" (core) qui est générique, pour n'importe quel document XML et à des interfaces spécifiques, pour des types de documents donnés (tels des documents XML, des CSS, voire des objets plus génériques comme des feuilles de styles).
Le "coeur" (core) de DOM définit les éléments ci-après :
Le niveau de 1, complété ensuite par le niveau 2, définissent les fonctionnalités nécessaires à la manipulation de documents HTML (il s'agit bien de HTML et non pas d'XHTML : voir annexe C.11 de la recommandation XHTML). Ce sont surtout des objets nouveaux qui apparaissent, comme les frame, les images ou les ancres. Les fonctionnalités de manipulation sont minimes, celles du core étant a priori souvent suffisantes. À noter que presque tout est défini dans le niveau 1 et que la spécification de niveau 2 n'ajoute que quelques détails.
Toutes les nouvelles interfaces sont ensuite définies dans le niveau 2, elles concernent des :
Aujourd'hui, seuls les niveaux 1 et 2 ont le statut de recommandation. Le niveau 3 est en cours de validation. Si l'utilisation de DOM ne concerne que le fait de pouvoir manipuler un document dans un outil de consultation du Web, le niveau 1 apporte alors suffisamment de fonctionnalités pour mettre en place bon nombre d'applications, pas trop complexes.
Si DOM doit être utilisé comme langage généralisé de manipulation de documents XML, il est alors nécessaire d'utiliser le niveau 2.
Exemple
Voici, en Java, comment pourrait s'écrire un programme DOM dont le seul objectif serait de créer un document XML simple.
Document doc = new DocumentImpl();
Element outElem = doc.createElement("object");
outElem.setAttribute("identifier", "A020");
Node subjNode = doc.createElement("subject");
outElem.appendChild(subjNode);
subjNode.appendChild("du texte dans le subject");
dumpSubTree(outElem, out); // une fonction qui génrère la forme sérialisée
Ce simple exemple créera le fichier XML suivant :
<object identifier="A020">
<subject>du texte dans le subject</subject>
</object>
Le DOM Document Object Model, Didier Ferment, 09/01/2001, édité par Université
de Picardie Jules Vernes, France |
|