Aucun titre de diapositive

publicité
Université Paris II & LRI
Michel de Rougemont
[email protected]
http://www.lri.fr/~mdr
Projets M1
XML, Objets.
1.
2.
3.
4.
Projets
XML
Programmation objet
D.O.M.
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 style
Rè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.
1. Finir les stratégies PHP
2. Formulation du projet M1
3. Pour les projets informatiques
•
•
•
•
D.O.M en XML
Structure orientée objet
Langage C
Extensions C++ et Java
Projets
1. Outil query.php
•
•
Afficher le schéma des tables dans
une nouvelle fenêtre.
Feuilles de style dans l’affichage.
2. 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
1. Correcteur XML
• PHP with dom
• Java with dom
•
•
Interface pour naviguer dans un
arbre XML
Implémentation du correcteur
Téléchargement