Vous êtes sur la page 1sur 3

XML TP 1

Letude de cas proposee concerne la representation de donnees geographiques.


1 Presentation
Nous vous proposons de representer, sous forme de donnees semi-structurees, exprimees en XML,
des donnees sur les continents, pays, ville, mers, chaines de montagnes, et euves du monde.
Les informations suivantes seront representees :
pour les villes : le nom de la ville, le pays auquel elle appartient, sa population, son altitude,
sa longitude et sa latitude;
pour les pays : le nom du pays, le continent auquel il appartient, sa capitale, sa supercie,
sa population et les autres pays avec lesquels il partage une fronti`ere,
pour les continents : le nom du continent, sa surface;
pour les euves, les chaines de montagnes et les mers : les surface/longueur, et les pays
bordes/traverses.
Ville
nom
population
lieu (long., lat.)
Pays
nom
population
surface
Continent
nom
surface
Rivire
nom
longueur
Mer
nom
surface
Montagne
nom
altitude
0,1 1,1
capitale
1,1 0,N
appartient
1,1 0,N
appartient
0,N
0,N
travers par
0,N
0,N
bord par
0,N
0,N
bord par
frontalier avec
0,N
0,N
Figure 1: Schema E/R de letude de cas proposee.
La gure 1 presente un schema Entite-Association de cette etude de cas. Lobjectif est de
fournir un syst`eme de gestion de ces informations, supportant :
1. linterrogation de la base `a partir de crit`eres predicatifs exprimes `a partir des elements decrits
ci-dessus (par exemple, obtenir la liste des pays traverses par un euve, ou bien la capitale
dun pays),
2. la mise `a jour de ces donnees dans le meme mode (par exemple ajouter une ville) ainsi que
lenrichissement du schema (par exemple ajouter un pictogramme representant le drapeau,
associe `a chaque pays).
1
2 Conception
1. construisez un exemple corresponant `a la gure 1, que vous structurerez au moyen de balises.
Vous pouvez utiliser les editeurs integres `a baseX
1
ou eXist
2
pour vous aider `a construire
cet exemple.
2. proposez une DTD correspondant `a votre exemple,
3. validez votre exemple par rapport `a votre DTD, en utilisant xmllint
3
,
4. transformez cette DTD en schema au moyen de dtd2xs
4
, completez le schema obtenu,
5. optionnellement, validez votre exemple par rapport `a votre schema, en utilisant xmllint.
3 Transformations
1. Importez, au moyen dune transformation XSL, les donnees de la base MONDIAL
http://dbis.informatik.uni-goettingen.de/Mondial/#XML
dans votre schema. Comparez vos choix de conception avec ceux faits par les concepteurs de
cette base. Vous pouvez utiliser un outil de transformation specique (xsltproc par exemple).
2. Validez le document obtenu avec votre DTD et/ou votre schema.
4 Interrogations
1. Installez le gestionnaire de bases de donnees BaseX
5
et importez vos donnees.
2. eXist
6
, est une solution alternative `a BaseX.
3. Determinez, au moyen de requetes XPath (quand cest possible) et XQuery (sinon) :
(a) la capitale de la France,
(b) les pays frontaliers avec la France,
(c) la liste des pays traverses par le Danube,
(d) les pays ayant au moins une ville de plus dun million dhabitants,
(e) la liste des euves dEurope,
(f) la liste des mers bordees par plus de 5 pays,
(g) la liste des pays dont toutes les villes font moins de 500000 habitants,
(h) les pays bordes par aucune mer,
(i) les pays dont plus du quart de la population habite dans les villes repertoriees,
(j) la ville la plus proche de la longitude 2 et latitude 48,
(k) les composantes connexes du graphe dont les nuds representent les pays et les arcs les
fronti`eres entre les pays.
4. Exprimez, sous la forme dun document XHTML, produit au moyen dune requete XQuery :
1
http://www.basex.org
2
http://exist-db.org
3
http://xmlsoft.org/
4
http://www.lumrix.net/dtd2xs.php
5
basex.org
6
http://www.exist-db.org
2
(a) Pour chaque pays, son nom, sa population, et, pour chaque ville du pays, son nom, sa
position (longitude/latitude) et sa population (1 tableau par ville). Les villes seront
presentees par population decroissante.
(b) Pour chaque euve, son nom, et les villes quil traverse.
5. Dessinez une carte du monde, produite en SVG, au moyen de requetes XQuery, en vous
aidant, si besoin (et uniquement lorsque cel`a vous semble necessaire), de fonctions ecrites en
langage Java.
(a) Generez des cercles, correspondant `a chaque ville. Le rayon de chaque cercle sera
proportionnel `a la population de la ville. La position de chaque cercle sera determinee
`a partir de la longitude et de la latitude de la ville.
(b) Ajoutez le nom de chaque ville au dessus du cercle correspondant.
(c) Ajoutez les euves au moyen de chemins SVG. Le trace des euves sera determine `a
partir des villes traversees par les euves
7
. Ajoutez le nom de chaque euve le long de
son trace.
(d) Dessinez les pays. Le trace des pays sera determine en calculant le polygone englobant
toutes les villes de chaque pays, puis en achant chaque polygone sous la forme dun
chemin SVG.
(e) Dessinez les mers et les oceans. Vous en determinerez la localisation `a partir de la
localisation des pays les bordant.
(f) Coloriez les mers, les oceans et les pays. Pour colorier les pays vous utiliserez un nombre
de couleurs limite mais en veillant `a ce que deux pays ayant une fronti`ere commune
soient colories en utilisant des couleurs dierentes.
Note : Vous pourrez utiliser inkscape an de produire des mod`eles de documents SVG dont vous
pourrez vous inspirer pour vos requetes. Vous pourrez utiliser inkscape, refox ou evince
pour visualiser les documents SVG que vous aurez produits.
7
vous pourrez vous appuyer sur la propriete que les euves coulent des altitudes les plus elevees vers les altitudes
les plus basses pour construire leur trace.
3

Vous aimerez peut-être aussi