Академический Документы
Профессиональный Документы
Культура Документы
Introduction
Dans le cadre du travail qui nous a t administr et consistant
au dveloppement d'un ensembles d'applications autour d'XML et
WebServices , le prsent document illustre les dmarches et le
code qui rsolvent l'ensemble des questions qui figurent dans
lnonc.
Sommaire
nonc
_______________________________________________________________ p4
Question 1
_______________________________________________________________ p6
Question 2
_______________________________________________________________ p7
Question 3
_______________________________________________________________ p7
Question 4
_______________________________________________________________ p7
Question 5
_______________________________________________________________ p9
Question 6
_______________________________________________________________ p10
Question 7
_______________________________________________________________ p13
Question 8
_______________________________________________________________ p17
Question 9
_______________________________________________________________ p18
Question 10
_______________________________________________________________ p20
Question 11
_______________________________________________________________ p22
Question 12
_______________________________________________________________ p25
Question 13
_______________________________________________________________ p27
Question 14
_______________________________________________________________ p28
Question 15
_______________________________________________________________ p31
Conclusion
_______________________________________________________________ p38
nonc
La fdration internationale de football, FIFA, met en place une base de donnes qui
contient les informations sur les quipes nationales de chaque pays et les rsultats des
diffrents matches jous
par ces quipes.
On suppose galement que deux scripts php ont t dploys dans le serveur
web :
- Le premier script nomm equipes.php, permet de se connecter la base de
donnes et retourner toutes les quipes au format XML suivant:
<?xml version="1.0" encoding="UTF-8"?>
<equipes>
<equipe numero="E1" nomEquipe="Maroc" score="540"/>
<equipe numero="E2" nomEquipe="Algrie" score="480"/>
<equipe numero="E3" nomEquipe="Tunisie" score="580"/>
</equipes>
-Le deuxime script nomm matches.php , permet dese connecter la base
de donnes et
retourner les matches jous par une quipe donne au format XML suivant :
<?xml version="1.0" encoding="UTF-8"?>
<equipe numEquipe="E1" nom="Maroc">
<matche date="2008-02-01" resultat="gagn" >
<adversaire>Algrie</adversaire>
<butsMarques>2</butsMarques>
<butsEncaisses>1</butsEncaisses>
</matche>
<matche date="2008-02-05" resultat="perdu" >
<adversaire>Tunisie</adversaire>
<butsMarques>0</butsMarques>
<butsEncaisses>1</butsEncaisses>
</matche>
</equipe>
Travail demand :
1- Faire une reprsentation graphique de larbre XML des deux fichiers
equipes.xml et matches.xml .
2- crire une DTD qui permet de dclarer la structuredu premier fichier XML
equipes.xml
3- crire un schma XML qui permet de dclarer la structure du deuxime
fichier
XML
matches.xml
4- Crer une base de donnes MYSQL nomme FIFA qui contient les tables qui
permettent de
stocker les quipes et
les matches jous parles quipes.
5- crire le code java dune application utilisant JDOM qui permet de se connecter
la base de
donnes et de gnrer le fichier XML qui contient toute les quipes.
6- Crer une application JDOM qui permet de saisir au clavier le numro dune quipe
et de
gnrer un fichier XML qui contient les matches
jous par cette quipe.
7- Reprendre les question 5 et 6 en utilisant JaxB au lieu de JDom.
8- crire une feuille de style XSL qui permet de transformer le fichier XML en une liste
droulante HTML qui contient toutes les quipes.
9- crire une feuille de style XSL qui permet de transformer le deuxime fichier XML
en un tableau HTML qui permet de lister les matches
jous. On affichera dans ce
tableau la date du matche, ladversaire, les buts marqus, les buts encaisss, le
nombre de points (3 pour un
matche gagn, 1 pour un matche nul et 0 pour un
matche perdu).
On affichera galement la fin du tableau :
Le nombre total de buts marqus
Le nombre total de buts encaisss
Le nombre de matches jous
Le nombre de matches gagns.
Le nombre de matches nuls
Le nombre de matches perdus
Le total des points.
10- crire une feuille de style XSL qui permet de transformer le fichier
XML
qui
contient les quipes en un document SVG qui affiche un graphique anim qui montre
le score de chaque quipe en les classant
par ordre dcroissant des scores.
11- Crer un web service qui permet de :
Consulter toutes les quipes
Consulter les matches jous par une quipe.
12- Tester le web service avec Oxygen
13- Crer un client java pour le web service.
14- Crer et tester les scripts PHP.
15- Crer une application avec AJAX qui permet dafficher les quipes
dans
une
liste droulante et en slectionnant une quipe, afficher les
matches jous par cette
5
quipe.
Question 1 :
-Reprsentation graphique de larbre XML des deux fichiers : equipes.xml
et
matches.xml .
Question 2 :
-DTD qui permet de dclarer la structure du premier fichier XML equipes.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT equipes (equipe*)>
<!ELEMENT equipe EMPTY>
<!ATTLIST equipe numero CDATA #REQUIRED>
<!ATTLIST equipe nomEquipe CDATA #REQUIRED>
<!ATTLIST equipe score CDATA #REQUIRED>
Question 3 :
-Schma XML qui permet de dclarer la structure du deuxime fichier XML
matches.xml :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="equipe">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="matche"/>
</xs:sequence>
<xs:attribute name="nom" use="required" type="xs:NCName"/>
<xs:attribute name="numEquipe" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="matche">
<xs:complexType>
<xs:sequence>
<xs:element ref="adversaire"/>
<xs:element ref="butsMarques"/>
<xs:element ref="butsEncaisses"/>
</xs:sequence>
<xs:attribute name="date" use="required" type="xs:date"/>
<xs:attribute name="resultat" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="adversaire" type="xs:string"/>
<xs:element name="butsMarques" type="xs:integer"/>
<xs:element name="butsEncaisses" type="xs:integer"/>
</xs:schema>
Question 4 :
-Base de donnes MYSQL nomme FIFA qui contient les tables qui
permettent de stocker les quipes et les matches jous parles quipes.
-En supposant qu'un matche ncessite absolument 2 quipes diffrentes, la table
matchs donc contiendra une cl primaire en plus de deux cls trangres provenant
de la table quipe.
8
-La mise en place de cette base de donne ncessite l'installation d'un SGBD
Mysql. Du fait que le TP abordera aussi du PHP, l'ide serait d'installer l'application
WAMP regroupant le SGBD Mysql ainsi qu'un compilateur PHP.
-Le script ci-dessous permet la cration d'une base de donnes nomme fifa
sous Mysql.
Question 5 :
9
Rsultat de lexcution :
10
Question 6 :
-Application JDOM qui permet de saisir au clavier le numro dune
quipe et de gnrer un fichier XML qui contient les matches jous par cette
quipe.
Code source :
public class XmlMatcheParEquipe_question6 {
public static void main(String[] args) throws SQLException {
Statement st = (Statement) new
ConnectionDatabase.ConnectionFiFA().getConn().createStatement();
System.out.println("Numero d'quipe ?");
Scanner sc = new Scanner(System.in);
String numero =sc.next();
/*selon le MLD de la base de donne "fifa", l'quipe recherch peut se
trouver dans le champ equipea ou equipeb*/
ResultSet rs = st.executeQuery("select * from matchs where equipea='"+numero+"' or
equipeb='"+numero+"'");
/*Cration d'un talbeau contenant les matche jou par l'quipe demand*/
ArrayList<Matchs> listeMatch = new ArrayList<>();
while(rs.next())
{
listeMatch.add(new Matchs(rs.getString(2),rs.getString(3),
rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7)));
}
// tri du tableau des matches pour remettre l'equipe voulue dans le bon ordre
/*Le boucle suivante permet d'avoir l'adversaire toujours dans l'attribut eqb*/
for(int i=0;i<listeMatch.size();i++)
{
if(listeMatch.get(i).getEqb().equals(numero))
{
String a=listeMatch.get(i).getEqa();
String b=listeMatch.get(i).getEqb();
String c=listeMatch.get(i).getRes();
String d=listeMatch.get(i).getButm();
String e=listeMatch.get(i).getBute();
listeMatch.get(i).setEqa(b);
listeMatch.get(i).setEqb(a);
11
listeMatch.get(i).setButm(e);
listeMatch.get(i).setBute(d);
if(! c.equals("galit"))
{
if(c.equals("perdu"))
{
listeMatch.get(i).setRes("gagn");
}
else
listeMatch.get(i).setRes("perdu");}}}
// Reconstitution des noms des quipes partir de leur numero
rs = st.executeQuery("select nomEquipe from equipe where numero='"+numero+"'");
String nomEquipeA=null;
while(rs.next())
{
nomEquipeA=rs.getString(1);
}
for(int i=0;i<listeMatch.size();i++)
{
// Remplacement du numero de l'equipe voulue par son nom
listeMatch.get(i).setEqa(nomEquipeA);
// Remplacement des equipes adversaires par leur nom
rs = st.executeQuery("select nomEquipe from equipe where
numero='"+listeMatch.get(i).getEqb()+"'");
while(rs.next())
{
listeMatch.get(i).setEqb(rs.getString(1));
}
}
st.close();
// Cration du document XML
Document document = new Document();
Element racine = new Element("equipe");
document.setRootElement(racine);
racine.setAttribute("numEquipe",numero);
racine.setAttribute("nom",listeMatch.get(0).getEqa());
// Prparation des lement pour constituer le document XML
Element adv=new Element("adversaire");
Element butm=new Element("butsMarques");
Element bute=new Element("butsEncaisses");
Element matche= new Element("matche");
for(int i=0;i<listeMatch.size();i++)
{
racine.addContent(matche);
12
adv.setText(listeMatch.get(i).getEqb());
butm.setText(listeMatch.get(i).getButm());
bute.setText(listeMatch.get(i).getBute());
matche.setAttribute("date",listeMatch.get(i).getDate());
matche.setAttribute("resultat",listeMatch.get(i).getRes());
matche.addContent(adv);
matche.addContent(butm);
matche.addContent(bute);
adv=new Element("adversaire");
butm=new Element("butsMarques");
bute=new Element("butsEncaisses");
matche= new Element("matche");
}
XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
try {
sortie.output(document, new FileOutputStream(new
File("matchesParEquipe.xml")));
} catch (IOException ex) {ex.printStackTrace();}
System.out.println("Fichier xml equipes.xml gnr");
}}
Rsultat de lexcution :
Le rsultat de l'excution est un fichier XML contenant le code
suivant :
<?xml version="1.0" encoding="UTF-8"?>
<equipe numEquipe="E1" nom="FC BARCELONE">
<matche date="2014-01-18" resultat="perdu">
<adversaire>REAL MADRID</adversaire>
<butsMarques>2</butsMarques>
<butsEncaisses>6</butsEncaisses>
</matche>
<matche date="2014-01-13" resultat="gagn">
<adversaire>MAS</adversaire>
<butsMarques>2</butsMarques>
<butsEncaisses>1</butsEncaisses>
</matche>
</equipe>
13
-Classe Equipes qui reprsente la racine du fichier XML que nous voulons gnrer.
Cette classe a un attribut ArrayList qui contient la liste des objet Equipe :
Code source :
@XmlRootElement(name="equipes")
public class Equipes {
private ArrayList<Equipe> equipe;
public Equipes(ArrayList<Equipe> equipe) {
this.equipe = equipe;
}
@XmlElement(name="equipe")
public ArrayList<Equipe> getEquipe() {
return equipe;
}
14
Code source :
16
while(rs.next())
{
listeMatch.get(i).setEqb(rs.getString(1));
}}
st.close();
List<Matche> listeMatcheToMarshall = new ArrayList<Matche>();
// Cration d'une liste de matches
for(int i=0;i<listeMatch.size();i++)
{
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd");
Date date = dt.parse(listeMatch.get(i).getDate());
GregorianCalendar c = new GregorianCalendar();
c.setTime(date);
XMLGregorianCalendar date2 =
DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
listeMatcheToMarshall.add(new Matche(
listeMatch.get(i).getEqb(),Integer.parseInt(listeMatch.get(i).getBute()),
Integer.parseInt(listeMatch.get(i).getBute()),date2,listeMatch.get(i).getRes()));
}
// Cration de l'objet Equipe qui est le noeud de document XML
Equipe equipe = new Equipe( listeMatcheToMarshall,nomEquipeA,numero);
// Marshalling Object to Xml avec JAXb
File file = new File("equipesJAXBxsd.xml");
JAXBContext context = JAXBContext.newInstance(Equipe.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(equipe,file);
// Fin marshalling
}
}
Question 8 :
-Feuille de style XSL qui permet de transformer le fichier XML en une
liste
droulante HTML qui contient toutes les quipes.
Code source :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="/equipes">
<html>
<head>
</head>
<body>
<select>
<xsl:for-each select="equipe">
<option><xsl:value-of select="@nomEquipe"></xsl:value-of> </option>
</xsl:for-each>
</select>
18
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Question 9 :
-Ecrire une feuille de style XSL qui permet de transformer le deuxime
fichier
XML en un tableau HTML qui permet de lister les matches jous.
On affichera dans ce tableau la date du matche, ladversaire, les buts
marqus, les buts encaisss,
le nombre de points (3 pour un matche
gagn, 1 pour un matche
nul et 0 pour un matche perdu).
On
affichera galement la fin du tableau :
Le nombre total de buts marqus
Le nombre total de buts encaisss
Le nombre de matches jous
Le nombre de matches gagns.
Le nombre de matches nuls
Le nombre de matches perdus
Le total des points.
Code source :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="/equipe">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<table align="center" bordercolor="blue" border="1" width="600">
<th bgcolor="#33CCFF" colspan="4"><xsl:value-of select="@nom"></xsl:value-of></th>
<xsl:for-each select="matche">
19
20
Question 10 :
-crire une feuille de style XSL qui permet de transformer le fichier
XML qui contient les quipes en un document SVG qui affiche un graphique
anim qui montre le score de chaque quipe en les classant par ordre
dcroissant .
Code source :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"
version="1.1">
<xsl:output indent="yes"></xsl:output>
<xsl:template match="/">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%">
<line x1="20" y1="400" x2="20" y2="20" stroke="blue" stroke-width="2"/>
<line x1="20" y1="400" x2="600" y2="400" stroke="blue" stroke-width="2"/>
<text stroke="blue" fill="blue" x="200" y="50">Scores des quipes</text>
<xsl:for-each select="equipes/equipe">
<xsl:sort select="@score" data-type="number" order="descending"/>
21
Rendu du SVG :
22
Question 11 :
-Web service en java qui permet de :
Consulter toutes les quipes
Consulter les matches jous par une quipe.
Rponse :
-Pour la mise en place du WebService fifa , nous avons opt pour JAXWS qui est une api pour dvelopper des WebService tendus ( WSLD +
SOAP) via la plate-forme de dveloppement JAVA.
-L'utilisation de cette api est assez simple , il suffit d'annoter les classes
et ses mthodes par des annotations dfinies dans l'API JAX-WS.
Les principales annotations sont : @WebService , @WebMethod et
@WebParam.
Code source :
@WebService(name="FifaWebService")
public class FifaWS {
@WebMethod
23
{
listeMatches.get(i).setEqb(rs.getString(1));
} }
st.close(); }
catch(SQLException ex){ex.printStackTrace();}
return listeMatches;
}
@WebMethod
public ArrayList<wsfifa.Equipe> listerEquipes()
{
ArrayList<Equipe> listeEquipe = null;
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = (Connection) DriverManager.getConnection
("jdbc:mysql://localhost:3306/fifa","root","");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from equipe");
listeEquipe = new ArrayList<Equipe>();
String nomEquipe;
String numeroEquipe;
int score;
while(rs.next())
{
numeroEquipe = rs.getString(1);
nomEquipe = rs.getString(2);
score = Integer.parseInt(rs.getString(3));
listeEquipe.add(new Equipe(numeroEquipe, nomEquipe, score));
}
st.close();
}catch(Exception ex){ex.printStackTrace();}
return listeEquipe;
}}
-Le
suivant :
25
Question 12 :
Tester le web service avec Oxygen :
26
Question 13 :
-Client java pour le web service :
Rponse :
-Pour crer un client java d'un WebService, il existe une commande
wsimport qui permet de parser le fichier WSDL publi par le
WebService et de gnrer l'implmentation des classes du WebService en
questions.
-Dans notre cas la commande excute est :
Code Source :
public class ClientFifaWS {
public static void main(String[] args) {
FifaWSService fifaWSService = new FifaWSService();
FifaWebService fifaWebService = fifaWSService.getFifaWebServicePort();
List<Equipe> listeEquipe = fifaWebService.listerEquipes();
for(int i=0;i<listeEquipe.size();i++)
{ System.out.println("------");
System.out.println(listeEquipe.get(i).getNomEquipe());
System.out.println(listeEquipe.get(i).getNumero());
System.out.println(listeEquipe.get(i).getScore());
}
List<Matche> listeMatchePEquipe = fifaWebService.consulterMatchesParEquipe("E1");
for(int i=0;i<listeMatchePEquipe.size();i++)
{
System.out.println("Equipe
: "+listeMatchePEquipe.get(i).getEqa());
System.out.println("Adversaire : "+listeMatchePEquipe.get(i).getEqb());
System.out.println("Date
: "+listeMatchePEquipe.get(i).getDate());
System.out.println("Rsultat
: "+listeMatchePEquipe.get(i).getRes());
System.out.println("Buts marqus : "+listeMatchePEquipe.get(i).getButm());
System.out.println("Buts encaisss : "+listeMatchePEquipe.get(i).getBute());
}}}
Question 14 :
Crer et tester les scripts PHP permettant de se connecter la base de
donnes et de gnrer les deux fichiers XML equipes.xml et
matches.xml .
Code source :
listerEquipes.php
<?php
require("connexion.php");
$conn = new connexion("fifa","localhost","root","");
$result = $conn->Requete("select * from equipe ");
header('Content-Type:text/xml');
$dom = new DOMDocument('1.0','utf-8');
$racine = $dom->createElement('equipes',' ');
$dom->appendChild($racine);
28
if(mysql_num_rows($result) != 0 )
{
while ($l = mysql_fetch_row($result)) {
$equipe = $dom->createElement("equipe");
$numero = $dom->createAttribute("numero");
$numero->value = $l['0'];
$nomEquipe = $dom->createAttribute("nomEquipe");
$nomEquipe->value = $l['1'];
$score = $dom->createAttribute("score");
$score->value = $l['2'];
$equipe->appendChild($numero);
$equipe->appendChild($nomEquipe);
$equipe->appendChild($score);
$racine->appendChild($equipe);
}
}
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();
?>
{
$tabEquipe[$x]->setEquipeb($tabEquipe[$x]->getEquipea());
$tabEquipe[$x]->setEquipea($numeroEquipe);
$butsM = $tabEquipe[$x]->getBute();
$tabEquipe[$x]->setBute($tabEquipe[$x]->getButm());
$tabEquipe[$x]->setButm($butsM);
if($tabEquipe[$x]->getResultat() == 'perdu')
{
$tabEquipe[$x]->setResultat('gagn');
}
else
{
$tabEquipe[$x]->setResultat('perdu');
}}}}
// Rcupration du nom de l'quipe cherche:
$result = $conn->Requete("select nomequipe from equipe where numero='".$numeroEquipe."' ");
while ($l = mysql_fetch_row($result))
{
$equiea = $l['0'];
}
// Rcupration des noms des adversaires
for ($x=0; $x< count($tabEquipe); $x++)
{
$result = $conn->Requete("select nomequipe from equipe where numero='".$tabEquipe[$x]>getEquipeb()."' ");
while ($l = mysql_fetch_row($result))
{
$tabEquipe[$x]->setEquipeb($l['0']);
}
}
}
// gnration du fichier XML en utilisant la bibliothque DOM prdfini par PHP5
$dom = new DOMDocument('1.0','utf-8');
$racine = $dom->createElement('equipe','');
$numero = $dom->createAttribute("numero");
$numero->value = $numeroEquipe;
$racine->appendChild($numero);
$nomEquipe = $dom->createAttribute("nom");
$result = $conn->Requete("select nomequipe from equipe where numero='".$numeroEquipe."' ");
while ($l = mysql_fetch_row($result))
{
$nomEquipe->value = $l['0'];
}
$racine->appendChild($nomEquipe);
header('Content-Type:text/xml');
for ($x=0; $x< count($tabEquipe); $x++)
{
$nMatche = $dom->createElement("matche");
$date = $dom->createAttribute("date");
$date->value = $tabEquipe[$x]->getDate();
$nMatche->appendChild($date);
$r = $dom->createAttribute("resultat");
$r->value = $tabEquipe[$x]->getResultat() ;
$nMatche->appendChild($r);
30
//
$adversaire = $dom->createElement("adversaire",$tabEquipe[$x]->getEquipeb());
$butsmarques = $dom->createElement("butsMarques",$tabEquipe[$x]->getButm());
$butsencaisses = $dom->createElement("butsEncaisses",$tabEquipe[$x]->getBute());
//
$nMatche->appendChild($adversaire);
$nMatche->appendChild($butsmarques);
$nMatche->appendChild($butsencaisses);
//
$racine->appendChild($nMatche);
}
$xslt = $dom->createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="matches.xsl"');
$dom->appendChild($xslt);
$dom->appendChild($racine);
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();
?>
31
Question 15 :
- Crer une application avec AJAX qui permet dafficher les quipes dans une
liste
droulante et en slectionnant une quipe, afficher les matches jous par cette quipe.
Rponse :
tapes:
1. A l'ouverture de la page web en par un utilisateur, le code AJAX fait appel un
script PHP, ce script se connecte la base de donnes et rcupre les quipes
depuis la table equipe . A l'aide de la bibliothque prdfinie DOM de php5 ,
ce script va crer un document XML qui contiendra la liste des quipes. Une fois
le document XML rcupr par AJAX , il va falloir le formater par un fichier XSL
qui gnre une liste droulante contenant la liste des quipes qui elle, sera
intgr dans un div dans la page HTML.
2. Lorsque une quipe est choisie dans la liste droulante, un vnement est
dclench faisant appel un un script AJAX, ce script fait appel un script PHP
qui se connecte la base de donnes, rcupre les matches jous par l'quipe
qui t slectionne dans la liste droulante ensuite cre un document XML et
le renvoie au script AJAX qui lui a fait appel. Une fois le document XML rcupr,
celui-ci est transform par un fichier XSL qui gnre un tableau HTML contenant
les matches jous par lquipe en slectionne.
header('Content-Type:text/xml');
$dom = new DOMDocument('1.0','utf-8');
$racine = $dom->createElement('equipes','');
$xslt = $dom->createProcessingInstruction('xml-stylesheet', 'type="text/xsl"
$dom->appendChild($xslt);
$dom->appendChild($racine);
if(mysql_num_rows($result) != 0 )
{
href="equipe.xsl"');
select="butsMarques"></xsl:value-of></td>
<td colspan="2" width="300">Buts encaisss: <xsl:value-of
select="butsEncaisses"></xsl:value-of></td>
</tr>
<tr align="center" width="610">
<td colspan="4" width="600">Points:
<xsl:choose>
<xsl:when test="@resultat='gagn'">
<xsl:text>3</xsl:text>
</xsl:when>
<xsl:when test="@resultat='perdu'">
<xsl:text>0</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>1</xsl:text>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
<tr bgcolor="#33FF33" align="center"> <td colspan="2" width="300">Total buts marqus:
<xsl:value-of select="sum(matche/butsMarques)"></xsl:value-of></td>
<td colspan="2" width="300">Total buts encaisss: <xsl:value-of
select="sum(matche/butsEncaisses)"></xsl:value-of></td> </tr>
<tr bgcolor="#33FF33" align="center">
<td width="150">Matches jous: <xsl:value-of select="count(matche)"></xsl:value-of></td>
<td width="150">Gagns: <xsl:value-of select="count(matche[@resultat=
'gagn'])"></xsl:value-of></td>
<td width="150">Nuls: <xsl:value-of select="count(matche[@resultat= 'galit'])"></xsl:valueof></td>
<td width="150">Perdus: <xsl:value-of select="count(matche[@resultat= 'perdu'])"></xsl:valueof></td>
</tr>
<tr bgcolor="#33FF33" align="center">
<td colspan="4" width="610"> Total des points:
<xsl:value-of select="count(matche[@resultat= 'gagn'])*3+count(matche[@resultat=
'galit'])"></xsl:value-of>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
$tabEquipe[$x]->setEquipeb($l['0']);
}}}
$dom = new DOMDocument('1.0','utf-8');
$racine = $dom->createElement('equipe','');
$numero = $dom->createAttribute("numero");
$numero->value = $numeroEquipe;
$racine->appendChild($numero);
$nomEquipe = $dom->createAttribute("nom");
$result = $conn->Requete("select nomequipe from equipe where numero='".$numeroEquipe."' ");
while ($l = mysql_fetch_row($result))
{
$nomEquipe->value = $l['0'];
}
$racine->appendChild($nomEquipe);
header('Content-Type:text/xml');
for ($x=0; $x< count($tabEquipe); $x++)
{
$nMatche = $dom->createElement("matche");
$date = $dom->createAttribute("date");
$date->value = $tabEquipe[$x]->getDate();
$nMatche->appendChild($date);
$r = $dom->createAttribute("resultat");
$r->value = $tabEquipe[$x]->getResultat() ;
$nMatche->appendChild($r);
//
$adversaire = $dom->createElement("adversaire",$tabEquipe[$x]->getEquipeb());
$butsmarques = $dom->createElement("butsMarques",$tabEquipe[$x]->getButm());
$butsencaisses = $dom->createElement("butsEncaisses",$tabEquipe[$x]->getBute());
//
$nMatche->appendChild($adversaire);
$nMatche->appendChild($butsmarques);
$nMatche->appendChild($butsencaisses);
//
$racine->appendChild($nMatche);
}
$dom->appendChild($racine);
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();
Code source :
index.html
<html>
<head>
<script>
// chargement XML
function loadXMLDoc(filename,nomEquipe)
{
if (window.ActiveXObject)
{
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
36
else
{
xhttp = new XMLHttpRequest();
}
if(filename == 'equipes.xml' )
// xhttp.open("GET","listerEquipes.php", false);
xhttp.open("GET","listerEquipes.php", false);
else if(filename == 'equipes.xsl')
xhttp.open("GET", filename, false);
else if (filename == 'matches.xml')
xhttp.open("GET","matcheParEquipe.php?nomEq="+nomEquipe, false);
//xhttp.open("GET", filename, false);
else if(filename == 'matches.xsl')
xhttp.open("GET", filename, false);
try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11
xhttp.send("");
return xhttp.responseXML;
}
function chargerLalisteEquipe(){
xml = loadXMLDoc("equipes.xml",'');
xsl = loadXMLDoc("equipes.xsl",'');
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("listeEquipes").innerHTML = ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml, document);
document.getElementById("listeEquipes").appendChild(resultDocument);
}
}
function chargerLesMatches(nomEquipe){
xml = loadXMLDoc("matches.xml",nomEquipe);
xsl = loadXMLDoc("matches.xsl",'');
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("matchesParEquipe").innerHTML = ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
37
Application web :
38
Conclusion
La ralisation de ce TP a t trs enrichissante par la
diversit des techniques et langages de programmations qui y
ont t abords tout au long.
Ce travail nous a permis aussi de passer en vue et de toucher
la puissance de XML qui est devenu un langage
incontournable et indispensable au dveloppement d'une
application distribue.
39