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> &copyright; </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 "&#60;">
&lt;
<
<!ENTITY gt "&#62;">
&gt;
>
<!ENTITY amp "&#38;">
&amp;
&
<!ENTITY apos "&#39;">
&apos;
’
<!ENTITY quot "&#34;">
&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