EsupPortail / esup-lecture

4 stars 4 forks source link

Change xslt processor #4

Open jgribonvald opened 12 years ago

jgribonvald commented 12 years ago

Il serait bien de pouvoir définir un autre xslt processor que JAXB qui est très basique et qui n'intègre pas les fonctions exslt, de plus cela n'utilise que la version 1.0 de xslt.

Je veux bien pousser des modifications par rapport à cela, mais il faudrait discuter de ce que faudrait faire, je ne veux pas effectuer trop de modifications s'il faut revenir en arrière ou si la soultion choisie n'est pas la bonne.

Actuellement il existerait 3 types principaux de xslt processor, JAXB/JAXP, XALAN et SAXON. Que choisir et quoi faire ?

J'aurais tendance à dire que pour faire au mieux il faudrait que ce soit paramètrable en fonction de la feuille xsl à utiliser, donc que l'on puisse choisir la librairie à utiliser en définissant la classe d'appel dans le fichier de configuration mappings.xml.

Pour expliquer l'utilisation de telle ou telle lib il faudrait simplement dans src/main/java/org/esupportail/lecture/domain/model/Source.java éditer la méthode xml2html, uniquement sur cette ligne : TransformerFactory tFactory = TransformerFactory.newInstance(); de cette façon : TransformerFactory tFactory = TransformerFactory.newInstance(xsltProcessorClass, Thread.currentThread().getContextClassLoader()); CF ici : http://docs.oracle.com/javase/6/docs/api/javax/xml/transform/TransformerFactory.html#newInstance%28java.lang.String,%20java.lang.ClassLoader%29

ou xsltProcessorClass est de type String avec les valeurs suivantes : pour JAXB/JAXP : xsltProcessorClass=""; // j'ai peut être un doute sur ce point pour xalan : xsltProcessorClass="org.apache.xalan.processor.TransformerFactoryImpl"; // il y a plusieurs type de processeur proposés pour saxon : xsltProcessorClass = "net.sf.saxon.TransformerFactoryImpl"

Bien évidemment il faudra fournir les librairies des processeur xslt que nous souhaiterons utiliser.

Qu'en pensez vous ? Il y a différentes façons de procéder on peut très bien fixer l'utilisation à une seule lib.

raymondBourges commented 11 years ago

Julien voici mes remarques :