TP Web/XML
Transformations XSLT côté serveur
 |
Réponses
Les réponses sont affichées dans ce style là.
|
Troubleshooting
Selon les versions de Tomcat/JDK utilisés, des problèmes de compilation de feuille de style XSLT peuvent survenir
(le processeur XSLT Xalan compile les stylesheet en bytecode Java, mais une version du générateur pose des problèmes).
Le cas échéant, télécharger la dernière version de Xalan et déposez les
librairies xalan.jar, serialize.jar, and xsltc.jar dans le répertoire
$TOMCAT_HOME/shared/lib/ (Tomcat 5.5) ou $TOMCAT_HOME/lib/ (Tomcat 6).
Autres problèmes Java décrits ici.
On dispose d'un document XML et de sa DTD qui utilise une entité.
Le document XML décrit les animaux d'un Zoo. L'objectif est de faire une application Web qui transforme le document source XML en une version publiée en (X)HTML avec XSLT. Tout se passe côté serveur (dans un précédent tépé, 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 réaliser une application Web avec Java/JSP et XML/XSLT (JAXP/TRAX).
Pour commencer avec Java et XSLT
- Créez une servlet qui instancie un template XSLT avec cette feuille de style, cette autre, et ces ressources. Appliquer la transformation au fichier XML, sérialiser directement vers la réponse pour le client. On utilisera ce descripteur d'application Web et on se basera sur ce squelette Java.
Application Web.
- 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 contentera 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.
Application Web.
Contrôle de la 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.
Application Web.
- 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 cette liste sera un lien qui permet de passer un paramètre que la servlet récupère et interprète pour se positionner sur le noeud correspondant qu'on transforme. De cette manière, seuls les animaux de l'espèce sélectionnée seront affichés.
Application Web.