Document Object Model (DOM)



Documents pareils
DOM - Document Object Model

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Programmation Web. Madalina Croitoru IUT Montpellier

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

L'API DOM : Document Object Model

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP JAVASCRIPT OMI4 TP5 SRC

HTML. Notions générales

HTML, CSS, JS et CGI. Elanore Elessar Dimar

< _155_0>

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Les services usuels de l Internet

Programmation Internet Cours 4

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Introduction aux concepts d ez Publish

Démarrer avec Ajax et le php: exemple d'application

Initiation à html et à la création d'un site web

4. SERVICES WEB REST 46

Étude de l application DNS (Domain Name System)

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Réseaux. 1 Généralités. E. Jeandel

Programmation des Applications Réparties. Parsers XML DOM et SAX

Ajax, RIA et HTML Prise en charge d Ajax

Démonstration de la mise en cache via HTML 5 sur iphone

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Création de formulaires interactifs

PHP 5.4 Développez un site web dynamique et interactif

Initiation aux techniques du Web. Cours L2 sciences cognitives séance 2 Charif HAYDAR: alchiekc@loria.fr

Livre Blanc WebSphere Transcoding Publisher

STID 2ème année : TP Web/PHP

< Atelier 1 /> Démarrer une application web

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Le stockage local de données en HTML5

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

JavaServer Pages (JSP)

Présentation du Framework BootstrapTwitter

Application Web et J2EE

BASE DE DONNÉES XML NATIVE

Serveur d Applications Web : WebObjects

SYSTÈMES D INFORMATIONS

Master d Informatique Corrigé du partiel novembre 2010

Sécurité des applications web. Daniel Boteanu

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Les outils de création de sites web

Compte Rendu d intégration d application

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

BD et XML : Exercices

Gestion Électronique de Documents et XML. Master 2 TSM

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

AWS avancé. Surveiller votre utilisation d EC2

BASE DE DONNÉES XML NATIVE

Formulaire pour envoyer un mail

Gestion du cache dans les applications ASP.NET

Panel des technologies Web

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d ing.

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Les structures de données. Rajae El Ouazzani

Diffuser un contenu sur Internet : notions de base... 13

Séance d ED n 5 : HTML et JavaScript

données en connaissance et en actions?

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Formation HTML / CSS. ar dionoea

Par KENFACK Patrick MIF30 19 Mai 2009

Formation : WEbMaster

Module BD et sites WEB

Présentation du langage et premières fonctions

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Programmation Web. Introduction

Académie Google AdWords

GUIDE D UTILISATION DE LA PLATEFORME D ENVOI DE COURRIELS

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

XML et Bases de données. Les bases de données XML natives.

CREATION d UN SITE WEB (INTRODUCTION)

Arbres binaires de recherche

Un jour, une question Réponse à une problématique issue de la liste GTA *

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Structure fonctionnelle d un SGBD

Base de Connaissances SiteAudit. Utiliser les Rapports Planifiés. Sommaire des Fonctionnalités. Les Nouveautés

Dojo Toolkit. Créer des applications AJAX/RIA en JavaScript. Thomas Corbière

SII Stage d informatique pour l ingénieur

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Google Webmaster Tools

Transcription:

Document Object Model (DOM) Jean-Claude Charr Maître de conférences IUT de Belfort Montbéliard Université de Franche Comté

Description générale Définit un standard pour accéder aux documents structurés comme HTML ou XML et modifier leur contenu C'est une spécification indépendante du langage de programmation Définit les propriétés des éléments et les méthodes pour accéder aux éléments

HTML DOM Tous les éléments d'un document HTML sont des noeuds : Tout le document est un "document node" Tout élément html est un "element node" Le texte dans les éléments HTML sont des "text nodes" Les attributs HTML sont des "attribute nodes" Ex: <html> <head> <title>dom Tutorial</title> </head> <body> <h1>dom Lesson one</h1> </body> </html>

La structure d'un document HTML en arbre (1/3) Un document html peut être structuré en un arbre de noeuds

La structure d'un document HTML en arbre (2/3) En code HTML : <html> <head> <title>my title</title> </head> <body> <h1>my header</h1> <a href= google.com >My link</a> </body> </html>

La structure d'un document HTML en arbre (3/3) Les noeuds dans l'arbre de noeuds ont une structure hiérarchique : Le premier noeud de l'arbre est appelé la racine Tout noeud, sauf la racine, a un seul noeud père Un noeud peut avoir plusieurs fils Une feuille est un noeud sans fils Les frères sont des noeuds ayant le même père

Les propriétés des noeuds (1/3) Tout élément HTML DOM possède des propriétés auquel on peut accéder et modifier avec un langage de programmation comme JavaScript, exemples : x.innerhtml la valeur du texte dans le noeud x x.nodename le nom du noeud x x.nodevalue la valeur du noeud x x.parentnode le noeud père du noeud x x.childnodes les noeuds fils du noeud x x.attributes les attributs du noeud x

Les propriétés des noeuds (2/3) nodename : nodevalue : N'est pas éditable Pour un élément c'est le mot clé Pour un attribut c'est le nom de l'attribut Pour un noeud texte c'est #text Pour un noeud document c'est #document Pour un élément c'est indéfini Pour un attribut c'est la valeur de l'attribut Pour un noeud texte c'est le texte entre les 2 balises

Les propriétés des noeuds (3/3) NodeType : 1 pour les éléments 2 pour les attributs 3 pour les noeuds de texte 8 pour les commentaires 9 pour le document

Les méthodes des noeuds Tout élément HTML DOM possède des méthodes qui permettent de le séléctionner, le modifier ou ajouter un nouveau élément, exemples : x.getelementbyid(id) retourne l'élément ayant comme identifiant id x.getelementsbytagname(name) retourne les éléments ayant le nom clé name x.appendchild(node) ajouter un noeud fils x x.removechild(node) supprimer un noeud fils x

Exemple sur les propriétés et les méthodes <html> <body> <p id="intro">hello World!</p> <script type="text/javascript"> txt=document.getelementbyid("intro").innerhtml; document.write("<p>du paragraphe intro : " + txt + "</p>"); txt=document.getelementbyid("intro").childnodes[0].nodevalue; document.write("<p>du paragraphe intro : " + txt + "</p>") </script> </body> </html>

Accés aux noeuds document.getelementbyid("intro"); x=document.getelementsbytagname("p"); x.length; taille de la liste x[1]; deuxième élément de la liste parentnode, firstchild, and lastchild Ex : document.getelementbyid("intro").firstchild; document.documentelement; root document.body; body

Modifer un noeud document.body.bgcolor="lavender"; document.getelementbyid("p1").innerhtml="newtext!"; document.getelementbyid("p1").style.fontfamily="arial"; <input type="button" onclick = "document.body.bgcolor ='lavender';" value="color" />

Collections C'est un groupe de noeuds similaires. L'objet Document a les propriétés qui contiennent les collections d'images, liens, forms, de la page HTML. Exemple : var linkslist = document.links; for ( var i = 0; i <linklist.length ; i++ ) alert(linklist[i].innerhtml);

XML DOM XML DOM est un standard pour accéder, ajouter, modifier ou supprimer des éléments XML Tous les éléments d'un document XML sont des noeuds : Tout le document est un "document node" Tout élément html est un "element node" Le texte dans les éléments XML son des "text nodes" Les attributs XML sont des "attribute nodes"

Parseur XML La majorité des navigateurs contiennent un parseur XML. Il permet de convertir le fichier XML en objet XML DOM accessible par JavaScript. XML DOM contient des méthodes pour parcourir l'arbre XML et manipuler et modifier les éléments XML Exemple de conversion du fichier books.xml en objet DOM: xhttp=new XMLHttpRequest(); //créer la requête xhttp.open("get","books.xml",false); //spécifier le fichier XML xhttp.send(); //envoyer une requête pour récupérer le fichier XML xmldoc=xhttp.responsexml; // affecter la réponse à un objet DOM

Propriétés Comme dans HTML DOM, les éléments XML DOM possèdent des propriétés auquel on peut accéder et modifier avec un langage de programmation comme JavaScript, exemples : x.nodename le nom du noeud x x.nodevalue la valeur du noeud x x.parentnode le noeud père du noeud x x.childnodes les noeuds fils du noeud x x.attributes les attributs du noeud x

Méthodes Comme dans HTML DOM, tout élément XML DOM possède des méthodes qui permettent de le séléctionner, le modifier ou ajouter un nouveau élément, exemples : x.getelementsbytagname(name) retourne les éléments ayant le nom clé name x.appendchild(node) ajouter un noeud fils x x.removechild(node) supprimer un noeud fils x

Accéder aux noeuds Avec la méthode getelementsbytagname() Ex: listetitre=xmldoc.getelementsbytagname("title"); text=listetitre[0].childnodes[0].nodevalue; Parcourir l'arbre XML avec les propriétés Ex : x=xmldoc.documentelement.childnodes; y=xmldoc.documentelement.firstchild; for (i=0;i<x.length;i++) if (y.nodetype==1) {//Process only element nodes (type 1) document.write(y.nodename + "<br />"); y=y.nextsibling;}

Accéder aux attributs Exemple: xmldoc=loadxmldoc("books.xml"); //Récupérer la liste d'attribut du peremier livre x=xmldoc.getelementsbytagname("book")[0].attributes; y=xmldoc.getelementsbytagname("book")[0]; //afficher la valeur de l'attribut "category" document.write(x.getnameditem("category").nodevalue); document.write(y.getattributenode("category").nodevalue); document.write(y.getattribute("category")); //afficher la valeur du premier attribut document.write(x[0].nodevalue);

Tronquer les espaces Certains navigateurs comme firefox traitent les espaces entre les éléments XML comme des éléments. Pour éliminer ce problème il faut tester le type de l'élément Ex : Pour rectifier la propriété nextsibling function get_nextsibling(n){ y=n.nextsibling; while (y.nodetype!=1) y=y.nextsibling; return y; }

Changer les valeurs Pour un noeud : x=xmldoc.getelementsbytagname("title")[0].childnodes[0]; x.nodevalue="easy Cooking"; Pour un attribut : x=xmldoc.getelementsbytagname( book ); x[0].setattribute("category","food"); ou x=xmldoc.getelementsbytagname("book")[0] y=x.getattributenode("category"); y.nodevalue="food";

Supprimer des noeuds Quand un noeud est supprimé tous ses fils sont supprimés Supprimer un noeud fils : y=xmldoc.getelementsbytagname("book")[0]; xmldoc.documentelement.removechild(y); Supprimer le noeud courant : x=xmldoc.getelementsbytagname("book")[0]; x.parentnode.removechild(x); Supprimer un noeud attribut x=xmldoc.getelementsbytagname("book"); x[0].removeattribute("category");

Créer des noeuds Créer un noeud élément : xmldoc=loadxmldoc("books.xml"); newel=xmldoc.createelement("edition"); Créer un noeud attribut : newatt=xmldoc.createattribute("edition"); newatt.nodevalue="first"; Créer un noeud texte : newtext=xmldoc.createtextnode("first"); Créer un commentaire : newcomment=xmldoc.createcomment("revised March 2008");

Ajouter des noeuds au fchier XML Ajouter un noeud fils (élément, texte ou commentaire): x.appendchild(newelement); Ajouter un élément avant un autre élément : x=xmldoc.documentelement; y=xmldoc.getelementsbytagname("book")[3]; x.insertbefore(newnode,y); Ajouter un attribut : x[0].setattribute("edition","first"); x[0].setattributenode(newatt); Ajouter du texte à un texte Node : x.insertdata(0,"easy ");

Remplacer des noeuds dans le fchier XML Exemple : x=xmldoc.documentelement; newnode=xmldoc.createelement("book"); newtitle=xmldoc.createelement("title"); newtext=xmldoc.createtextnode("a Notebook"); newtitle.appendchild(newtext); newnode.appendchild(newtitle); y=xmldoc.getelementsbytagname("book")[0] x.replacechild(newnode,y);

Copier un noeud oldnode=xmldoc.getelementsbytagname('book')[0]; newnode=oldnode.clonenode(true); xmldoc.documentelement.appendchild(newnode); y=xmldoc.getelementsbytagname("title"); for (i=0;i<y.length;i++){ document.write(y[i].childnodes[0].nodevalue); document.write("<br />"); }