Introduction à la gestion de contenus web et XML - Cedric
Transcription
Introduction à la gestion de contenus web et XML - Cedric
1 3 Plan du cours XML et bases de données: Introduction à la gestion de contenus web et XML – Introduction à la gestion de données sur le Web – Rappel XML: syntaxe, DTD, DOM/SAX, espaces de noms Valeur C - Module Données et Services sur le Web – XPath, XSLT Bernd Amann – Interrogation XML : XQuery 2003/04 – Stockage de données XML dans une base de données relationnel – Typage de données XML : grammaires d’arbres, DTD et XML Schema Web sémantique: – RDF, RDF Schéma, OWL – Interrogation de métadonnées RDF Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 2 4 Objectifs du cours Services Web: – SOAP et WSDL – ActiveXML Comprendre – le problème de la gestion de d’informations/ressources sur le Web – le rôle de XML et des bases de données Apprendre les technologies de base pour la gestion de données sur le Web : – entrepôts XML – services web – web sémantique Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 5 Contenu du Web 7 Web : Publication et échange d’informations Le Web est un outil universel pour publier et échanger des informations : Le trio de base : HTML+URL+HTTP L’information est gérée sous forme de bases de données, documents XML, annuaires LDAP, etc. Gestion de Contenus Web On peut distinguer entre l’information à la surface, qui est accessible par navigation et l’information en profondeur, qui est “cachée” derrière des applications. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Contenu du Web Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 6 Contenu du Web 8 Web de surface et contenu HTML Applications Contenu du Web Informations Source: BrightPlanet Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Contenu du Web 9 Gestion d’informations sur le Web (WCM) Le contenu du Web 11 Gestion d’informations sur le Web Exemples d’applications web : La taille du Web (surface et profond) est estimée à 7 500 téra-octets dont seulement 19 (0.02%) sont accessibles par les moteurs de recherche. Commerce électronique : catalogue/achat en-ligne (B2C), échanges commerciales (B2B) Il existe plus que 200 000 serveurs de contenu dont les soixante premiers contiennent environs 750 téra-octets d’informations. Éducation : formation/enseignement à distance Les serveurs de contenu supportent cinquante à soixante fois plus de traffic que les serveurs de surface. Médias : information en directe, archivage Recherche : organisation de conférences, journaux électroniques Archivage, veille technologique (entrepôts thématiques) Plus que 50% du contenu se trouve dans des bases de données spécialisées. Comment utiliser le Web pour distribuer son information ? Comment utiliser le Web pour échanger des informations ? Extrait de l’étude de Brightplanet sur des données collectées pendant 15 jours en 2000. Comment exploiter les informations disponibles sur le Web ? Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Gestion d’informations sur le Web (WCM) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 10 Gestion d’informations sur le Web (WCM) 12 Composants et fonctions d’une application web Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Mise−à−jour Transactions Sessions Recherche Formulaires Services Integration Acquisition Souscription Exploration Contenu Gestion Gestion d’informations sur le Web (WCM) Transformation Publication Requetes Entrepot IInteraction Distribution Web Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Gestion d’informations sur le Web (WCM) 13 Gestion d’informations sur le Web (WCM) Les “dimensions” du Web 15 Problème général Prendre en compte les dimensions du Web et les besoins des applications : Autonomie des composants Publication et distribution de l’information (ouverture) Passage à l’échelle : Ouverture vs. sécurité et protection – taille des données Autonomie vs. intégration – nombre d’utilisateurs Échelle vs. performance – nombre de services .... Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Gestion d’informations sur le Web (WCM) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 14 Gestion d’informations sur le Web (WCM) Les “besoins” d’une application Web 16 Autonomie et Hétérogénéité Sécurité et protection des données L’autonomie des ressources (et des personnes qui les produisent) a comme résultat une hétérogénéité à différents niveaux. Performance Intégration des données ... Format et structure : – l’information est représentée sous différents formats et structures Connaissances : – l’information est produite et interprêtée avec des connaissances/contextes différents. Outils : – l’information est gérée et produite par des outils différents. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Gestion d’informations sur le Web (WCM) 17 Gestion d’informations sur le Web (WCM) Autonomie et Adaptation 19 Architecture Trois-Tiers Client L’autonomie des sources et l’échelle du Web modifie le problème de la conception d’une application. Client Client Les données et les applications qui les utilisent sont séparées : Il n’est pas possible de concevoir en même temps une application et les données dont elle a besoin. Médiateur, Portail, Entrepot On est obligé d’adapter les données à l’application. Serveur Serveur Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Gestion d’informations sur le Web (WCM) Serveur Serveur Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 18 Gestion d’informations sur le Web (WCM) 20 Architecture Peer-to-Peer Évolution du traitement des données Système de Fichiers : Pair stockage et traitement sont fortement liés Pair Pair SGBD : séparation entre modèle physique et modèle logique architectures client-serveur Web : séparation entre modèles de sources et modèle global Pair Pair Pair architectures à trois niveaux (three-tier) architectures pair-à-pair (peer-to-peer) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Pair Pas de différence entre serveur et client Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 21 Modélisation de l’information sur le Web 23 Exemple Deux sources de données sur le cinéma: Base de données relationnelle : Roles Modélisation de l’information sur le Web acteur film Brando Apocalypse Now Brando Le Parrain ... ... Page HTML : <html> Le cinéma <bf>Action Christine</bf> montre actuellement le film <i>Apocalypse Now</i> (place: 6 Euros). </html> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 22 Modélisation de l’information sur le Web 24 Interrogation Modèles de Données Semi-structurées On veut répondre à des questions diverses : Objectif : Modèle pour représenter des informations hétérogènes, partiellement structurées et évolutives. Films avec Marlon Brando : requête SQL Besoin : On à besoin d’un modèle Le film projeté au cinéma Action Christine : Google générique : représenter une table, une page HTML, un objet Java flexible : facile à comprendre et à manipuler Où est-ce que je peux voir des films avec Marlon Brando : ? ouvert : sans se restreindre à un format ou une représentation Google(‘‘cinéma action christine’’) puissant : sans perte d’information select film from Roles where acteur = ’Brando’ Pour répondre à la dernière question, on cherche un représentation uniforme qui est indépendante de la syntaxe d’échange et facile à inspecter et à traiter par un programme. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Arbres et Graphes Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 25 Table = arbre Un format d’échange définit une représentation textuelle d’une information structurée : role role film Sérialisation : création d’une représentation textuelle d’une donnée structurée ; acteur "Brando" "Brando" "Apocalypse Now " Parsing : reconstitution de la donnée structurée à partir de sa représentation sérialisée (processus inverse) ; film "Le Parrain" Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web XML Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 26 Document HTML = arbre Modélisation de l’information sur le Web 28 Films avec Marlon Brando Requête SQL : html select film from Roles where acteur = ’Brando’ bf i Requête XQuery (XML) : "Apocalypse Now" "Le cinéma" 27 Format d’échange Roles acteur Modélisation de l’information sur le Web "Action Christine" "montre actuellement le film" "(place: 6 euros)" Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann FOR $r IN Roles/role WHERE $r/acteur = ’Brando’ RETURN $r/film Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 29 Modélisation de l’information sur le Web 31 XML-isation de HTML Films au cinéma Action Christine Traduction (XSLT) : <html> Le cinéma <bf>Action Christine</bf> montre actuellement le film <i>Apocalypse Now</i> (place: 6 Euros). </html> remplacer racine html par Cinema remplacer bf par nom Requête XQuery : remplacer i par film FOR $a IN html WHERE $a/bf = ’Action Christine’ RETURN $a/i ajouter une balise prix <?xml version=’1.0’ encoding=’iso-8859-1’ ?> <Cinéma> Le cinéma <nom>Action Christine</nom> montre actuellement le film <film>Apocalypse Now</film> (place: <prix unite=’euros’>6</prix>). </Cinéma> Rien ne me garantit que $a/i retourne le titre du film... Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 30 Modélisation de l’information sur le Web Enrichissement sémantique Intégration = Graphe Officiel <html> Le cinéma <bf>Action Christine</bf> montre actuellement le film <i>Apocalypse Now</i> (place: 6 Euros). </html> Pout intérprêter les informations, il faut savoir que cinema film BD Relationnelle HTML f76 “Action Christine” est un cinéma “Euro” est une unité monétaire 32 nom prix titre acteur ... film Ontologies, métadonnées Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann "Action Christine" 6 "Apocalypse Now" "M. Brando" Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 33 Modélisation de l’information sur le Web 35 Gestion de Contenus Web : le rôle de XML Document XML integré La technologie XML (dans le sens très large) intervient à tous les niveaux dans la gestion de contenu Web. <?xml version=’1.0’ encoding=’iso-8859-1’ ?> <Officiel> <cinema film="f76"> <nom>Action Christine</nom> <prix unite=’euros’>6</prix> </cinema> <film id="f76"> <titre>Apocalypse Now</titre> <acteur>M. Brando</acteur> </film> </Officiel> Transformation Publication Souscription Exploration Integration Distribution Web Acquisition Modélisation de l’information sur le Web Entrepot Mise−à−jour Transactions Sessions Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 34 Cinéma montrant un film avec Marlon Brando FOR $c in Officiel/cinema, $f in Officiel/film[@id=$c/@film] WHERE $f/acteur = ’M. Brando’ RETURN $c/nom Exploration Recherche Formulaires Interface Gestion Contenu XML Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 36 Gestion de Contenus Web : technologie XML Interrogation : XQuery Stockage : base de données/entrepôts XML Transformation : XSLT Ontologies, métadonnées : RDF, RDFS, OWL Integration, adaptation : médiateurs/wrappers XML Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 37 Modélisation de l’information sur le Web Bibliographie W3C et XML Le World Wide Web Consortium (W3C) S. Abiteboul, P. Buneman, D. Suciu: Data on the Web - from relations to semi-structured data and XML – http://www.w3.org – 400 partenaires industriels, parmi lesquels les plus grands comme Oracle, IBM, Compaq, Xerox, Microsoft R. Bourret, http://www.rpbourret.com/xml/XMLDBLinks.htm B. Amann et P. Rigaux, Comprendre XSLT, O’Reilly – Laboratoires de recherche: MIT pour les États Unis, INRIA pour l’Europe, université Keio (Japon) pour l’Asie G. Gardarin, XML: des bases de données aux services Web S. Munch, Building Oracle XML Applications XML : recommendation W3C pour – les documents Web (généralisation de HTML), A. Doucet et G. Jomier (eds.), Bases de données et Internet, Hermes. – mais aussi pour l’échange, la transformation, l’intégration et l’interrogation des données sur le Web. Sites du W3C, IBM, Microsoft,... Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 39 Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 38 Modélisation de l’information sur le Web 40 Notion de balisage structurel Principe clé de XML : séparer la structure d’un document de sa présentation documents structurés structurer l’information données (semi-)structurées Avantages: Rappel XML (eXtensible Markup Language) transformation : indépendance entre les outils de présentation (clients) et les outils de gestion de l’information (serveurs); différentes présentations sont possibles pour le même document interrogation : requêtes plein-texte et (semi-)structurées Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 41 Modélisation de l’information sur le Web 43 Document XML (arbre DOM) Document XML (forme sérialisée) Les noeuds dans un document XML sont typés. Le modèle DOM distingue entre la racine du documents, les éléments, le text, les commentaires, ... : <?xml version="1.0" encoding="ISO-8859-1"?> <CINEMA> <NOM> Epée de Bois </NOM> <ADRESSE> 100, rue Mouffetard </ADRESSE> <METRO> Censier-Daubenton </METRO> </CINEMA> Document - Element CINEMA Cette représentation facilite l’échange de l’information. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 42 Document XML (forme arborescente) Element NOM Element ADRESSE Element METRO Texte Epée de Bois Texte 100, rue Mouffetard Texte Censier-Daubenton Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 44 La syntaxe XML Un arbre : / La syntaxe XML définit la représentation sérialisée d’un arbre DOM : CINEMA NOM ADRESSE Épée de bois 100, rue Mouffetard METRO représentation des noeuds (document, élements, texte, commentaires, attributs, ...) représentation de la structure (eg. imbrication des balises) Censier-Daubenton Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 45 Modélisation de l’information sur le Web 47 Commentaires et instructions de traitement Éléments Dans la forme sérialisée, un élément est une balise ouvrante avec un nom, puis un contenu, puis une balise fermante Les commentaires : <!-- Ceci est un commentaire --> Dans la forme arborescente, un élément est un noeud Instructions de traitement : Exemple : <?xml-stylesheet href="prog.xslt" type="text/xslt"> qui a un nom et L’instruction de traitement xml-stylesheet est utilisé par les navigateurs web pour appliquer un programme de transformation (prog.xslt) aux document XML. qui est la racine de l’arbre représentant son contenu. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 46 Attributs Les attributs constituent un autre moyen de représenter de l’information. <A att1=’1’ att2=’2’> l’ordre des attributs n’est pas important il doit toujours y avoir une valeur, encadrée par des quotes simples ou double-quotes (différent de HTML) il ne peut pas y avoir deux attributs avec le même nom dans un élément. Modélisation de l’information sur le Web 48 Les sections littérales CDATA On veut placer dans le contenu d’un document XML des caractères comme ’<’, ’>’, ou ’&’. Incorrecte : <?xml version=’1.0’?> <PROGRAMME> if ((i < 5) && (j > 6)) printf("error"); </PROGRAMME> Correcte : utilisation d’une section CDATA <?xml version=’1.0’?> <PROGRAMME> <![CDATA[if ((i < 5) && (j > 6)) printf("error"); ]]> </PROGRAMME> CDATASection if ((i < 5) && (j > 6)) printf("error"); Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Modélisation de l’information sur le Web 49 Résumé : structure d’un document XML Déclaration du Type de Document (DTD) 51 Documents XML valides et bien-formés Un document XML comprend trois parties : Document XML bien-formé: le prologue, avec la déclaration XML, la DTD, des commentaires, des instructions de traitements (optionnels) la structure est imbriquée (arborescence) un élément racine avec son contenu Document XML valide: un épilogue avec des commentaires, ou des instructions de traitements (optionnels) le document respecte une DTD qui décrit pour chaque élément la structure de son contenu et ses attributs Le contenu du document proprement dit est le contenu de l’élément racine. intégrité référentielle : – toutes les valeurs d’attributs de type ID sont distinctes – toutes les références sont valides Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 50 Déclaration du Type de Document (DTD) 52 Exemples Un cinéma a un nom, une adresse optionnelle et une suite de séances. <!ELEMENT cinéma (nom,adresse?,(séance)*)> Déclaration du Type de Document (DTD) Une personne a un nom, plusieurs numéros de téléphone et au moins une adresse email <!ELEMENT personne (nom,tel*,email+)> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 53 DTD: Exemple 1 2 3 4 5 6 7 8 9 10 11 Déclaration du Type de Document (DTD) DTD: Pourquoi Validation? Une DTD est une description de l’interface entre le producteurs et les consommateurs des données/documents XML : <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST Officiel (#PCDATA | cinéma | film)*> cinéma (nom, adresse, (séance)*)> nom (#PCDATA) > adresse (ville, rue, (numéro)?)> séance EMPTY> séance heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED> <!ELEMENT film (titre, année> <!ATTLIST film film_id ID #REQUIRED> acteurs IDREFS #IMPLIED> <!ELEMENT titre (#PCDATA) > le producteur peut contrôler la qualité des données/documents produits le consommateur peut séparer la vérification syntaxique des données/documents (parseur) de la logique de l’application Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 55 54 DTD: Utilisation On ajoute au début du document XML la clause DOCTYPE. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 56 ELEMENT : Déclaration du Type de Élément Un élément est défini par un nom et un modèle de contenu : Définition locale: Expression régulière sur l’alphabet des noms d’éléments; <!DOCTYPE Officiel [ <!ELEMENT Officiel (#PCDATA|cinéma|film)*> <!ELEMENT cinéma (nom, adresse, (séance)*)> ...]> EMPTY = élément vide; Définition externe : Contenu mixte : (#PCDATA | A | B ...)* ANY = toute combinaison de tous les éléments; #PCDATA = texte <!DOCTYPE Officiel SYSTEM "officiel.dtd"> Définition mixte : <!DOCTYPE Officiel SYSTEM "officiel.dtd" [ <!ELEMENT Officiel (#PCDATA|cinéma|film)*> ]> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 57 Déclaration du Type de Document (DTD) Expressions régulières (rappel) Langages réguliers (2) Exemples : , et et sont des expressions régulières, alors sont des expressions régulières; Si ; sont et , Si est une expression régulière, alors des expressions régulières; est une expression régulière (e.r.); Chaque symbol ; de mots dans : tous les mots composés : Expressions régulières sur un alphabet 59 60 définit un <!ATTLIST élément nom type mode [defaut]> ; dans Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) ATTLIST : Déclaration des Attributs Chaque expression régulière sur un alphabet ensemble de mots (langages) sur : pour tous les Langages réguliers (1) 58 Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) Les éléments de type séance ont un attribut heure et un attribut ref_film : désigne le mot vide; : composés d’un mot dans : tous les mots suivi d’un mot dans et dans : tous les mots dans <!ATTLIST séance heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED> (union) Les éléments de type film ont un attribut film_id et un attribut acteurs : <!ATTLIST film film_id ID #REQUIRED acteurs IDREFS #IMPLIED> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 61 Déclaration du Type de Document (DTD) Types d’attributs 63 Attribut ou element? Chaînes de caractères : CDATA Souvent on a le choix entre l’utilisation d’un attribut ou d’un élément pour représenter une information. Énumérations : séquences de valeurs alternatives séparées par Il est conseillé d’utiliser des éléments quand l’information est structurée (un arbre) ID, IDREF, IDREFS : identifiants et références répétitive (une séquence d’éléments) ENTITY/ENTITIES : entité(s) grande (eg. une chaîne de caractères de plusieurs KO) NMTOKEN/NMTOKENS : chaîne(s) de caractères sans blancs “affichable” NOTATION : notation Il est conseillé d’utiliser des attributs comme identificateurs ou références “paramètres” (eg. pour l’affichage) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 62 ATTLIST : Mode Modes d’attributs: #REQUIRED : la valeur doit être définie #IMPLIED : la valeur est optionnelle #FIXED : la valeur est constante <!ATTLIST séance heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED> <!ATTLIST film film_id ID #REQUIRED acteurs IDREFS #IMPLIED langue (AN|FR|AL|ES|IT) #IMPLIED> <!ATTLIST adresse ville CDATA #IMPLIED ’Paris’> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 64 Entités <!DOCTYPE Officiel [ <!ENTITY copyright ’Copyright B. Amann’> <!ELEMENT Officiel (p, année) > <!ELEMENT p (#PCDATA) > <!ENTITY % text ’#PCDATA’> <!ELEMENT année (%text;) > ]> <Officiel> <p> ©right; </p> <année>2000</année> </Officiel> Les entités paramètres (ENTITY %) peuvent seulement être utilisées dans la DTD. Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 65 Entités externes 67 Résumé sur les DTDs Une DTD décrit la structure d’un ensemble de documents XML valides ; Segmentation du document en plusieurs sous-documents Réutilisation de DTDs et de déclarations Tous les parseurs XML permettent de valider un document XML par rapport à une DTD ; Références vers données non-XML (NOTATION) Une DTD n’est pas un document XML ; Adressage: URL : <!ENTITY Déclaration du Type de Document (DTD) Il existent des langages plus riches pour la description d’un document XML : XML Schema, Relax NG grammaires d’arbres régulières pariscope SYSTEM ’http://pariscope.fr/ext.xml’ > FPI (formal public identifier) : <!ENTITY planning PUBLIC ’-//CNAM//Texte libre//FR’> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Déclaration du Type de Document (DTD) 66 Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Document Object Model (DOM) 68 Entités caractères Déclaration entité Référence Car. <!ENTITY lt "<"> < < <!ENTITY gt ">"> > > <!ENTITY amp "&"> & & <!ENTITY apos "'"> ' ’ <!ENTITY quot """> " " Document Object Model (DOM) Table 1: Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Document Object Model (DOM) 69 Document Object Model (DOM) Le modèle DOM 71 Le modèle DOM Un parseur DOM prend en entrée un document XML et construit un arbre formé d’objets : DOM est décomposé en plusieurs niveaux ; Le niveau 1 fournit chaque objet appartient à une sous-classe de Node – une définition de la structure logique d’un document sous forme d’une arborescence des opérations sur ces objets permettent de créer de nouveaux nœuds, ou de naviguer dans le document = – des interfaces, méthodes, attributs et objets pour la création et modification de documents XML (DOM core) et HTML (DOM HTML) éditeurs XML, processeurs XSLT Il ne fournit pas de notions d’événement, de persistance, d’interrogation etc. niveaux 2 ou plus Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Document Object Model (DOM) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 70 Document Object Model (DOM) 72 Les types de noeuds DOM Passage de la forme sérialisée à la représentation DOM Node Le document sérialisé est analysé pour créer une représentation arborescente : Attribute TreeNode le nœud racine est de type Document les catégories syntaxiques (commentaires, balises, texte) se traduisent par différents types de nœuds (Comment, Element, Text) les nœuds constituent un arbre qui reflète l’imbrication des éléments dans la forme sérialisée Container Leaf Notation Character Data Comment Processing Instruction Entity Document Entity Reference Element Document Type Text CData Section Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Document Object Model (DOM) 73 Types de noeuds DOM Document Object Model (DOM) 75 Propriétés d’un noeud Type de Nœuds Catégorie syntaxique XML Propriété Type Document document XML (racine) nodeType unsigned short DocumentType type du document (DTD) nodeName DOMString ProcessingInstruction instruction de traitement nodeValue DOMString Element élément XML attributes NamedNodeMap Attribute attribut XML Entity déclaration d’entité Table 4: Propriétés du type Node Table 2: Types de nœuds DOM Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Document Object Model (DOM) 74 Types de noeuds DOM (suite) Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Document Object Model (DOM) 76 Propriétés d’un node (structure) Type de Nœuds Catégorie syntaxique XML Propriété Type EntityReference référence vers entité parentNode Node Comment commentaire firstChild Node CharacterData commentaire et section de texte lastChild Node Text section de texte childNodes NodeList CDataSection section CDATA previousSibling Node DocumentFragment fragment de document XML nextSibling Node Notation notation Table 5: Propriétés du type Node Table 3: Types de nœuds DOM Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 77 Programmation XML avec les APIs DOM et SAX 79 Les API XML L’API DOM : Construit une représentation du document en mémoire sous forme d’arbre Adaptée aux applications qui modifient ou traitent dans leur globalité un document. L’API SaX : Programmation XML avec les APIs DOM et SAX Définit des triggers qui se déclenchent sur certaines balises. Adaptée aux applications qui extraient de l’information d’un document Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 78 Programmation XML avec les APIs DOM et SAX Programmer avec XML Les deux principales interfaces de programmation XML : DOM et SaX Toutes les applications XML passent par une phase préalable d’analyse Processeur XSLT DOM (Document Object Model), basé sur une représentation arborescente SaX (Simple API for XML), basé sur des déclencheurs “événement/action” Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann 80 Parseur DOM Document XML Parseur SaX Editeur XML ... flux de données Base de données Déclenchement d’opérations Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 81 Programmation XML avec les APIs DOM et SAX 83 Architecture SAX DOM : opérations du type Node Associer des événements aux balises : Résultat Node Node Méthode Paramètres insertBefore() Node nouv, Node fils replaceChild() removeChild() Node fils Node appendChild() Node nouv boolean Node XML <ELT1> </ELT1> <ELT2> Node nouv, Node anc Node Parseur SAX Evénements Document ... Accumulateur Données Fonctions hasChildNodes() cloneNode() boolean prof Table 6: Opérations du type Node Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 82 Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX DOM : Exemple de code Les événements SAX <adventure type="epic">&adventure1;</adventure> Un parseur SAX génère un événement à chaque fois qu’il rencontre 84 Ajoute avant le 4e élément du document : var racine = myDocument.documentElement; var enfants = racine.childNodes; le début et la fin de document, le début et la fin d’un élément, var el_nouv = createElement("adventure") ; var ent_ref = createEntityReference("adventure1"); el_nouv.setAttribute("type", "epic"); el_nouv.appendChild(ent_ref) une instruction de traitements un commentaire, ... Les fonctions s’exécutent indépendamment = il faut leur faire partager une zone mémoire (« accumulateur ») insertBefore(el_nouv, enfants.item(3)); Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 85 87 Exemple programmation SAX Les événements SAX: exemple // texte public void characters(char[] ch, int start, int length){ System.out.println("character data, length " + length); } // procédure principale public static void main(String[] args) { Trace t = new Trace(); SAXParser p = new SAXParser(); p.setContentHandler(t); try { p.parse(args[0]); } catch (Exception e) {e.printStackTrace();} } import java.io.*; import org.xml.sax.*; import org.xml.sax.helpers.*; import org.apache.xerces.parsers.SAXParser; public class Trace extends DefaultHandler { // début de document public void startDocument() { System.out.println("start document"); } // fin de document public void endDocument() { System.out.println("end document"); } Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX Programmation XML avec les APIs DOM et SAX 86 Exemple programmation SAX // balise d’ouverture public void startElement(String uri, String localName, String qName, Attributes attributes) { System.out.println("starting element: " + qName); } // balise de fermeture public void endElement(String uri, String localName, String qName) { System.out.println("end element: " + qName); } Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 88 Exemple type : insertion dans une BD À partir d’un flux XML contenant des films : <FILMS> ... <FILM> <TITRE>Alien</TITRE> <ANNEE>1979</ANNEE> <AUTEUR>Ridley Scott</AUTEUR> <GENRE>Science-fiction</GENRE <PAYS>USA</PAYS> </FILM> ... </FILMS> Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 89 Les événements La technologie XML peut contribuer à tous les niveaux d’une application Web : Balise TITRE : on affecte Film.titre Balise ANNEE : on affecte Film.annee Modèle de données : entrepôts/BD XML, XML Schéma, XQuery FILM : création d’un enregistrement Film 91 XML = le modèle de données pour le Web Début de document : connexion à la base et début de transaction Balise Programmation XML avec les APIs DOM et SAX Pogrammation d’applications : XPath/XQuery (interrogation), DOM/SAX (programmation), XSLT (transformation) Format d’échange entre applications : services Web (SOAP) etc.. Format de publication de données : XHTML, SMIL, SVG, RDF... Balise /FILM : insertion de l’enregistrement dans la base, destruction de Film Fin de document : fin de transaction et déconnexion de la base Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 90 Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 92 XML comme modèle de données pour les applications Web Un document XML peut être échangé facilement (format ASCII) ; permet de représenter pratiquement toute information structurée ; n’est pas lié à un mode d’utilisation : chacun peut se définir ses propres « structures » ; Espaces de noms peut être stocké, transformé, interrogé “facilement” Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 93 Espaces de noms (namespace) Programmation XML avec les APIs DOM et SAX 95 Règles d’attribution d’un espace de nom Deux cas: Un espace de noms XML (namespace) est une collection de noms d’éléments ou noms d’attributs (identifiée par un URI). Noms qualifiés sans préfixe: – élémént: espace de nom définit par l’attribut xmlns de l’ancêtre le ’plus près’; Utilisation: éviter les conflits de noms Noms qualifiés avec un préfixe pre: – élémént et attribut: espace de nom définit par l’attribut xmlns:pre de l’ancêtre le ’plus près’; Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 94 Espace de noms: Exemple <?xml version=’1.0’?> <document> <art:film xmlns:art=’http://www.pariscope.fr/’> <com:acteur xmlns:com=’www.comedie.fr/:acteur’ com:nom=’Juliette Binoche’ /> </art:film> </document> Noms qualifiés Noms ’universels’ art:film http://www.pariscope.fr/:film com:acteur http://www.comedie.fr/:acteur com:nom http://www.comedie.fr/:nom Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 96 Exemple 1 <?xml version="1.0"?> <A> <B/> <C xmlns="http://a.b.c/"> <D/> </C> </A> Document - Element A Element B Element C http://a.b.c/ Element D http://a.b.c/ Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 97 Exemple 2 Programmation XML avec les APIs DOM et SAX 99 Exemple 4 <?xml version="1.0"?> <p:A xmlns:p="http://a.b.c/"> <B attr1="val1" p:attr1="val2"/> <p:C/> </p:A> <?xml version="1.0"?> <A xmlns="http://a.b.c/"> <B/> <B xmlns=""> <C/> </B> </A> Document - Element A http://a.b.c/ Attr attr1 val1 Element A http://a.b.c/ Element C http://a.b.c/ Element B Document - Element B http://a.b.c/ Attr attr1 http://a.b.c/ val2 Element C Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX Element B 98 Exemple 3 Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 100 Exemple 5 <?xml version="1.0"?> <A xmlns:p="http://a.b.c/"> <p:B/> <p:B xmlns:p="http://x.y.z/"> <p:C/> </p:B> </A> <?xml version="1.0" ?> <A xmlns:p="http://a.b.c/" xmlns:q="http://a.b.c/"> <p:B/> <q:B/> </A> Document - Document - Element A Element A Element B http://a.b.c/ Element B http://x.y.z/ Element B http://a.b.c/ Element B http://a.b.c/ Element C http://x.y.z/ Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann Programmation XML avec les APIs DOM et SAX 101 Exemple 6 <?xml version="1.0" ?> <A xmlns="http://a.b.c/" xmlns:vide=""> <B/> <vide:B> <C/> </vide:B> </A> Document - Element A http://a.b.c/ Element B http://a.b.c/ Element B Element C http://a.b.c/ Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann