Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Publication de données avec XMLModule Systèmes INFO XML
ENPC, 2003 - Bernd Amann, CNAM-Paris
Publication de données avec XML / B. Amann et P. Rigaux – p.1/88
Objectifs du Cours
Mieux comprendre la publication des donnéessur le Web :
Intégration de données avec XML
Adressage de fragments avec XPath
Transformation de documents XML avec XSLT
Site de Comprendre XSLT, B. Amann etP. Rigaux, O’Reilly, 2002 :
http://cortes.cnam.fr:8080/XSLT
Publication de données avec XML / B. Amann et P. Rigaux – p.2/88
La publication de données avecXML
La publication de données avec XML - B. Amann et P. Rigaux – p.3/88
Les applications du Web
Diffusion d’informations: journaux, publicité,radio, télévision
Échange et partage d’informations :communautés Web, forums, news
Recherche d’information : moteurs de recherchegénéralisée, portails spécialisés
Commerce électronique : billetterie, bourse,catalogues électroniques
La publication de données avec XML - B. Amann et P. Rigaux – p.4/88
Architecture d’une application Web
On peut distinguer entre trois niveaux dansl’architecture d’une application Web:
Clients (consultation): navigateurs, téléphoneportables, robots
Serveurs (intégration et publication): Apache,Tomcat
Applications (gestion de données): SGBD,logiciels spécialisés, fichiers
La publication de données avec XML - B. Amann et P. Rigaux – p.5/88
Interfaces entre les niveaux
Deux types d’interfaces :
� entre clients et serveurs: HTTP, HTML,WML, SOAP/WSDL
� entre serveurs et applications:
� Java RMI, Corba, JDBC, SOAP/WSDL
La publication de données avec XML - B. Amann et P. Rigaux – p.6/88
Architecture d’une application Web
App
lica
tion
sC
lien
ts
Servlets Fichiers HTMLCGI
Programme
Serv
eur
La publication de données avec XML - B. Amann et P. Rigaux – p.7/88
Nouveaux besoins
Mots clés : échange et publication de données.L’environnement est hétérogène:
� Hétérogéinité de l’infrastructure: lesdonnées doivent être représentéesindépendamment d’un langage ou d’unemachine donnée.
� Hétérogéinité des applications: il fautpouvoir transformer facilement les donnéesprovenant d’une application pour latransmettre à un client (e.g. navigateur Web).
La publication de données avec XML - B. Amann et P. Rigaux – p.8/88
Le problème ?
Je voudrais :
� rendre les mêmes données disponibles et
� récupérer les données existantes
sans gérer � � � interfaces pour � clients et �
serveurs différents.
La publication de données avec XML - B. Amann et P. Rigaux – p.9/88
Application Web avec XML
Servlets Fichiers HTMLCGI
Serv
eur
App
lica
tion
s
Programme
Cli
ents
XML + XSLT
XML + XSLT
La publication de données avec XML - B. Amann et P. Rigaux – p.10/88
Pourquoi XML ?
Le langage XML est une réponse à ces besoins.Un document XML
� peut être échangé facilement (format ASCII) ;
� permet de représenter pratiquement touteinformation structurée ;
� n’est pas lié à un mode d’utilisation : chacunpeut se définir ses propres « structures » ;
� peut être transformé (relativement)facilement (avec le langage XSLT).
La publication de données avec XML - B. Amann et P. Rigaux – p.11/88
Pourquoi pas HTML ?
Actuellement, le principal format du Web estHTML:
� HTML est un langage pour présenter desinformations à l’écran.
� il ne permet pas d’échanger des données
� il ne permet pas un traitement desdonnées autre que l’affichage
On ne sait pas interpréter des données fourniesen HTML.
La publication de données avec XML - B. Amann et P. Rigaux – p.12/88
Utilisations de XML
� Téléphones portables : WML
� Portails Web, moteurs de recherche :RDF/RSS, Dublin core
� Services Web : SOAP/WSDL
� Objets Graphiques : SVG
� Formules mathématiques : MathML
� Documents hypertexte : HTML est devenuun standard XML (XHTML)!
... il suffit de faire un tour sur le site du W3C.La publication de données avec XML - B. Amann et P. Rigaux – p.13/88
Une étude de cas
L’Officiel des spectacles !
� Une base de données avec des films
� Des salles de cinéma, avec des séances deprojection de films
� Des cinémas, qui diffusent leur programmesur le Web, sur le WAP, sur des tracts et desaffiches...
� Un moteur de recherche pour chercher desséances, des films, des horaires
La publication de données avec XML - B. Amann et P. Rigaux – p.14/88
La fiche du film Gladiator
La fiche du film peut être publiée
� en HTML pour Netscape/IE
� en WML pour le portables WAP
� en SMIL pour Realplayer
� dans un moteur de rechercheSallesEnLigne.com
L’information ?
� c’est la même, sous des formes différentes
� elle est échangée entre plusieurs acteursLa publication de données avec XML - B. Amann et P. Rigaux – p.15/88
Les solutions XML ?
� Format universel :
� représentation en chaîne de caractèresd’un contenu structuré
� indépendant de toute application
� Publier l’information
� outils de transformation simples pourconvertir un contenu XML
� Échanger et intégrer l’information
� assembler des contenus XML, ou aucontraire en extraire des informations
La publication de données avec XML - B. Amann et P. Rigaux – p.16/88
XML, format universel
XML, format universel - B. Amann et P. Rigaux – p.17/88
XML, c’est quoi ?
XML = rendre un contenu accessible à touteapplication.Le contenu :L’Epée de bois, 100 rue Mouffetard,
métro Censier-DaubentonLe même, en XML :
<?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>
XML, format universel - B. Amann et P. Rigaux – p.18/88
Le même, mieux présenté
Présentation courante : avec indentation
<?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>
NB : il y a des espaces et des sauts de ligne
XML, format universel - B. Amann et P. Rigaux – p.19/88
Encore mieux : sous forme d’arbre
CINEMA
NOM
Épée de bois
ADRESSE
100, rue Mouffetard
METRO
Censier-Daubenton
Traiter un document XML = extraire desinformations d’un arbre.
XML, format universel - B. Amann et P. Rigaux – p.20/88
Un exemple plus complet, avec attributs
<?xml version="1.0" encoding="ISO-8859-1"?><CINEMA>
<NOM>Epée de bois</NOM><ADRESSE>100, rue Mouffetard</ADRESSE><METRO>Censier-Daubenton</METRO>
<SALLE NO=’1’ PLACES=’320’><TITRE>Alien</TITRE><REMARQUE>Reservation conseillée</REMARQUE><SEANCES>
<SEANCE>15:00</SEANCE><SEANCE>18:00</SEANCE><SEANCE>21:00</SEANCE>
</SEANCES></SALLE>
</CINEMA>
XML, format universel - B. Amann et P. Rigaux – p.21/88
Sous forme d’arbre
CINEMA
METROADRESSENOM SALLE
TITRE REMARQUE SEANCES
SEANCE SEANCE SEANCE
SALLE
TITRE SEANCES
SEANCE
Epée de bois 100, rueMouffetard
Censier
Alien Réservationconseillée
15:00 18:00 21:00
Vertigo
22:00
NO=1 NO=2PLACES=320 PLACES=120
XML, format universel - B. Amann et P. Rigaux – p.22/88
Documents XML
Qu’est-ce qu’un document XML ?
� C’est un contenu alphanumérique
� Il est structuré avec des balises
Indépendant de la représentation physique
� Un ou plusieurs fichiers ?
� Un message ?
� Un extrait d’une base de données ?
� Tout ça à la fois ...
XML, format universel - B. Amann et P. Rigaux – p.23/88
Origine d’un document XML
XML permet d’intégrer des contenus provenantd’origines diverses
� d’un éditeur de texte
� d’un site Web
� d’une base de données
� d’un fichier...
Encore la même idée : rendre le contenuindépendant de l’application
XML, format universel - B. Amann et P. Rigaux – p.24/88
Intégration : les salles
<?xml version="1.0" encoding="ISO-8859-1"?>
<SALLE NO=’2’ PLACES=’120’><FILM><TITRE>Vertigo</TITRE><AUTEUR>Alfred Hitchcock</AUTEUR><ANNEE>1958</ANNEE><GENRE>Drame</GENRE><PAYS>Etats Unis</PAYS><RESUME>Scottie Ferguson, ancien inspecteur
de police, est sujet au vertige depuisqu’il a vu mourir son collègue....
</RESUME></FILM><SEANCES>
<SEANCE>22:00</SEANCE></SEANCES>
</SALLE>
XML, format universel - B. Amann et P. Rigaux – p.25/88
Sous forme d’arbre
TITRE AUTEUR ANNEE GENRE PAYS RESUME
SEANCESFILM
SALLE
SEANCE
Salle2.xml:/
22:00
Vertigo 1958Hitchcock Scotty...USA1958
NO=2PLACES=120
XML, format universel - B. Amann et P. Rigaux – p.26/88
Le cinéma : intégration des salles
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE CINEMA [<!ENTITY salle1 SYSTEM "Salle1.xml"><!ENTITY salle2 SYSTEM "Salle2.xml">
]><CINEMA>
<NOM>Epée de bois</NOM><ADRESSE>100, rue Mouffetard</ADRESSE><METRO>Censier-Daubenton</METRO>
&salle1;
&salle2;</CINEMA>
XML, format universel - B. Amann et P. Rigaux – p.27/88
Premier bilan
Disposer d’une et une seule représentation
� J’utilise un traitement de texte ? je suisprisonnier du format
� Je stocke dans une base de données ? idem
Créer un langage pour décrire nos données
� Ne pas utiliser HTML, dédié à la présentationdans un navigateur
� = � utiliser XML, et convertir vers HTML
XML, format universel - B. Amann et P. Rigaux – p.28/88
Publication de données avec XSLT
Publication de données avec XSLT - B. Amann et P. Rigaux – p.29/88
XSLT : pour quoi faire
Séparer la gestion du contenu de la présentation
� Gestion du contenu = � décrire nosinformations, avec un vocabulaire XML
� Présentation = � mettre en forme nosdocuments pour une application particulière
XSLT permet d’écrire des programmes deconversions, très adaptés au traitement dedocuments XML
Publication de données avec XSLT - B. Amann et P. Rigaux – p.30/88
Application
Nous avons décrit notre cinéma avec notrepropre langage. XSLT va permettre de traduirece langage vers d’autres langages :
� HTML pour la présentation Web standard
� WML pour la présentation WAP
� SMIL pour une présentation multimédia
� XSL-FO pour la production de documentspapier
Publication de données avec XSLT - B. Amann et P. Rigaux – p.31/88
Version HTML
HTML revisité :
� Un document HTML est un document XML
� Le vocabulaire est fixé, ainsi que la syntaxe
� Chaque balise a une signification bien définie
HTML a été normalisé comme « dialecte » XML= � c’est XHTML
Publication de données avec XSLT - B. Amann et P. Rigaux – p.32/88
Ce qu’on veut obtenir (démo)
<html><head><title>Film: Vertigo</title></head><body bgcolor="white">
<p><img SRC="Vertigo.png"><h1><i>Vertigo</i></h1>Drame, <i>Etats Unis</i>, 1958
</p><p>Mis en scène par <b>Alfred Hitchcock</b><h3>Résumé</h3>Scottie Ferguson,ancien inspecteur de police, est sujetau vertige depuis qu’il a vu mourir son
collègue...</p>
</body></html>
Publication de données avec XSLT - B. Amann et P. Rigaux – p.33/88
HTML, sous forme d’arbre
"Film: "
...
<TITRE>
<TITRE> <GENRE> <PAYS>
Marquage HTML
Eléments XML
html
head
title
body
img
p
h1
i
i
Publication de données avec XSLT - B. Amann et P. Rigaux – p.34/88
Le rôle de XSLT
XSLT doit nous permettre :
� De prendre en entrée un document XMLsource
� De produire en sortie un autre arbre XML
� D’insérer dans le document en sortie desfragments du document source
Donc bien adapté à une transformation XML - �
HTML
Publication de données avec XSLT - B. Amann et P. Rigaux – p.35/88
WML, autre dialecte de XML
� Document WML : marqué par la balise
�wml �
� Il est divisé en cartes, unité d’affichage sur lemobile ( �card � )
� Elements principaux :
� des balises simples de mise en forme( �b � , �i � )
� des ancres pour passer d’une carte à uneautre
Publication de données avec XSLT - B. Amann et P. Rigaux – p.36/88
Exemple d’une carte WML
<?xml version="1.0"encoding="iso-8859-1"?>
<wml><card><p>
<b>Alien
</b>, 1979, Ridley Scott
<br/>Près d'un vaisseau spatialéchoué sur une lointaineplanète, ..</p>
</card></wml>
Publication de données avec XSLT - B. Amann et P. Rigaux – p.37/88
Un site WAP
On envoie un ensemble de cartes :
� Dotées d’une identité :
�card id="Alien" � ... suite dela carte �/card �
� Référençant d’autres cartes :
�a href="#Alien" �lien vers lacarte Alien �/a �
Les cartes sont « compilées » et transmises parle réseau sans fil.
Publication de données avec XSLT - B. Amann et P. Rigaux – p.38/88
Arbre XML du site WML
card card
pp
a
a
card card card
p p p
wml
a a
id=index id=S1
href=S1
href=S2
id=S2 id=Alien id=Vertigo
href=Vertigohref=Alien
Publication de données avec XSLT - B. Amann et P. Rigaux – p.39/88
Le document
<wml><card id="index" title="Programme">
...<a href="#S1"> Salle 1: </a>...
</card>
<card id="S1">Séances salle 1 <p><a href="#Alien"> Film : Alien</a>
...</card>
<card id="Alien">...
</card></wml>
Publication de données avec XSLT - B. Amann et P. Rigaux – p.40/88
Version SMIL
Version SMIL - B. Amann et P. Rigaux – p.41/88
SMIL
Langage pour la création de documentsmultimédia avec XML.
� On indique une fenêtre d’affichage avecdifférentes régions pour l’affichage descomposants.
� On place les composants dans lesdifférentes régions (positionnement spatiale).
� On synchronise l’affichage des composants(positionnement temporel).
Version SMIL - B. Amann et P. Rigaux – p.42/88
Structure d’un document SMIL
<smil><head>
<meta ... /> <!-- infos --><root-layout .../> <!-- fenêtre --><region ... /> <!-- région 1--><region ... /> <!-- région 2-->
</head><body>
<!-- contenu --></body>
</smil>
Version SMIL - B. Amann et P. Rigaux – p.43/88
Contenu
Différents types d’éléments:
� objets multimedia: <text>, <image>,<audio>, <video>, <textstream>
� éléments de synchronisation: <seq>(séquence), <par> (groupe "parallèle")
Version SMIL - B. Amann et P. Rigaux – p.44/88
Exemple Composant
� Vertigo-Info.txt:<window type="marquee"
height="50" width="200"bgcolor="black" link="blue">
<font color="white">de Alfred Hitchcock, Drame,Etats Unis, 1958,<a href="Vertigo.xml">Vertigo</a>
</font></window>
Version SMIL - B. Amann et P. Rigaux – p.45/88
Exemple SMIL: Fenêtre et régions
<smil><head><layout><root-layout width="300" height="400"/><region id="img_grand" width="300"
height="400" fit="meet"/><region id="img_petit" width="150"
left="80" height="100" top="10"/><region id="txt1" width="200"
left="50" height="50" top="120"/><region id="txt2" width="200"
left="50" height="50" top="180"/><region id="txt3" width="250" left="25"
height="150" top="240"/></layout>
</head>
Version SMIL - B. Amann et P. Rigaux – p.46/88
Exemple SMIL: Fenêtre et régions
reg_img_grand
reg_img_petit
600
pixe
ls
450 pixels
reg_texte
Version SMIL - B. Amann et P. Rigaux – p.47/88
Exemple SMIL: Positionnement
<body><seq><par endsync="first"><audio src="Sound.wav"/><img src="Vertgo.png" region="img_grand"/>
</par><par id="page2"><text src="Vertigo-Title.txt" region="txt1"/><text src="Vertigo-Info.txt" region="txt2"/><seq><img src="Vertigo1.png"
region="img_petit" dur="5s"/><img src="Vertigo2.png"
region="img_petit" dur="5s"/></seq></par></seq>
</body></smil>
Démo !Version SMIL - B. Amann et P. Rigaux – p.48/88
Version XSL-FO
Version XSL-FO - B. Amann et P. Rigaux – p.49/88
XSL-FO
Langage de description de documents avecXML.
� On indique les paramètres de mise en page(marges, taille des polices...)
� On place le contenu entre des balises deformatage
= � un processeur se charge de produire ledocument
Version XSL-FO - B. Amann et P. Rigaux – p.50/88
Transformation, et mise en forme
Document XSL-FO Document PDFDocument XML
� � � �� � � �� � � �
� � � �� � � �
� �� �� �
� �� �
� �� �� �
� �� �
� � �� � �� � �� � �� � �� � �� � �� � �
� � �� � �� � �� � �
� � � � � �� � � � � �
� � �� � �� � �� � �� � �
� � �� � �� � �� � �� � �� � ������
����� � � � � � �
� � � � � � �� � � � � � �
� � � � � �� � � � � �� � � � � �
� �� �� �
� �� �
� �� �� �
� �� �
� � �� � �� � �
� � �� � �
Transformation Mise en Forme
Version XSL-FO - B. Amann et P. Rigaux – p.51/88
Exemples d’un document XSL-FO
<?xml version="1.0" encoding="iso-8859-1"?><fo:root>
<fo:layout-master-set><fo:simple-page-master master-name="page"
page-height="29.7cm" page-width="21cm"/></fo:layout-master-set>
<fo:page-sequence master-name=’simple’><fo:flow font-size="20pt">
<fo:block>Ceci est le premier paragraphe,
</fo:block></fo:flow>
</fo:page-sequence></fo:root>
Démo ! Le programme de l’Epée de Bois!
Version XSL-FO - B. Amann et P. Rigaux – p.52/88
L’approche XSL-FO
Traitement de texte WYSIWYG :
� On indique le contenu et la mise en forme
� Pbs :
� Pas facile d’être expert en contenu et enmise en forme
� Pas commode de penser aux deux à lafois
= � très difficile de faire de beaux documents (etimpossible d’intégrer des contenus hétérogènes)
Version XSL-FO - B. Amann et P. Rigaux – p.53/88
Quelques principes originaux
Avec XSL-FO :
� Un responsable pour le contenu (XML)
� provenant de n’importe où (BD, sites, ...)
� Un responsable pour la mise en forme(XSL-FO)
� décide de la présentation
� Un processeur pour produire le résultat
= � pas commode à apprendre ...
Version XSL-FO - B. Amann et P. Rigaux – p.54/88
Échanges et intégration de données
Échanges et intégration de données - B. Amann et P. Rigaux – p.55/88
Exemple : moteur de recherche
réponse
requête
www.sallesenligne.fr
www.cine-marseille.fr
www.epee-de-bois.fr
Échanges et intégration de données - B. Amann et P. Rigaux – p.56/88
Quelques idées
J’ai mes données
� Je leur ai défini une représentation
� Je leur applique des traitements (publicationou autre)
� Je peux les transmettre à quelqu’un d’autre(tout ou partie)
= � un service externe m’apporte une valeurajoutée
Échanges et intégration de données - B. Amann et P. Rigaux – p.57/88
Quel format ?
Mon problème :
� J’ai décrit mes données avec mon langageXML
� L’application attend des données dans sonlangage
Il faut :
� Décrire formellement les deux langages
� Faire une traduction de l’un à l’autre
Échanges et intégration de données - B. Amann et P. Rigaux – p.58/88
Les DTD
Document Type Definition
� Pour définir la structure d’une classe dedocuments (d’un langage)
� Exemple : un élément de type texte :
�!ELEMENT TITRE ( #PCDATA ) �
� Exemple : un élément constitué d’une liste
�!ELEMENT FILM (TITRE, CINEMA,VILLE, URL?, HEURE+) �
Échanges et intégration de données - B. Amann et P. Rigaux – p.59/88
La DTD du moteur de recherche
Un fichier auquel on peut faire référence dans undocument :
1 <!ELEMENT FILM ( TITRE, CINEMA, VILLE, URL?, HEURE+ ) >2 <!ELEMENT TITRE ( #PCDATA ) >3 <!ELEMENT CINEMA ( #PCDATA ) >4 <!ELEMENT VILLE ( #PCDATA ) >5 <!ELEMENT URL ( #PCDATA ) >6 <!ELEMENT HEURE ( #PCDATA ) >
Document valide : conforme à une DTD.
Échanges et intégration de données - B. Amann et P. Rigaux – p.60/88
Architecture ( Démo )
XSLT
XSLT
Clientweb
Clientweb
ClientwebFlux XML
DocumentsXML
DTD 1
DTD 2
Intégration
BD
Moteurde recherche
Recherche
SQL
Échanges et intégration de données - B. Amann et P. Rigaux – p.61/88
Le document intégrateur
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE MOTEUR [<!ENTITY EpeeDeBois
SYSTEM "http://epee-de-bois.fr/EDB.xml"><!ENTITY CineMarseille
SYSTEM "http://cine-marseille.fr/CM.xml">]><MOTEUR>
<CINEMA>&EpeeDeBois;
</CINEMA><CINEMA>
&CineMarseille;</CINEMA>
</MOTEUR>
Échanges et intégration de données - B. Amann et P. Rigaux – p.62/88
Gestion de l’information avec XML
TransformationXSLT Document XML
Document XML
application XMLapplication web application WAPapplication édition
formatéPage XHTML
Contenu Page WML
présentationtransform
ationcontenu
Echange/intégration
Données statiques Données dynamiques
Application
XSLT
XSLTXSLT XSLT
XSLT
Base de données
MessageXML
FichiersRésultat
Échanges et intégration de données - B. Amann et P. Rigaux – p.63/88
Récapitulons !
XML = format d’échange de données entreapplication
� Permet de définir des « langages » pourdécrire des données (« méta-langage »)
� De nombreux outils d’analyse, parsing,interrogation, ...
� Transformation d’un langage à un autre avecXSLT
= � Bien adapté au web.
Échanges et intégration de données - B. Amann et P. Rigaux – p.64/88
XML = syntaxe + modèle
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.65/88
Le World Wide Web Consortium (W3C)
� URL: http://www.w3.org
� 400 partenaires industriels, parmi lesquelsles plus grand comme Oracle, IBM, Compaq,Xerox, Microsoft
� Laboratoires de recherche: MIT pour lesÉtats Unis, INRIA pour l’Europe, universitéKeio (Japon) pour l’Asie
� Objectif: définir un modèle pour faciliterl’échange de données sur le Web
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.66/88
Le langage de marquage XML
XML = eXtensible Markup Language
Recommendation W3C pour
� les documents Web (généralisation deHTML),
� mais aussi pour
� l’échange,
� l’intégration et
� l’interrogation des données sur le Web.
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.67/88
XML = Syntaxe
“ASCII du 21e siècle” :
� ASCII (ISO 646) et UNICODE/ISO 10646:encodage de caractères
� XML: encodage/linéarisation de données
XML premet de représenter des données avecune structure irrégulière, implicite et partielle
�
Les nouvelles techniques d’intégration etd’interrogation de données semi-structuréespeuvent être appliquées.
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.68/88
Notion de balisage structurel
Principe clé de XML : séparer la structure logiquedes données de leur présentation.
Avantages (par rapport à HTML):
� indépendance entre les outils de navigation(browser) et les outils de gestion de données(e.g. BD)
� différentes présentations sont possibles pourle même document
� indexation et interrogation
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.69/88
Forme sérialisée et forme arborescente
Il existe deux représentations d’un documentXML.
� Forme sérialisée : c’est la forme courante,où le contenu est marqué par des balises.
� Forme arborescente : elle met en évidencela structure du document.
Il est plus facile de raisonner sur la formearborescente pour concevoir des traitements
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.70/88
Un document sous 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 permet le stockage etl’échange de documents.
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.71/88
XML = modèle de données
Un arbre, constitué de nœuds typés (éléments,commentaires, etc)
CINEMA
NOM
Épée de bois
ADRESSE
100, rue Mouffetard
METRO
Censier-Daubenton
La structure des arbres XML est définie par leDocument Object Model (DOM).
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.72/88
En pratique
On utilise la forme sérialisée :
� pour stocker un document dans un fichier
� pour échanger des documents
La forme arborescente :
� permet de spécifier des manipulations dedonnées XML � modèle de données
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.73/88
Représentation sérialisée
Elle permet de marquer, par des balises, lastructure d’un document.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Commentaire --><A>Le texte de A
<B>Le texte de B</B><D attr1="1" attr2="azerty"><C/>
</D><![CDATA[2x < y]]>
</A>
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.74/88
Passage à la représentation DOM
Le document sérialisé est analysé, et unereprésentation arborescente est créée :
� le nœud racine est de type Document
� les catégories syntaxiques (commentaires,balises, texte) se traduisent par différentstypes de nœuds (Comment, Element, Text)
� les nœuds constituent un arbre qui reflètel’imbrication des éléments dans la formesérialisée
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.75/88
La représentation DOM
Document-
Comment-
Commentaire
ElementA
Text-
Le texte de A
ElementB
Text-
Le texte de B
ElementD
Attrattr1
1
Attrattr2azerty
ElementC
CDataSection-
2x � y
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.76/88
Présentation de la syntaxe XML
Un ensemble de catégories syntaxiques :
� les éléments (et leurs attributs)
� les commentaires
� les instructions de traitement
� les sections de texte
� les sections littérales
Ainsi que quelques règles sur la structure d’undocument
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.77/88
La déclaration XML
Tout document XML peut être précédé par unedéclaration :<?xml version="1.0" encoding="ISO-8859-1"?>
� l’attribut encoding indique le jeu decaractères utilisé dans le document
� l’attribut optionnel standalone indique si ledocument est composé de plusieurs entités.
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.78/88
Déclaration de type
On peut indiquer qu’un document est conforme àune DTD, et déclarer des entités.<!DOCTYPE nom SYSTEM "sourceExt" [decLoc]>
� nom est le type de l’élément racine
� sourceExt est un source extérieurecontenant la DTD
� decLoc sont des déclarations locales (pourles entités principalement)
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.79/88
Entités et références à des entités
Les entités servent à factoriser des parties dudocument.
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE A SYSTEM "minimal.dtd" [
<!ENTITY monTexte "texte simple"><!ENTITY maSignature SYSTEM "signature.xml">
]><A>
Du &monTexte;, sans caractères réservés:ni < ni > ni & ni ' ni "
&maSignature;</A>
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.80/88
Entités caractères
Déclaration entité Référence Car.<!ENTITY lt "<"> < <
<!ENTITY gt ">"> > >
<!ENTITY amp "&"> & &
<!ENTITY apos "'"> ' ’
<!ENTITY quot """> " "
Table 1:
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.81/88
Commentaires et instructions de traitement
� Les commentaires : à utiliser avecparcimonie :<!-- Ceci est un commentaire -->
� Instructions de traitement : lié au systèmequi traite le document :<?xml-stylesheet href="prog.xslt"type="text/xslt">
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.82/88
Éléments
Dans la forme sérialisée :
� C’est une balise ouvrante avec un nom,puis un contenu, puis une balise fermante
Dans la forme arborescente
� C’est un nœud avec un nom
� Le contenu est un arbre
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.83/88
Exemple : un élément avec contenu
<?xml version="1.0" encoding="ISO-8859-1"?>
<A>Le texte de A<B>Le texte de B</B>
</A>
ElementA
Text-
Le texte de A
ElementB
Text-
Le texte de B
Text-
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.84/88
Quelques remarques sur les éléments
� Un nom d’élément ne contient pas de blanc,ni de caractère accentué
� Les majuscules sont distinguées desminuscules
� Il existe une forme abrégée pour leséléments sans contenu : <C></C> peuts’écrire <C/>.
� Tout document comprend un et un seulélément racine
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.85/88
Attributs
Les attributs constituent un autre moyen derepré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éepar des guillemets (différent de HTML)
� il ne peut pas y avoir deux attributs avec lemême nom dans un élément.
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.86/88
Attributs : exemples
� <A att1=’1’ att2=’2’> est équivalent à<A att2=’2’ att1=’1’>
ElementAAttr
att11
Attratt2
2
� <A att=a> n’est pas bien formé : pasd’apostrophe
� <A att1=’1’ att1=’2’/> : interdit
� <A att1=’1’/> <B att1=’2’/> :autorisé (deux éléments différents)
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.87/88
Les sections littérales
À priori, on n’a pas le droit de placer dans lecontenu d’un document XML des caractèrescomme ’<’, ’>’, ou ’&’.
<?xml version=’1.0’?><PROGRAMME>if ((i < 5) && (j > 6)) printf("error");</PROGRAMME>
est incorrecte!
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.88/88
Solution : sections CDATA
Elles permettent d’inclure du texte qui n’est pasanalysé par le parseur :<?xml version=’1.0’?><PROGRAMME><![CDATA[if ((i < 5) && (j > 6)) printf("error"); ]]></PROGRAMME>
CDATASection-
if ((i < 5) && (j > 6)) printf("error");
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.89/88
Résumé : structure d’un document XML
Un document XML comprend trois parties :
� le prologue, avec la déclaration XML, laDTD, des commentaires, des instructions detraitements (optionnels)
� un élément racine avec son contenu
� un épilogue avec des commentaires, ou desinstructions de traitements (optionnels)
Le contenu du document proprement dit est le
contenu de l’élément racine.
XML = syntaxe + modèle - B. Amann et P. Rigaux – p.90/88