190 likes | 297 Views
Projets M1 XML, Objets. Projets XML Programmation objet D.O.M. Université Paris II & LRI Michel de Rougemont mdr@lri.fr http://www.lri.fr/~mdr. Projets:. Présentation Objectif Quels services? Quels usagers? Schéma de la Base de données Mysql Combien de tables
E N D
Projets M1XML, Objets. • Projets • XML • Programmation objet • D.O.M. Université Paris II & LRI Michel de Rougemont mdr@lri.fr http://www.lri.fr/~mdr
Projets: • Présentation • Objectif • Quels services? • Quels usagers? • Schéma de la Base de données Mysql • Combien de tables • Structures des tables • Architecture HTML • Page d’index, pages principales, liens • Feuilles de style • Scripts PHP • Liens entre page HTML et Base de données.
Exemple : gestion de résultats de compétition sportive • Présentation: • offrir la possibilité de gérer des résultats de compétitions de sport. Afficher les résultats sur une page par sport. • Possibilité de s’abonner aux résultats : envoi hebdomadaire. • Schéma B.D. • Table R ( sport, lieu, date, e1,e2,score…) • Table L (nom, email, sport) • Architecture HTML • Sélection sport sur page d’index • Abonnement: lien de la page d’index vers une nouvelle page • Entrer de nouveaux résultats sur la page de chaque sport. • Feuilles de style : Menu colonne gauche. • Select/option pour chaque sport. • Scripts PHP • Insertion d’un formulaire abonnement vers L • Affichage de R sur la page de chaque sport par sélection du sport
Gestion de résultats de compétition sportive sur monsite.free.fr • Présentation: • Powerpoint • Schéma B.D. • Powerpoint et MYSQL (via query.php) • Architecture HTML • Powerpoint : Arborescence et liens • Fichiers sur monsite.free.fr • Scripts PHP • Powerpoint : fonction des scripts • Réalisation sur monsite.free.fr Itérations chaque semaine
XML Séparation de: Structure (DTD) Style d’affichage (XSL) Données brutes (XML) s1.xml, s2.xml, s3.xml dans XSL.ZIP <?xml version='1.0' ?> <!DOCTYPE livre SYSTEM 'livre.dtd' [ <!ENTITY ionesco SYSTEM 'ionesco.xml'>]> <?xml:stylesheet type="text/xsl" href="s1.xsl"?> <livre> &ionesco; </livre>
XML : la DTD • DTD : Document Type Definition • Fichier livre.dtd <?xml version='1.0' ?> <!ELEMENT livre (chapitre*,titre,auteur)> <!ELEMENT chapitre (titre,para*)> <!ELEMENT titre (#PCDATA)> <!ELEMENT para (#PCDATA)> <!ELEMENT auteur (#PCDATA)> Structure du document : Plusieurs chapitres, un titre, un auteur
XSL : feuilles de styleRègles de traduction en HTML s1.xsl <?xml version='1.0' ?> <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> <xsl:template match='/'> <xsl:apply-templates/></xsl:template> </xsl:stylesheet> s2.xsl <?xml version='1.0' ?> <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> <xsl:template match='/'> <xsl:apply-templates/> </xsl:template> <xsl:template match='chapitre/titre'> <h1><xsl:value-of select='.'/></h1> </xsl:template> </xsl:stylesheet>
XSL : s3.xsl ?xml version="1.0"?><xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> <xsl:output method='xml' indent='yes' standalone='yes'/> <!-- racine --> <xsl:template match='/'> <html><head></head><body> <xsl:apply-templates mode='sommaire' select='livre' /> <hr/> <xsl:apply-templates mode='document' select='livre/chapitre' /></body></html> </xsl:template> <!-- mode sommaire --> <xsl:template mode='sommaire' match='livre'> <h1><xsl:value-of select='titre' /></h1> <xsl:value-of select='auteur' /> <hr/> <xsl:apply-templates mode='sommaire' select='chapitre'></xsl:apply-templates> </xsl:template> <!-- affichage des titres de chapitre --> <xsl:template mode='sommaire‘ match='chapitre'> <h2><xsl:number/> -<xsl:value-of select="titre" /></h2</xsl:template> …… </xsl:stylesheet>
Données : ionesco.xml <chapitre> <titre>Expérience du théâtre</titre> <para>Quand on me pose la question : « Pourquoi écrivez vous des pièces de théâtre ? » je me sens toujours très embarrasé, je ne sais quoi répondre. Il me semble parfois que je me suis mis à écrire du théâtre parce que je le détestais. Je lisais des œuvres littéraires, des essais, j'allais au cinéma avec plaisir. J'écoutais de temps à autre de la musique, je visitais les galeries d'art, mais je n'allais pour ainsi dire jamais au théâtre. </para></chapitre> <chapitre><titre> Controverses et témoignages</titre> <para>Je suis paraît-il, un auteur dramatique d'avant-garde. La chose me paraît même évidente puisque je me trouve ici, aux entretiens sur le théâtre d'avant-garde. Cela est tout à fait officiel. </para> <para>Maintenant, que veut dire avant-garde ? Je ne suis pas docteur en théâtralogie, ni en philosophie de l'art, à peine ce qu'on appelle un homme de théâtre. </para></chapitre> <titre>Notes et contre-notes</titre><auteur>Eugène Ionesco</auteur>
Structure O.O Page 130-144 du livre de P. Rigaux Objets et classes: • Contenu d’un formulaire • Figure géométrique • Nœud d’un fichier XML Méthodes : fonctions de la classe • Création d’un objet • Manipulation de l’objet
Exemple simple Classe Personne • Nom • Société Méthodes : • Création d’un object • Affichage de l’objet
Exemple et représentation Java Classe Rectangle • Point (x,y) • Hauteur, Largeur Méthodes : • Création d’un rectangle • Affichage d’un rectangle class Rectangle{ int x; int y; int h; int l; public Rectangle(int x, int y, int h, int l){ this.x=x; this.y=y; this.l=l this.h=h;} public void draw(){ System.out.println(……);} public static void main(String args[]){ Rectangle r1=new Rectangle(5,5,10,10); Rectangle r2=new Rectangle(0,0,10,10); r1.draw(); r2.draw();} } Constructeur Main
Réalisation Java Fichier Rectangle.java Compilation : javac Rectangle.java Produit Rectangle.class Exécution : java Rectangle Exemple : programme Hello. class Hello{ public static void main(String args[]){ System.out.println( « Bonjour »);} }
Classe Formulaire du livre Classe Formulaire Méthodes : fonctions de la classe • Création d’un formulaire • Affichage de l’objet • Transmission de l’objet Instructions: $form =new Formulaire (…..); $form->champs=« xxxx »;
Classes XML : DOM Classes Document, Node,…. Programme: AjoutAnnuaire // à un document // Import des classes Java import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.xalan.serialize.*; class AjoutAnnuaire {static String nom, prenom, email; public static void main (String args []) {nom = args[0]; prenom = args[1];email = args[2]; if ( (nom != null) && (nom.length() > 0) && (prenom != null) && (prenom.length() > 0) && (email != null) && (email.length() > 0)) { try { // Instanciation du parseur File fdom = new File ("Annuaire.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // Analyse du document Document dom = builder.parse(fdom); Node elementRacine = dom.getDocumentElement(); // ajoutElement (dom, nom, prenom, email); System.out.println ("Ajout de " + prenom + " " + nom + ". Email : " + email); // Création du nouvel élément Element elPersonne = dom.createElement ("PERSONNE"); // Ajout des trois fils elPersonne.appendChild (creerElementTexte(dom, "NOM", nom)); elPersonne.appendChild (creerElementTexte(dom, "PRENOM", prenom)); elPersonne.appendChild (creerElementTexte(dom, "EMAIL", email)); // Ajout du nouvel élément elementRacine.appendChild (elPersonne); ……………….
Importance de XML Standard de documents. • Conception • Echange (EDI) Applications aux documents texte: • Archives d’un journal • Documents non structurés Documents Multimédia: • Audio • Vidéo • Rechercher un segment, un objet…
T.D. • Finir les stratégies PHP • Formulation du projet M1 • Pour les projets informatiques • D.O.M en XML • Structure orientée objet • Langage C • Extensions C++ et Java
Projets • Outil query.php • Afficher le schéma des tables dans une nouvelle fenêtre. • Feuilles de style dans l’affichage. • Outil FG ( f.php et g.php) pour éviter FTP. • Concevoir une table à 3 champs Nom, type, Programme Qui va stocker dans programme les scripts à tester. Le script f.php lit un Nom et permet d’éditer le programme ou de l’exécuter avec eval($p) ;
Projet XML • Correcteur XML • PHP with dom • Java with dom • Interface pour naviguer dans un arbre XML • Implémentation du correcteur