Vous êtes sur la page 1sur 15

Application FIFA

Ralis Par :
Houssam hamsis Assmane abdessamad

Encadre Par :
Mr. YOUSSFI

Anne universitaire : 2011/2012

Sommaire
I. 1. Enonc du problme ................................................................................................................. 3 Reprsentation graphique de larbre XML : ....................................................................... 4 1.1. 1.2. 2. 3. 4. equipes.xml : ................................................................................................................ 4 matches.xml : ............................................................................................................... 5

DTD equipes.xml : ................................................................................................................ 5 XSD matches.xml : .............................................................................................................. 5 Connexion avec la base de donnes :.................................................................................... 7 4.1. 4.2. Table quipe : .............................................................................................................. 7 Table Matche : .............................................................................................................. 7

5. 6. 7. 8. 9. 10. 11. 12.

Code Source : ...................................................................................................................... 10 Code Source : ...................................................................................................................... 11 La feuille de style XSL :...................................................................................................... 12 La feuille de style XSL (2me) : ............................................................................................ 13 XSL qui permet de transformer le fichier XML en un document SVG :......................... 14 Web Service : .................................................................................................................. 14 Gnrer le SKELETON.................................................................................................. 15 client java pour le Web Service : .................................................................................... 15

I.

Enonc du problme

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 JSP ont t dploys dans le serveur web : - Le premier script nomm equipes.JSP , 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.JSP , permet de se 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 l arbre XML des deux fichiers equipes.xml et matches.xml . 2. Ecrire une DTD qui permet de dclarer la structure du premier fichier XML equipes.xml 3. Ecrire 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 par les quipes. 5. Ecrire le code java d une 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 d une quipe et de gnrer un fichier XML qui contient les matches jous par cette quipe.

7. Ecrire une feuille de style XSL qui permet de transformer le fichier XML en une liste droulante HTML qui contient toutes les quipes. 8. 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, l adversaire, 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 : y Le nombre total de buts marqus y Le nombre total de buts encaisss y Le nombre de matches jous y Le nombre de matches gagn. y Le nombre de matches nuls y Le nombre de matches perdus y Le total des points. 9. Ecrire 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. 10. Crer un web service qui permet de : y Consulter toutes les quipes y Consulter les matches jous par une quipe. 11. Tester le web service avec Oxygen 12. Crer un client java pour le web service.

1. Reprsentation graphique de larbre XML :


1.1. equipes.xml :

1.2.

matches.xml :

2. DTD equipes.xml : <?xml version="1.0" encoding="UTF-8"?> <!ELEMENT equipes (equipe+) > <!ELEMENT equipe EMPTY > <!ATTLIST equipe numero CDATA #REQUIRED nom_equipe CDATA #REQUIRED score CDATA #REQUIRED > 3. XSD matches.xml : <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="TMatch"> <xs:sequence> <xs:element name="adversaire" type="xs:string"/> <xs:element name="butsMarques" type="xs:int"/> <xs:element name="butsEncaisses" type="xs:int"/> </xs:sequence> <xs:attribute name="date" type="xs:date"/> <xs:attribute name="resultat" type="xs:string"/> </xs:complexType>

<xs:complexType name="TEquipe"> <xs:sequence> <xs:element name="match" type="TMatch"/> </xs:sequence> <xs:attribute name="numEquipe" type="xs:string"/> <xs:attribute name="nom"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Maroc"/> <xs:enumeration value="Tunisie"/> <xs:enumeration value="Algrie"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> <xs:element name="equipe" type="TEquipe"/> </xs:schema>

Schma conceptuelle :

4. Connexion avec la base de donnes : Try{ Class.forName( con.mysql.jdbc.Driver ) ; Connectionconn=DriverManager.getConection(jdbc:mysql://localhost:3306/Nom_Bd,root, Statement st=conn.createstatement(); ResultSet Rs=st.executequery(select*from equipe); While(Rs.next()){ System.out.println(Rs.getString(Nom_Colonne); } } Catch(exception e){ e.printstacketrace() ; }
4.1. Table quipe :

);

4.2.

Table Matche :

Scripte de la base de donnes :

-- phpMyAdmin SQL Dump -- version 3.2.1 -- http://www.phpmyadmin.net --- Serveur: localhost -- Gnr le : Mar 27 Dcembre 2011 12:19 -- Version du serveur: 5.1.37 -- Version de PHP: 5.2.10 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; --- Base de donnes: `fifa` --- ---------------------------------------------------------- Structure de la table `equipe` -CREATE TABLE IF NOT EXISTS `equipe` ( `NUMERO` varchar(3) NOT NULL,

`NOMEQUIPE` varchar(20) NOT NULL, `SCORE` int(2) NOT NULL, PRIMARY KEY (`NUMERO`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; --- Contenu de la table `equipe` -INSERT INTO `equipe` (`NUMERO`, `NOMEQUIPE`, `SCORE`) VALUES ('E1', 'Maroc', 540), ('E2', 'Algrie', 480), ('E3', 'Tunisie', 580); -- --------------------------------------------------------

--- Structure de la table `match` -CREATE TABLE IF NOT EXISTS `match` ( `IDMATCH` int(4) NOT NULL AUTO_INCREMENT, `IDEQUIPLOCAL` varchar(2) NOT NULL, `IDEQUIPADVERS` varchar(2) NOT NULL, `DATEMATCH` date NOT NULL, `RESULT` int(2) NOT NULL, `BUTMARQUE` int(2) NOT NULL, `BUTENCAISSE` int(2) NOT NULL, PRIMARY KEY (`IDMATCH`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; --

-- Contenu de la table `match`

5. Code Source :
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.StatementEvent;

public class Equipes { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/FIFA","root",""); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from equipe"); System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); System.out.println("<equipes>"); while (rs.next()){ System.out.println("<equipe numero = \"" +rs.getString("numero") + "\"" + " nomEquipe=\""+rs.getString("nom")+"\""+" score=\""+rs.getString("score")+"\" </equipe>"); } System.out.println("</equipes>"); } }

Rsultat :

6. Code Source :
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; import javax.sql.StatementEvent;

public class matches { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/FIFA","root",""); Statement st = conn.createStatement(); Scanner s = new Scanner(System.in); System.out.println(" Entrer une Equipe "); String equipe = s.next(); ResultSet rs = st.executeQuery("select * from matche where nom = '"+equipe+"'"); System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); while (rs.next()){ System.out.println("<equipe numEquipe=\""+rs.getString("numEquipe") +"\""+ " nom = \""+rs.getString("nom")+"\" >"); while (rs.next()){ System.out.println("<matche date = \"" +rs.getString("date") + "\"" + " resultat=\""+rs.getString("resultat")+"\" </matche>"); System.out.println("<Adversaire> "+rs.getString("adversaire") + " </Adversaire>" ); System.out.println("<butsmarques> "+rs.getString("butsmarques") + " </butsmarques>" );

System.out.println("<butsEncaisses> "+rs.getString("butsEncaisses") + " </butsEncaisses>" ); } System.out.println("</equipe>"); } } }

Rsultat :

7. La feuille de style XSL : <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <select name="equipe" > <xsl:for-each select="equipes/equipe"> <xsl:variable name="a" select="@nomEquipe"></xsl:variable> <option value="{$a}"> <xsl:value-of select="@nomEquipe"/> </option> </xsl:for-each> </select>

</xsl:template> </xsl:stylesheet> 8. La feuille de style XSL (2me) : <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <table border="1"> <tr> <th>Date</th><th>Adversaire</th><th>Buts Marqus</th><th>Buts Encaisss</th><th>Le nombre de points</th> </tr> <xsl:for-each select="equipe/matche"> <tr> <td><xsl:value-of select="@date"/></td> <td><xsl:value-of select="adversaire"/></td> <td><xsl:value-of select="butsmarques"/></td> <td><xsl:value-of select="butencaisses"/></td> <td> <xsl:if test="@resultat='gagne'" > 3 </xsl:if> <xsl:if test="@resultat='perdu'" > 0 </xsl:if> <xsl:if test="butsmarques=butencaisses" > 1 </xsl:if> </td> </tr> </xsl:for-each> </table> <ul> <li> Le nombre total de buts marqus : <xsl:value-of select="sum(equipe/matche/butsmarques)"/></li> <li> Le nombre total de buts encaisss : <xsl:value-of select="sum(equipe/matche/butencaisses)"/></li> <li> Le nombre de matches jous : <xsl:value-of select="count(equipe/matche)"/></li> <li> Le nombre de matches gagn. : <xsl:value-of select="count(equipe/matche[@resultat='gagne'])"/></li> <li> Le nombre de matches nuls : <xsl:value-of select="count(equipe/matche[butencaisses=butsmarques])"/></li> <li> Le nombre de matches perdus : <xsl:value-of select="count(equipe/matche[@resultat='perdu'])"/></li> <li> Le total des points. : 3 </li> </ul>

</xsl:template> </xsl:stylesheet>

9. XSL qui permet de transformer le fichier XML en un document SVG : <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <svg height="900" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0"> <text x="10" y="50" font-size="30"> Le score des quipes : </text> <xsl:for-each select="equipes/equipe"> <xsl:variable name="pos" select="position()"></xsl:variable> <xsl:variable name="temp" select="@score"></xsl:variable> <text x="{$pos*80}" y="720" font-size="20"> <xsl:value-of select="@nomEquipe"/> </text> <rect width="10" height="{$temp}" x="{$pos*80}" y="{700-$temp}" fill="yellow" stroke="blue"> <animate attributeName="height" dur="2s" from="0" to="{$temp}"></animate> </rect> </xsl:for-each> </svg> </xsl:template> </xsl:stylesheet>

10. Web Service :

Pakage ws; @webService(serviceName= fifaService ) Public class FifaService{ Private FifaMetier mtier=new FifaMetier(); @WebMethod Public List<Equipe> consultEquipes() { Return mtier.getAllEquipes();}

@WebMethod Public List<Equipe> consultMtches(@webParam(name= numero , (@webParam(name= numequipe )) { Return mtier.getMatches(num equipe);}

11. Gnrer le SKELETON .......... /src>wsgen s . wsdl cp ../bin.FIFAService 12. client java pour le Web Service :

Public class ServeurJaxWs{ Public static void main(String args){ String url=http://localhost:8585/ EndPoint.publish(url,new FifaService());}}) }

Vous aimerez peut-être aussi