Introduction à DOM Maroua Bouzid bouzid@info.unicaen.fr
L'interface DOM Intérêt DOM est indépendant de toute application Standard W3C fait pour HTML et XML Objectif Mettre le document XML en mémoire sous une forme objet Traduire les éléments en objets : attributs et méthodes Permettre ensuite à toute application de l’utiliser de manière uniforme à travers les méthodes définies sur ses objets Intérêt Uniformiser ainsi l’usage de XML à travers différentes applications : JavaScript, Java, C++,… DOM est indépendant de toute application
Principaux parseurs Xerces Apache (Java, C++) MSXML Document XML Xerces Apache (Java, C++) MSXML Microsoft (C++, VB…) SDK Oracle Oracle (Java) 4DOM Python Parseur DOM Arbre DOM API DOM Application
Exemple d'arbre DOM <Guide> </Guide> Racine du document Document NodeList Element <Guide> NodeList <Guide> <Restaurant id="R1">Le meilleur restaurant</Restaurant> </Guide> Element <Restaurant> NamedNodeMap Attr Id="R1" NodeList Text Le meilleur restaurant
Le meilleur restaurant La structure Le modèle objet DOM Structure arborescente d’éléments Un élément composé d’un ou plusieurs nœud: D’autres éléments Des instructions de traitement, Ou encore de texte Mais aussi des attributs Douze types de nœuds Document (racien en xml) Comment Attribute,… Node Document ProcessingInstruction DocumentType Element .... <?xml:stylesheet ...> <!DOCTYPE ...> <Restaurant ....> Child Text Le meilleur restaurant
Le noeud Chaque noeud XML est transformé en unobjet Définition Propriétés Des méthodes Les méthodes et propriétés permettent notamment : Créer (createNode,..), Modifier (repalceChild,…) Supprimer (remove,…) Extraire des données (get,…) de n’importe quel élément ou contenu d’un document XML
Les relations DOM définit les types de relation entre chaque nœud, et des directions de déplacement dans une arborescence XML Les propriétés: parentNode retourne le père childNodes retourne les enfants firstChild retourne le premier enfant lastChild retourne le dernier enfant previousSibling retourne le frère précedent nextSibling retourne le frère suivant du nœud courant
DOM et JavaScript Chargement du XML à travers JavaScript (pour mozilla) <script type="text/javascript"> xmlDoc= document.implementation.createDocument("","",null); xmlDoc.load("note.xml");…..</script> Le fichier complet : Test du navigateur Création de l’objet document Chargement du fichier
Accès aux éléments et attributs document : objet particulier possédant plusieurs méthodes et propriétés La méthode getElementById permet de sélectionner un élément d'identifiant donné dans une page ; La méthode getElementsByName permet de sélectionner les éléments portant un nom donné dans une page ; La méthode getElementsByTagName permet de sélectionner les éléments portant un nom de balise donné dans une page.
Accès aux éléments et attributs Accès aux attributs La méthode getAttribute() permet de retourner la valeur d'un attribut de nom donné, La propriété attributes renvoie à la collection complète des attributs d'un élément. Par exemple, si elt désigne l'élément img suivant, cette méthode renverra une liste constituée des nœuds src, alt, width et height (dans cet ordre). <img src="oiseau.gif" alt="Un oiseau sur un arbre" width="45" height="60">
Mise en œuvre - Construction Créer une instance de Document En général, dépend de l’implémentation Construire les nœuds de l’arbre L’instance de Document sert de « factory » createElementNS(namespaceURI, qName), createAttributeNS(…)… Établir les liens entre les nœuds appendChild(node), replaceChild(node1, node2), insertBefore(node) setAttributeNS(…)
Bilan DOM Une interface objet standard Des concepts familiers Navigation Construction Des concepts familiers Interface vaste mais intuitive Performance limitée Place mémoire importante Traitement à la fin de l'analyse