Vous êtes sur la page 1sur 7

TP XML M.

Youssfi
1/7
TP de synthse XML

Une socit fournie ses partenaires financiers un fichier XML qui contient les
factures des produits vendus une priode donne. Un exemple de fichier XML que lon
souhaite concevoir est le suivant :

<?xml version="1.0" encoding="UTF-8"?>
<factures>
<facture num="1" dateFacture="2006-1-1">
<client codeClient="c1" societe="AGFA"/>
<detail>
<produit designation="PC212" quantite="12" prixUnitaire="6700" montant="80400"/>
<produit designation="Imp11" quantite="3" prixUnitaire="1700" montant="5100"/>
<produit designation="Papier" quantite="22" prixUnitaire="40" montant="880"/>
</detail>
</facture>
<facture num="2" dateFacture="2006-11-1">
<client codeClient="c2" societe="MITAL"/>
<detail>
<produit designation="Inf33" quantite="11" prixUnitaire="3400" montant="37400"/>
<produit designation="TVLCD52" quantite="6" prixUnitaire="9000" montant="54000"/>
</detail>
</facture>
<facture num="3" dateFacture="2006-12-11">
<client codeClient="c2" societe="MITAL"/>
<detail>
<produit designation="Inf33" quantite="11" prixUnitaire="3400" montant="37400"/>
<produit designation="TVLCD52" quantite="6" prixUnitaire="9000" montant="54000"/>
</detail>
</facture>
</factures>


Dans ce problme, nous souhaitons, tout dabord, crer la structure de ce document XML en
utilisant un schma XML, ensuite, crer une feuille de style XSL qui permet de transformer le
document XML en un document WML et enfin crer une autre feuille de style qui permet de
transformer le document XML en document SVG.

Questions :

1- Faire une reprsentation graphique de larbre XML
2- Ecrire une DTD qui permet de dclarer la structure du fichier XML ci-dessus.
3- Crer un document XML valide en utilisant la DTD.
4- Crer une feuille de style qui permet dafficher toutes les factures du document XML,
en affichant le total de chaque facture.
5- Ecrire une feuille de style xsl qui permet de transformer le fichier XML en document
HTML qui affiche les factures du client dont le code est c2 en affichant le total de
chaque facture.
6- Crer une feuille de style qui permet dafficher, pour chaque client, le nombre et le
total de ses factures.
TP XML M.Youssfi
2/7
7- Crer une feuille de style XSL qui permet de transformer le document XML en un
document SVG qui permet dafficher un graphique anim qui montrent, pour chaque
facture, le total des montant de tous les produits de cette facture :



8- Crer une feuille de style XSL qui permet de transformer le fichier XML en un
document WML qui permet de prsenter dans la premire carte nomme menu
toutes les factures dans un tableau avec la cration, pour chaque facture, dun lien
hypertexte dtail qui permet dafficher une autre carte qui contient le dtail de
cette facture (Voir Fig. 1)



Fig.1 : Transformation en WML
TP XML M.Youssfi
3/7


Deuxime partie :

en ralit le fichier XML est gnr dynamiquement par un script php partir dune base
de donnes dans la structure est la suivante :
Table Clients :


Table Produits :


Table Factures :


Table detail_fact:



Le script SQL qui permet de crer cette base de donnes est le suivant :

# phpMyAdmin SQL Dump
# version 2.5.3
# http://www.phpmyadmin.net
#
# Serveur: localhost
# Gnr le : Vendredi 16 Janvier 2009 17:34
# Version du serveur: 4.1.9
# Version de PHP: 4.3.3
#
# Base de donnes: `db__facturation`
#

TP XML M.Youssfi
4/7
# --------------------------------------------------------

#
# Structure de la table `clients`
#

CREATE TABLE `clients` (
`CODE_CLIENT` varchar(10) NOT NULL default '',
`NOM_CLIENT` varchar(25) NOT NULL default '',
`SOCIETE` varchar(25) NOT NULL default '',
PRIMARY KEY (`CODE_CLIENT`)
);

#
# Contenu de la table `clients`
#

INSERT INTO `clients` VALUES ('c1', 'hassani', 'AGFA');
INSERT INTO `clients` VALUES ('c2', 'MITAL', 'MITAL');

# --------------------------------------------------------

#
# Structure de la table `detail_fact`
#

CREATE TABLE `detail_fact` (
`REF_FACT` int(11) NOT NULL default '0',
`REF_PRODUIT` int(11) NOT NULL default '0',
`QUANTITE` int(11) NOT NULL default '0',
PRIMARY KEY (`REF_FACT`,`REF_PRODUIT`)
);

#
# Contenu de la table `detail_fact`
#

INSERT INTO `detail_fact` VALUES (1, 1, 12);
INSERT INTO `detail_fact` VALUES (1, 2, 3);
INSERT INTO `detail_fact` VALUES (1, 3, 22);
INSERT INTO `detail_fact` VALUES (2, 4, 11);
INSERT INTO `detail_fact` VALUES (2, 5, 6);

# --------------------------------------------------------

#
# Structure de la table `factures`
#

CREATE TABLE `factures` (
`REF_FACT` int(11) NOT NULL auto_increment,
TP XML M.Youssfi
5/7
`DATE_FACT` date NOT NULL default '0000-00-00',
`CODE_CLIENT` varchar(10) NOT NULL default '0',
PRIMARY KEY (`REF_FACT`)
);

#
# Contenu de la table `factures`
#

INSERT INTO `factures` VALUES (1, '2006-01-01', 'c1');
INSERT INTO `factures` VALUES (2, '2006-11-01', 'c2');

# --------------------------------------------------------

#
# Structure de la table `produits`
#

CREATE TABLE `produits` (
`REF_PRODUIT` int(11) NOT NULL auto_increment,
`DESIGNATION` varchar(40) NOT NULL default '',
`PRIX` double NOT NULL default '0',
`PHOTO` varchar(25) NOT NULL default '',
PRIMARY KEY (`REF_PRODUIT`)
);

#
# Contenu de la table `produits`
#

INSERT INTO `produits` VALUES (1, 'PC212', '6700',
'PC212.jpg');
INSERT INTO `produits` VALUES (2, 'Imp11', '1700',
'Imp11.jpg');
INSERT INTO `produits` VALUES (3, 'Papier', '40',
'Papier.jpg');
INSERT INTO `produits` VALUES (4, 'Inf33', '0', 'Inf33.jpg');
INSERT INTO `produits` VALUES (5, 'TVLCD52', '9000',
'TVLCD52.jpg');

TP XML M.Youssfi
6/7
Script PHP : facturation.php

<?
$conn=mysql_connect("localhost","root","")or die(mysql_error());
mysql_select_db("db__facturation")or die(mysql_error());
$req="select f.REF_FACT,f.DATE_FACT,f.CODE_CLIENT,c.SOCIETE from factures
f, clients c where c.CODE_CLIENT=f.CODE_CLIENT";
$rs=mysql_query($req)or die(mysql_error());
header('Content-Type:text/xml');
echo('<?xml version="1.0" encoding="iso-8859-1"?>');
?>
<factures>
<? while($fact=mysql_fetch_assoc($rs)){
$refFact=$fact['REF_FACT'];
?>
<facture
num="<? echo($refFact)?>"
dateFacture="<? echo($fact['DATE_FACT'])?>">
<client
codeClient="<? echo($fact['CODE_CLIENT'])?>"
societe="<? echo($fact['SOCIETE'])?>"/>
<?
$req2="select p.DESIGNATION,p.PRIX,d.QUANTITE from produits
p,detail_fact d where (d.REF_FACT=$refFact)and
(p.REF_PRODUIT=d.REF_PRODUIT)";
$rs2=mysql_query($req2)or die(mysql_error());
?>
<detail>
<? while($detail=mysql_fetch_assoc($rs2)){?>
<produit
designation="<? echo($detail['DESIGNATION'])?>"
quantite="<? echo($detail['QUANTITE'])?>"
prixUnitaire="<? echo($detail['PRIX'])?>"
montant="<? echo($detail['PRIX']*$detail['QUANTITE'])?>"/>
<? } ?>
</detail>
</facture>
<? }?>
</factures>
Travail demand :
1- Dployer la base de donnes.
2- Dployer et tester le script PHP qui permet de gnrer le fichier XML.
3- Crer une page HTML avec Ajax qui permet de:
a. Au chargement de la page, charger le fichier XML en envoyant une requte
ajax au script PHP
b. En cliquant sur le bouton Affichage1 , charger la premire feuille de style
XSL par une autre requte Ajax et Afficher la transformation de du fichier
XML par la feuille de style XSL dans un div de la page.
c. En cliquant sur le bouton SVG, charger la deuxime feuille de style XSL
par une autre requte Ajax et Afficher la transformation de du fichier XML par
la feuille de style XSL dans un div de la page.
d.
4- Crer un script PHP qui permet de gnrer un fichier XML qui contient tous les
produits.
TP XML M.Youssfi
7/7
5- Crer une feuille de style XSL qui permet de transformer le fichier XML gnr par
PHP en une prsentation SMIL qui prsente la squence des photos de tous les
produits.
6- Rdiger un rapport de TP : rendre avant le vendredi 30 Janvier 2009