--
PoulardPhilippe - 18 Mar 2004
TP : Transformations côté serveur
On va utiliser l'instance XML de
mon Zoo comme données de départ (voir soluce du TP du 15, celui qui contient les déclarations d'espaces de nommage).
L'ojectif est de faire une feuille de style qui transforme le document source XML en une version publiée en (X)HTML.
Tout se passe côté serveur (la semaine dernière, tout se passait côté client).
La différence est qu'on va avoir une plus grande maîtrise de la transformation en passant des paramètres à la feuille de style, par exemple.
Il faut donc faire une application Web avec Java/JSP et XML/XSLT.
Pour commencer avec Java et XSLT
- Créez une servlet qui instancie un template XSLT avec la feuille de style de la soluce du 15 (récupérer le dernier fichier XSLT). Appliquer la transformation au fichier XML, sérialiser directement vers la réponse pour le client.
- Organisez le code de votre servlet : la lecture de la feuille de style XSLT sera mise dans la méthode
init()
de votre servlet et sera partageable par l'application Web. La méthode doGet()
se chargera de créer un template à utiliser à chaque requête. On pourra passer un paramètre à la requête pour obtenir un tri de la table des matières différent (par date de naissance ou par ordre alphabétique); il faudra transmettre un paramètre à la feuille de style.
===> La soluce
Granularité de la transformation
La liste globale des animaux par date de naissance ou par ordre alphabétique n'est pas une bonne idée. On va plutôt s'orienter vers un affichage sélectif.
- On veut qu'une page JSP se charge de l'en-tête et du bas de page HTML. Créez la page JSP et modifiez la feuille de style et la servlet en conséquences; en particulier, on supprime le template qui matche la racine.
- On veut avoir un filtre sur les différentes espèces animales. Faites une autre feuille de style qui se contente de les lister. Chaque item de la liste sera un lien qui permet de passer un paramètre que le servlet récupère et interprète : on se positionne sur le noeud correspondant qu'on transforme.
===> La soluce
to top