2009-01-23 3 views
1

J'ai un code Java existant qui effectue une transformation XSLT par programme - à l'origine en utilisant Xalan. Je l'ai refactorisé pour pouvoir utiliser un autre TransformerFactory (configuré de manière externe).Comment puis-je modifier un code Java XSLT existant en utilisant Xalan pour utiliser Saxon et TinyTree?

J'ai essayé d'utiliser la version de Saxon (v6.5.3 et v8.7), mais je ne vois aucune amélioration de la performance, si Saxon est plus lent et utilise plus de mémoire que Xalan.

Je comprends que je pourrais obtenir un certain rendement dvantage en utilisant le Saxon TinyTree, mais ne peux pas comprendre comment faire avec ce code.

Mon code est de la forme;

TransformerFactory tf = (TransformerFactory) transformerFactoryClass.newInstance(); 
Transformer t = tf.newTransformer(pTransformFile); 
t.transform(new StreamSource(pSourceFile), new StreamResult(pTargetFile)); 

Où transformerFactoryClass 'est une instance de la classe TransformerFactory configuré
- org.apache.xalan.processor.TransformerFactoryImpl pour Xalan
- net.sf.saxon.TransformerFactoryImpl pour Saxon 8,7, et
- com.icl.saxon.TransformerFactoryImpl pour Saxon 6.5.3

Des suggestions?

+0

Im face même question que vous avez pu trouver moyen de forcer l'utilisation de tinyTree – soody

Répondre

1

Saxon 7 docs déduisent vous pouvez tf.setAttribute(net.sf.saxon.FeatureKeys.TREE_MODEL,Builder.TINY_TREE);

Cependant, ils disent aussi que c'est la valeur par défaut.

1

En fait, lorsque vous donnez à StreamSource Saxon, il doit utiliser par défaut TinyTree en interne. En ce qui concerne la vitesse: comme l'a dit l'auteur saxon, Xalan fait l'une des deux possibilités, selon la feuille de style: rapide ou correcte. Saxon fait toujours les choses correctement, ce qui dans certains cas signifie qu'il est plus lent. Une partie du problème est que la spécification XSLT 1.0 définit certaines choses à se comporter d'une manière qui est très difficile à optimiser correctement (mais plutôt plus facile si le changement de comportement n'est pas conforme). Pour ce que ça vaut, cependant, j'ai toujours trouvé que Saxon était aussi rapide ou plus rapide avec des feuilles de style plus compliquées. Xalan est souvent plus rapide pour les plus simples.

Enfin, Saxon a été optimisé beaucoup au fil du temps, alors assurez-vous d'utiliser une version plus récente (9.1 saxonne)

Questions connexes