Introduction à DOM Maroua Bouzid [email protected] L'interface DOM Standard W3C fait pour HTML et XML Objectif – – – Intérêt – 2 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 Uniformiser ainsi l’usage de XML à travers différentes applications : JavaScript, Java, C++,… DOM est indépendant de toute application Principaux parseurs Document XML Xerces Apache (Java, C++) MSXML Microsoft (C++, VB…) SDK Oracle Oracle (Java) 4DOM Python Parseur DOM Arbre DOM API DOM 3 Application Exemple d'arbre DOM Document Racine du document NodeList Element <Guide> NodeList <Guide> <Restaurant id="R1">Le meilleur restaurant</Restaurant> Element <Restaurant> NamedNodeMap </Guide> Attr Id="R1" NodeList 4 Text 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: Document DocumentType <!DOCTYPE ...> Element <Restaurant ....> Douze types de nœuds – – 5 D’autres éléments Des instructions de traitement, Ou encore de texte ProcessingInstruction Mais aussi des attributs <?xml:stylesheet ...> Node – Document (racien en xml) Comment Attribute,… Child Text Le meilleur restaurant .... Le noeud Chaque noeud XML est transformé en unobjet – – – Les méthodes et propriétés permettent notamment : – – – – 6 Définition Propriétés Des méthodes 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: – – – – – – 7 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 : – – – 8 Test du navigateur Création de l’objet document Chargement du fichier Accès aux éléments et attributs 1. 2. 3. 9 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"> 10 Mise en œuvre - Construction Créer une instance de Document – 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 – 11 En général, dépend de l’implémentation – appendChild(node), replaceChild(node1, node2), insertBefore(node) setAttributeNS(…) Bilan DOM Une interface objet standard – – Des concepts familiers – Interface vaste mais intuitive Performance limitée – – 12 Navigation Construction Place mémoire importante Traitement à la fin de l'analyse