Introduction à la gestion de contenus web et XML
Valeur C - Module Données et Services sur le Web Bernd Amann
2003/04
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Plan du cours
XML et bases de données:
– Introduction à la gestion de données sur le Web
– Rappel XML: syntaxe, DTD, DOM/SAX, espaces de noms – XPath, XSLT
– Interrogation XML : XQuery
– 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 2
Objectifs du cours
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
4
Services Web:
– SOAP et WSDL – ActiveXML
Gestion de Contenus Web
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
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.
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 6
Contenu du Web
Contenu du Web 8
Web de surface et contenu
Applications
Informations HTML
Source: BrightPlanet
Le contenu du 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.
Il existe plus que 200 000 serveurs de contenu dont les soixante premiers contiennent environs 750 téra-octets d’informations.
Les serveurs de contenu supportent cinquante à soixante fois plus de traffic que les serveurs de surface.
Plus que 50% du contenu se trouve dans des bases de données spécialisées.
Extrait de l’étude de Brightplanet sur des données collectées pendant 15 jours en 2000.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Gestion d’informations sur le Web
Exemples d’applications web :
Commerce électronique : catalogue/achat en-ligne (B2C), échanges commerciales (B2B)
Éducation : formation/enseignement à distance Recherche : organisation de conférences, journaux électroniques
Médias : information en directe, archivage
Archivage, veille technologique (entrepôts thématiques) Comment utiliser le Web pour distribuer son information ? Comment utiliser le Web pour échanger des informations ? 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) 10
Gestion d’informations sur le Web (WCM)
Gestion d’informations sur le Web (WCM) 12
Composants et fonctions d’une application web
Contenu
Mise−à−jour
Gestion
Transactions Sessions
Web
Integration
Acquisition
Souscription Exploration Transformation
Distribution
Publication
Entrepot
Recherche Formulaires Services
IInteraction
Requetes
Les “dimensions” du Web
Autonomie des composants
Publication et distribution de l’information (ouverture) Passage à l’échelle :
– taille des données – nombre d’utilisateurs – nombre de services ....
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Problème général
Prendre en compte les dimensions du Web et les besoins des applications :
Ouverture vs. sécurité et protection Autonomie vs. intégration
Échelle vs. performance
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Gestion d’informations sur le Web (WCM) 14
Les “besoins” d’une application Web
Sécurité et protection des données Performance
Intégration des données ...
Gestion d’informations sur le Web (WCM) 16
Autonomie et Hétérogénéité
L’autonomie des ressources (et des personnes qui les produisent) a comme résultat une hétérogénéité à différents niveaux.
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.
Autonomie et Adaptation
L’autonomie des sources et l’échelle du Web modifie le problème de la conception d’une application.
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.
On est obligé d’adapter les données à l’application.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Architecture Trois-Tiers
Médiateur, Portail, Entrepot
Client Client Client
Serveur Serveur Serveur
Serveur
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Gestion d’informations sur le Web (WCM) 18
Évolution du traitement des données
Système de Fichiers :
stockage et traitement sont fortement liés 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 architectures à trois niveaux (three-tier)
architectures pair-à-pair (peer-to-peer)
Gestion d’informations sur le Web (WCM) 20
Architecture Peer-to-Peer
Pair Pair Pair
Pair Pair Pair Pair
Pas de différence entre serveur et client
Modélisation de l’information sur le Web
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Exemple
Deux sources de données sur le cinéma:
Base de données relationnelle :
Roles 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 22
Modèles de Données Semi-structurées
Objectif : Modèle pour représenter des informations hétérogènes, partiellement structurées et évolutives.
Besoin : On à besoin d’un modèle
générique : représenter une table, une page HTML, un objet Java
puissant : sans perte d’information
ouvert : sans se restreindre à un format ou une représentation
flexible : facile à comprendre et à manipuler
Modélisation de l’information sur le Web 24
Interrogation
On veut répondre à des questions diverses : Films avec Marlon Brando : requête SQL
select film from Roles where acteur = ’Brando’
Le film projeté au cinéma Action Christine : Google Google(‘‘cinéma action christine’’)
Où est-ce que je peux voir des films avec Marlon 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.
Arbres et Graphes
Table = arbre
"Brando" "Le Parrain"
film film
Roles
"Brando" "Apocalypse Now "
acteur role role
acteur
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Format d’échange
Un format d’échange définit une représentation textuelle d’une information structurée :
Sérialisation : création d’une représentation textuelle d’une donnée structurée ;
Parsing : reconstitution de la donnée structurée à partir de sa représentation sérialisée (processus inverse) ;
XML
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Modélisation de l’information sur le Web 26
Document HTML = arbre
"(place: 6 euros)"
"Action Christine"
"Le cinéma"
"montre actuellement le film"
"Apocalypse Now"
bf i
html
Modélisation de l’information sur le Web 28
Films avec Marlon Brando
Requête SQL : select film from Roles
where acteur = ’Brando’
Requête XQuery (XML) : FOR $r IN Roles/role
WHERE $r/acteur = ’Brando’
RETURN $r/film
Films au cinéma Action Christine
<html>
Le cinéma <bf>Action Christine</bf> montre actuellement le film <i>Apocalypse Now</i>
(place: 6 Euros).
</html>
Requête XQuery : FOR $a IN html
WHERE $a/bf = ’Action Christine’
RETURN $a/i
Rien ne me garantit que$a/iretourne le titre du film...
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
XML-isation de HTML
Traduction (XSLT) :
remplacer racine html par Cinema remplacer bf par nom
remplacer i par film 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>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Modélisation de l’information sur le Web 30
Enrichissement sémantique
<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
“Action Christine” est un cinéma
“Euro” est une unité monétaire ...
Ontologies, métadonnées
Modélisation de l’information sur le Web 32
Intégration = Graphe
cinema film
Officiel
nom prix titre
acteur
"Apocalypse Now" "M. Brando"
"Action Christine"6
film
f76
HTML BD Relationnelle
Document XML integré
<?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>
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Gestion de Contenus Web : le rôle de XML
La technologie XML (dans le sens très large) intervient à tous les niveaux dans la gestion de contenu Web.
XML
Contenu
Mise−à−jour
Gestion
Transactions Sessions
Web
Interface
Exploration Recherche Formulaires
Integration
Acquisition
Souscription Exploration Transformation
Distribution
Publication
Entrepot
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
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
Bibliographie
S. Abiteboul, P. Buneman, D. Suciu: Data on the Web - from relations to semi-structured data and XML
R. Bourret, http://www.rpbourret.com/xml/XMLDBLinks.htm B. Amann et P. Rigaux, Comprendre XSLT, O’Reilly
G. Gardarin, XML: des bases de données aux services Web S. Munch, Building Oracle XML Applications
A. Doucet et G. Jomier (eds.), Bases de données et Internet, Hermes.
Sites du W3C, IBM, Microsoft,...
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
W3C et XML
Le World Wide Web Consortium (W3C) – http://www.w3.org
– 400 partenaires industriels, parmi lesquels les plus grands comme Oracle, IBM, Compaq, Xerox, Microsoft
– Laboratoires de recherche: MIT pour les États Unis, INRIA pour l’Europe, université Keio (Japon) pour l’Asie
XML : recommendation W3C pour
– les documents Web (généralisation de HTML),
– mais aussi pour l’échange, la transformation, l’intégration et l’interrogation des données sur le Web.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Modélisation de l’information sur le Web 38
Rappel XML (eXtensible Markup Language)
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:
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
Document XML (forme sérialisée)
<?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>
Cette représentation facilite l’échange de l’information.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Document XML (arbre DOM)
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, ... :
Document -
Element CINEMA
Element NOM
Texte - Epée de Bois
Element ADRESSE
Texte - 100, rue Mouffetard
Element METRO
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 42
Document XML (forme arborescente)
Un arbre :
/
CINEMA
NOM
Épée de bois
ADRESSE
100, rue Mouffetard
METRO
Censier-Daubenton
Modélisation de l’information sur le Web 44
La syntaxe XML
La syntaxe XML définit la représentation sérialisée d’un arbre DOM :
représentation des noeuds (document, élements, texte, commentaires, attributs, ...)
représentation de la structure (eg. imbrication des balises)
É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 Dans la forme arborescente, un élément est un noeud
qui a un nom et
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
Commentaires et instructions de traitement
Les commentaires :
<!-- Ceci est un commentaire -->
Instructions de traitement : Exemple :
<?xml-stylesheet href="prog.xslt" type="text/xslt">
L’instruction de traitementxml-stylesheetest utilisé par les navigateurs web pour appliquer un programme de transformation (prog.xslt) aux document XML.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Modélisation de l’information sur le Web 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");
Résumé : structure d’un document XML
Un document XML comprend trois parties :
le prologue, avec la déclaration XML, la DTD, des
commentaires, des instructions de traitements (optionnels) un élément racine avec son contenu
un épilogue avec des commentaires, ou des instructions de traitements (optionnels)
Le contenu du document proprement dit est le contenu de l’élément racine.
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Documents XML valides et bien-formés
Document XMLbien-formé:
la structure est imbriquée (arborescence) Document XMLvalide:
le document respecte une DTD qui décrit pour chaque élément la structure de son contenu et ses attributs
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) 50
Déclaration du Type de Document (DTD)
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)*)>
Une personne a
un nom, plusieurs numéros de téléphone et au moins une adresse email
DTD: Exemple
1 <!ELEMENT Officiel (#PCDATA | cinéma | film)*>
2 <!ELEMENT cinéma (nom, adresse, (séance)*)>
3 <!ELEMENT nom (#PCDATA) >
4 <!ELEMENT adresse (ville, rue, (numéro)?)>
5 <!ELEMENT séance EMPTY>
6 <!ATTLIST séance heure NMTOKEN #REQUIRED
7 ref_film IDREF #REQUIRED>
8 <!ELEMENT film (titre, année>
9 <!ATTLIST film film_id ID #REQUIRED>
10 acteurs IDREFS #IMPLIED>
11 <!ELEMENT titre (#PCDATA) >
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
DTD: Pourquoi Validation?
Une DTD est une description de l’interface entre le producteurs et les consommateurs des données/documents XML :
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) 54
DTD: Utilisation
On ajoute au début du document XML la clause DOCTYPE.
Définition locale:
<!DOCTYPE Officiel [
<!ELEMENT Officiel (#PCDATA|cinéma|film)*>
<!ELEMENT cinéma (nom, adresse, (séance)*)>
...]>
Définition externe :
<!DOCTYPE Officiel SYSTEM "officiel.dtd">
Définition mixte :
<!DOCTYPE Officiel SYSTEM "officiel.dtd" [
<!ELEMENT Officiel (#PCDATA|cinéma|film)*> ]>
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 : Expression régulière sur l’alphabet des noms d’éléments;
EMPTY= élément vide;
ANY= toute combinaison de tous les éléments;
#PCDATA= texte
Contenu mixte : (#PCDATA | A | B ...)*
Expressions régulières (rappel)
Expressions régulières sur un alphabet :
Chaque symbol est une expression régulière (e.r.);
Si est une expression régulière, alors
,
et
sont
des expressions régulières;
Si et sont des expressions régulières, alors
et
sont des expressions régulières;
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Langages réguliers (2)
: tous les mots composés de mots dans
;
; Exemples :
,
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Déclaration du Type de Document (DTD) 58
Langages réguliers (1)
Chaque expression régulière sur un alphabet définit un ensemble de mots (langages)
sur :
pour tous les dans ;
: désigne le mot vide;
: tous les mots composés d’un mot dans
suivi d’un mot dans
: tous les mots dans
et dans
(union)
Déclaration du Type de Document (DTD) 60
ATTLIST : Déclaration des Attributs
<!ATTLIST élément nom type mode [defaut]>
Les éléments de typeséanceont un attributheureet un attribut ref_film:
<!ATTLIST séance heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED>
Les éléments de typefilmont un attributfilm_idet un attribut acteurs:
Types d’attributs
Chaînes de caractères :CDATA
Énumérations : séquences de valeurs alternatives séparées par
ID, IDREF, IDREFS : identifiants et références ENTITY/ENTITIES : entité(s)
NMTOKEN/NMTOKENS : chaîne(s) de caractères sans blancs NOTATION : notation
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Attribut ou element?
Souvent on a le choix entre l’utilisation d’un attribut ou d’un élément pour représenter une information.
Il est conseillé d’utiliser des éléments quand l’information est structurée (un arbre)
répétitive (une séquence d’éléments)
grande (eg. une chaîne de caractères de plusieurs KO)
“affichable”
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’>
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.
Entités externes
Segmentation du document en plusieurs sous-documents Réutilisation de DTDs et de déclarations
Références vers données non-XML (NOTATION) Adressage:
URL :<!ENTITY 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
Résumé sur les DTDs
Une DTD décrit la structure d’un ensemble de documents XML valides ;
Tous les parseurs XML permettent de valider un document XML par rapport à une DTD ;
Une DTD n’est pas un document XML ;
Il existent des langages plus riches pour la description d’un document XML : XML Schema, Relax NG grammaires d’arbres régulières
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Déclaration du Type de Document (DTD) 66
Entités caractères
Déclaration entité Référence Car.
<!ENTITY lt "<"> < <
<!ENTITY gt ">"> > >
<!ENTITY amp "&"> & &
<!ENTITY apos "'"> ' ’
<!ENTITY quot """> " "
Table 1:
Document Object Model (DOM) 68
Document Object Model (DOM)
Le modèle DOM
DOM est décomposé en plusieurs niveaux ; Le niveau 1 fournit
– une définition de la structure logique d’un document sous forme d’une arborescence
– des interfaces, méthodes, attributs et objets pour la création et modification de documents XML (DOM core) et HTML (DOM HTML)
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
Le modèle DOM
Un parseur DOM prend en entrée un document XML et construit un arbre formé d’objets :
chaque objet appartient à une sous-classe deNode des opérations sur ces objets permettent de créer de nouveaux nœuds, ou de naviguer dans le document
= éditeurs XML, processeurs XSLT
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Document Object Model (DOM) 70
Passage de la forme sérialisée à la représentation DOM
Le document sérialisé est analysé pour créer une représentation arborescente :
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
Document Object Model (DOM) 72
Les types de noeuds DOM
Leaf
Processing Instruction
Text
CData Section Comment
Entity
Reference Element Document Document Type
Entity
Attribute TreeNode
Node
Data Character
Container
Notation
Types de noeuds DOM
Type de Nœuds Catégorie syntaxique XML Document document XML (racine) DocumentType type du document (DTD) ProcessingInstruction instruction de traitement
Element élément XML
Attribute attribut XML Entity déclaration d’entité
Table 2: Types de nœuds DOM
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Propriétés d’un noeud
Propriété Type
nodeType unsigned short nodeName DOMString nodeValue DOMString attributes NamedNodeMap
Table 4: Propriétés du type Node
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Document Object Model (DOM) 74
Types de noeuds DOM (suite)
Type de Nœuds Catégorie syntaxique XML EntityReference référence vers entité
Comment commentaire
CharacterData commentaire et section de texte
Text section de texte
CDataSection section CDATA
DocumentFragment fragment de document XML Notation notation
Document Object Model (DOM) 76
Propriétés d’un node (structure)
Propriété Type parentNode Node firstChild Node
lastChild Node
childNodes NodeList previousSibling Node nextSibling Node
Table 5: Propriétés du type Node
Programmation XML avec les APIs DOM et SAX
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
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 :
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 78
Programmer avec XML
Les deux principales interfaces de programmation XML :
DOM (Document Object Model), basé sur une représentation arborescente
SaX (Simple API for XML), basé sur des déclencheurs
“événement/action”
Programmation XML avec les APIs DOM et SAX 80
DOM et SaX
Toutes les applications XML passent par une phase préalable d’analyse
Parseur SaX DOM Parseur
Document XML
Processeur XSLT Editeur XML
...
flux de données
Base de données Déclenchement
d’opérations
DOM : opérations du type Node
Résultat Méthode Paramètres
Node insertBefore() Node nouv, Nodefils Node replaceChild() Node nouv,
Nodeanc Node removeChild() Nodefils
Node appendChild() Nodenouv boolean hasChildNodes()
Node cloneNode() booleanprof
Table 6: Opérations du type Node
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Architecture SAX
Associer des événements aux balises : Document
XML
Fonctions
<ELT1> </ELT1> <ELT2> ...
Parseur SAX Evénements
Accumulateur Données
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Programmation XML avec les APIs DOM et SAX 82
DOM : Exemple de code
Ajoute
<adventure type="epic">&adventure1;</adventure>
avant le 4e élément du document :
var racine = myDocument.documentElement;
var enfants = racine.childNodes;
var el_nouv = createElement("adventure") ;
var ent_ref = createEntityReference("adventure1");
el_nouv.setAttribute("type", "epic");
el_nouv.appendChild(ent_ref)
insertBefore(el_nouv, enfants.item(3));
Programmation XML avec les APIs DOM et SAX 84
Les événements SAX
Un parseur SAX génère un événement à chaque fois qu’il rencontre
le début et la fin de document, le début et la fin d’un élément, une instruction de traitements un commentaire, ...
Les fonctions s’exécutent indépendamment = il faut leur faire partager une zone mémoire (« accumulateur »)
Les événements SAX: exemple
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
Exemple programmation SAX
// 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();}
}
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
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);
}
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>
Les événements
Début de document : connexion à la base et début de transaction
Balise FILM : création d’un enregistrement Film Balise TITRE : on affecte Film.titre
Balise ANNEE : on affecte Film.annee etc..
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
XML = le modèle de données pour le Web
La technologie XML peut contribuer à tous les niveaux d’une application Web :
Modèle de données : entrepôts/BD XML, XML Schéma, XQuery
Pogrammation d’applications : XPath/XQuery (interrogation), DOM/SAX (programmation), XSLT (transformation)
Format d’échange entre applications : services Web (SOAP) Format de publication de données : XHTML, SMIL, SVG, RDF...
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Programmation XML avec les APIs DOM et SAX 90
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 » ;
peut être stocké, transformé, interrogé “facilement”
Programmation XML avec les APIs DOM et SAX 92
Espaces de noms
Espaces de noms (namespace)
Un espace de noms XML (namespace) est une collection de noms d’éléments ou noms d’attributs (identifiée par un URI).
Utilisation: éviter les conflits de noms
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Règles d’attribution d’un espace de nom
Deux cas:
Noms qualifiés sans préfixe:
– élémént: espace de nom définit par l’attributxmlnsde l’ancêtre le ’plus près’;
Noms qualifiés avec un préfixepre:
– élémént et attribut: espace de nom définit par l’attribut xmlns:prede 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
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/
Exemple 2
<?xml version="1.0"?>
<p:A xmlns:p="http://a.b.c/">
<B attr1="val1"
p:attr1="val2"/>
<p:C/>
</p:A>
Document -
Element A http://a.b.c/
Element B
Attr attr1
val1
Attr attr1 http://a.b.c/
val2
Element C http://a.b.c/
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Exemple 4
<?xml version="1.0"?>
<A xmlns="http://a.b.c/">
<B/>
<B xmlns="">
<C/>
</B>
</A>
Document -
Element A http://a.b.c/
Element B http://a.b.c/
Element B
Element C
Valeur C UV 19786 - Bases de données avancées - 2003/04 - B. Amann
Programmation XML avec les APIs DOM et SAX 98
Exemple 3
<?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>
Document -
Element A
Element B http://a.b.c/
Element B http://x.y.z/
Element C http://x.y.z/
Programmation XML avec les APIs DOM et SAX 100
Exemple 5
<?xml version="1.0" ?>
<A xmlns:p="http://a.b.c/"
xmlns:q="http://a.b.c/">
<p:B/>
<q:B/>
</A>
Document -
Element A
Element B http://a.b.c/
Element B http://a.b.c/
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