Flux rss
Collection CommentÇaMarche.net
XLink/XPointer

DOM (Document Object Model) et SAX (Simple API for XML)

RSS
Bookmark Ajouter aux favoris / Partager
XML permet de définir la structure du document uniquement, ce qui permet d'une part de pouvoir définir séparément la présentation de ce document, d'autre part d'être capable de récupérer les données présentes dans le document pour les utiliser.

Toutefois la récupération des données encapsulées dans le document nécessite un outil appelé analyseur syntaxique (en anglais parser), permettant de parcourir le document et d'en extraire les informations qu'il contient.

Qu'appelle-t-on un analyseur ?

L'analyseur syntaxique (généralement francisé en parseur) est un outil logiciel permettant de parcourir un document et d'en extraire des informations.
Dans le cas de XML (on parle alors de parseur XML), l'analyseur permet de créer une structure hiérarchique contenant les données contenues dans le document XML.

On distingue deux types de parseurs XML :

  • les parseurs validants (validating) permettant de vérifier qu'un document XML est conforme à sa DTD
  • les parseurs non validants (non-validating) se contentant de vérifier que le document XML est bien formé (c'est-à-dire respectant la syntaxe XML de base)

Les analyseurs XML sont également divisés selon l'approche qu'ils utilisent pour traiter le document. On distingue actuellement deux types d'approches :

  • Les API utilisant une approche hiérarchique : les analyseurs utilisant cette technique construisent une structure hiérarchique contenant des objets représentant les éléments du document, et dont les méthodes permettent d'accèder aux propriétés. La principale API utilisant cette approche est DOM (Document Object Model)
  • Les API basés sur un mode événementiel permettent de réagir à des événements (comme le début d'un élément, la fin d'un élément) et de renvoyer le résultat à l'application utilisant cette API. SAX (Simple API for XML est la principale interface utilisant l'aspect événementiel
Ainsi, on tend à associer l'approche hiérarchique avec DOM et l'approche événementielle avec SAX.

Introduction à DOM

DOM (Document Object Model, traduisez modèle objet de document) est une spécification du W3C (World Wide Web Consortium) définissant la structure d'un document sous forme d'une hiérarchie d'objets, afin de simplifier l'accès aux éléments constitutifs du document.

Plus exactement DOM est un langage normalisé d'interface (API, Application Programming Interface), indépendant de toute plateforme et de tout langage, permettant à une application de parcourir la structure du document et d'agir dynamiquement sur celui-ci. Ainsi Javascript et ECMAScript utilisent DOM pour naviguer au sein du document HTML, ce qui leur permet par exemple de pouvoir récupérer le contenu d'un formulaire, le modifier, ...

DOM se divise en deux spécifications :

  • La spécification DOM level 1 (DOM niveau 1) se séparant en deux catégories
    • Core DOM level 1: La spécification pour les documents en général (dont XML)
    • HTML DOM level 1: La spécification retenant uniquement les méthodes applicables à HTML
  • La spécificaion DOM level 2 ajoutant de nouvelles fonctionnalités comme la prise en compte des feuilles de style CSS dans la hiérarchie d'objets.

Introduction à SAX

SAX est une API basée sur un modèle événementiel, cela signifie que SAX permet de déclencher des événements au cours de l'analyse du document XML.
Une application utilisant SAX implémente généralement des gestionnaires d'événements, lui permettant d'effectuer des opérations selon le type d'élément rencontré.

Soit le document XML suivant :

<personne>
<nom>Pillou</nom>
<prenom>Jean-François</prenom>
</personne>
Une interface événementielle telle que l'API SAX permet de créer des événements à partir de la lecture du document ci-dessus. Les événements générés seront :
start document
start element: personne
start element: nom
characters: Pillou
end element: nom
start element: prenom
characters: Jean-François
end element: prenom
end element: personne
end document
Ainsi, une application basée sur SAX peut gérer uniquement les éléments dont elle a besoin sans avoir à construire en mémoire une structure contenant l'intégralité du document.

L'API SAX définit les quatre interfaces suivantes :

  • DocumentHandler possèdant des méthodes renvoyant des événements relatifs au document :
    • startDocument() renvoyant un événement lié à l'ouverture du document
    • startElement() renvoyant un événement lié à la rencontre d'un nouvel élément
    • characters() renvoyant les caractères rencontrés
    • endElement() renvoyant un événement lié à la fin d'un élément
    • endDocument() renvoyant un événement lié à la fermeture du document
  • ErrorHandler possèdant des méthodes renvoyant des événements relatifs aux erreurs ou aux avertissements
  • DTDHandler renvoie des événements relatifs à la lecture de la DTD du document XML
  • EntityResolver permet de renvoyer une URL lorsqu'une URI est rencontrée

Comparaisons de DOM et de SAX

Les analyseurs utilisant l'interface DOM souffrent du fait que cette API impose de construire un arbre en mémoire contenant l'intégralité des éléments du document en mémoire quelle que soit l'application. Ainsi pour de gros documents (dont la taille est proche de la quantité de mémoire présente sur la machine) DOM devient insuffisant. De plus, cela rend l'utilisation de DOM lente, c'est la raison pour laquelle la norme DOM est généralement peu respectée car chaque éditeur l'implémente selon ses besoins, ce qui provoque l'apparition de nombreux parseurs utilisant des interfaces propriétaires...

Ainsi de plus en plus d'applications se tournent vers des API événementielles telles que SAX, permettant de traiter uniquement ce qui est nécessaire.

Dernière modification le mardi 14 octobre 2008 à 17:40:31.Ce document intitulé « DOM (Document Object Model) et SAX (Simple API for XML) » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

COM - Component Object Model Objets COM Microsoft COM (Component Object Model) est un standard permettant de définir des API objet, c'est-à-dire permettant à des applications de communiquer par l'intermédiaire d'objets possédant un certain nombre de méthodes et de... www.commentcamarche.net/contents/vbscript/vbs-com.php3
PHP - Parser du XML Introduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de... www.commentcamarche.net/contents/php/phpxml.php3
Besoin de driver for USB Digital PC Camera Besoin de driver for USB Digital PC Camera. Est ce que quelqu'un peut m'envoyer ou m'indiquer ou je peut télécharger ce driver? (Ucom , Model No.: UC-512 – for WindowsXP). Remarque : cette webcam est fabriquée en chine. Merci. www.commentcamarche.net/forum/affich-1702289-besoin-de-driver-for-usb-digital-pc-camera
Qu'est-ce que DOM player ?DOM Player (parfois écrit domplayer) est un malware qui touche principalement les utilisateurs de logiciels P2P. Le principe de DOMplayer est très simple, vous téléchargez via bittorrent ce que vous croyez être le dernier épisode de votre série... www.commentcamarche.net/faq/sujet-8068-qu-est-ce-que-dom-player
PhpMyAdmin - 1045- Access denied for user root@localhostPhpMyAdmin - Access denied for user root’@localhost Cette astuce est destinée à ceux qui ont un problème d’ouverture de PhpMyAdmin (par exemple avec WAMP Server ou EasyPHP) avec l'erreur suivante : #1045- Access denied for user... www.commentcamarche.net/faq/sujet-12341-phpmyadmin-1045-access-denied-for-user-root-localhost
Extraire toutes les images d'un document Word/PowerPoint/ExcelPour extraire toutes les images d'un document Word, vous avez besoin.... d'OpenOffice.org ! Procédure 1) Lancez OpenOffice Writer 2) Ouvrez votre document Word 3) Enregistrez-le en format OpenDocument (.odt) www.commentcamarche.net/faq/sujet-5348-extraire-toutes-les-images-d-un-document-word-powerpoint-excel
DOM (Document Object Model)Bonjour, Je programme une Application Web sous ASP.net, cependant je dois implanter la technologie Drag and Drop. De plus, j'utilise des contrôles de Infragistics, dont le webTree. Mon problème est que je veux dragger un noeud du webTree vers un DIV.... www.commentcamarche.net/forum/affich-11278674-dom-document-object-model
Changer d'icone dans google maps APIBonjour, Je viens de mettre en place une carte de mes clients sur mon site (google map API) J'aimerais proposer diverses icones en fonction du type de client (par ex hopital et ecole) Voici le code de ma page (seulement 2 clients apparaissent) Si... www.commentcamarche.net/forum/affich-7072437-changer-d-icone-dans-google-maps-api
Créer un fichier XML avec JAVASalut tlm, Je souhaite écrire un fichier XML en utilisant JAVA. Est-ce c'est une écriture normale comme pour un fichier ordinaire ou bien y a des méthodes spécifiées pour xml en JAVA? Merci pour tous et bonne journée! www.commentcamarche.net/forum/affich-1452566-creer-un-fichier-xml-avec-java
Télécharger Business Valuation Model ExcelBusiness Valuation Model Excel est un logiciel de gestion de chiffre d'affaire conçu pour les entreprises. Il permet d'évaluer l'efficacité d'une entreprise en proposant des indicateurs de revenus et coût d'une entreprise. L'application peut établir... www.commentcamarche.net/telecharger/telecharger-34057332-business-valuation-model-excel
Télécharger 3CX Phone System for Windows FreeVoilà encore une révolution dans le monde la télécommunication et de la téléphonie. 3CX Phone System for Windows Free est un logiciel très simple d'utilisation qui remplace le PBX initial. Ce système de téléphonie fonctionne sur IP et est compatible... www.commentcamarche.net/telecharger/telecharger-34058036-3cx-phone-system-for-windows-free
Télécharger Repair My Backup for BKF filesRepair My Backup for BKF files est tout simplement un outil de réparation de fichier Microsoft Backup ( . BKF ). Repair My Backup est un moyen rapide et facile pour accéder et restaurer des fichiers BKF corrompus. Le programme prend aussi en charge... www.commentcamarche.net/telecharger/telecharger-34059362-repair-my-backup-for-bkf-files
Mise en page de XML avec XSLIntroduction à XSL XML est un langage de structuration des données, et non de représentation des données. Ainsi XSL (eXtensible StyleSheet Language) est un langage recommandé par le W3C pour effectuer la représentation des données de documents XML.... www.commentcamarche.net/contents/xml/xmlxsl.php3
Structure d'un document HTMLNotion de document HTML Une page HTML est un simple fichier contenant du texte formatté avec des balises HTML. Par convention l'extension donnée au fichier est .htm ou .html, mais une page web peut potentiellement porter n'importe quelle... www.commentcamarche.net/contents/html/htmldocument.php3
LaTeX - Organisation du documentOrganisation d'un document LaTeX Un certain nombre de commandes permettent d'organiser les documents LaTeX. Vous pouvez en particulier organiser le document en différentes parties et sous-parties grâce aux commandes suivantes : \part{titre},... www.commentcamarche.net/contents/latex/latex-organisation.php3