Une leçon d’humilité
Des fois, ça m’arrive de fouiller un tutoriel vite vite pour trouver comment faire quelque chose de bein spécifique. Je trouve ce que je cherche, ça marche et je fouille pas plus loin. Pis làs je copie / collle le même truc d’un projet a l’autre, j’ajoute un peu de crémage dessus mais je ne retourne pas à la source. Tel était jusqu’à aujourd’hui l’usage que je faisait de XSLT en Java. TransformerFactory / transformer / transform et bang HTML. Hors aujourd’hui un gars avec qui je travailles en ce moment (Jeremy sans blog ni page perso) m’a fait remarquer que l’on pouvait passer des paramêtres au xslt avant la transformation (en php). Du coup je me dit; je programme en Java c’est bein mieux (Je suis un tantinet snobish envers php) alors c’est surement possible avec Xalan. Men wow quel découverte!!!
Non seulement c’est possible mais il y a tout un monde a découvrir avec les extension dans Xalan (les extension font partie de la spec du W3C pour xslt). Non seulement on peut passer des paramètres aux xslt mais en plus on peut, du xslt, invoquer n’importe quoi en java. C’est vraiment cool. Si seulement javais lu la doc un peu plus je me serait sauver tellement de casse pied avec ça!
Seul truc vraiment important a garder a l’esprit les paramètres sont passer au Transformer; c’est à dire après la lecture et le parsing du xslt. Il faut donc faire attention a ne pas reparser le xslt pour changer les paramètres ni garder un Transformer et lui faire transfromer plusieur xml en changeant les paramètes sans le synchroniser. Je suppose que vous savez que la création d’un Transformer coute cher. Voici quelque truc a lire si ça vous intéresses:
un bon article : http://www.javaworld.com/javaworld/jw-12-2001/jw-1221-xslt.html?page=1
Chapitre d’un bouquin par o’reilly :
http://www.onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=1
La doc de Xalan-j sur les extensions (Je recommande pas de faire du sql dans du xslt):
http://xml.apache.org/xalan-j/extensions.html