2010-12-14 53 views
9

J'utilise des transformations xslt sur mon projet actuel. Les xslts d'origine ont été écrits au format de la feuille de style 1.0. Le projet est exécuté sur le serveur Apache Tomcat. Dans les journaux de sortie du serveur, l'avertissement:Nécessité de supprimer "Avertissement: exécution d'une feuille de style XSLT 1.0 avec un processeur XSLT 2.0" dans le fichier journal std out Tomcat

Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor 

est l'impression en permanence à l'std des journaux de Tomcat. J'ai essayé de changer le numéro de version de feuille de style en "2.0" mais des parties de mon projet n'obtiennent pas les données correctes après le au transformateur. La seule raison pour laquelle je souhaite résoudre ce problème est que le fichier journal occupe trop d'espace mémoire. Est-ce que quelqu'un sait comment supprimer l'avertissement pour un serveur Tomcat spécifique? Suppression de cet avertissement spécifique serait préférable, mais toute opinion est très appréciée. Je vous remercie. Vous ne pouvez pas exécuter la transformation avec un processeur XSLT 1.0?

Répondre

11

Si la réponse est négative, alors il n'est pas une bonne idée d'exécuter une transformation XSLT 1.0 avec un processeur XSLT 2.0.

Ma recommandation est de changer l'attribut de version de <xsl:stylesheet> en 2.0 et de déboguer le code afin que les bons résultats soient produits. Cela élimine l'avertissement et les effets secondaires négatifs du mode de compatibilité ascendante (comme l'utilisation de XPath 2.0 XDM).

+0

Processeur que je dois utiliser est de 2,0, mais il est rétrocompatible donc il ne fonctionne mes 1.0 XSLT, je voudrais simplement supprimer l'avertissement de sorte qu'il ne remplit pas les fichiers journaux de Tomcat. – user542447

+0

Ce n'est pas une bonne idée d'exécuter une transformation XSLT 1.0 avec un processeur XSLT 2.0. Ma recommandation de changer l'attribut 'version' de' 'en' 2.0' et de déboguer le code afin que les résultats corrects soient produits. Ceci élimine l'avertissement et aussi tout effet secondaire négatif du mode de compatibilité ascendante (comme utiliser toujours le XPath 2.0 XDM). –

+0

Merci Dimitre. – user542447

5

Si vous utilisez le processeur XSLT Saxon 8+ 2.0, vous pouvez supprimer cet avertissement lors de l'appel du transformateur comme celui-ci:

TransformerFactory tf = TransformerFactory.newInstance(); 
tf.setAttribute("http://saxon.sf.net/feature/version-warning", Boolean.FALSE); 
Transformer t = tf.newTransformer(); 
t.transform(xmlSource, outputTarget); 

Si vous obtenez l'erreur dans xmlunit, vous pouvez définir version 2.0 XSLT comme ceci:

XMLUnit.setXSLTVersion("2.0"); 

note:

pour invocation saxonne de ligne de commande, exécutez saxonne comme ceci: saxon -versionmsg:off

2

La réponse de @rustyx est si vous utilisez l'API Saxon. Juste au cas où vous, ou un autre, a besoin de la même chose de la ligne de commande, ajoutez l'option:

-versionmsg: off

1

Si votre feuille de style est écrit en utilisant la version XSLT 1.0 et votre analyseur est basé sur XSLT 2.0, alors vous verrez ce message d'avertissement. Si la feuille de style est écrite par vous alors essayez d'apporter des modifications afin qu'elle soit compatible avec XSLT 2.0. Mais si le styesheet n'est pas écrit par (dans mon cas, il n'a pas été écrit par moi), alors la solution la plus simple serait de supprimer l'avertissement, afin qu'il ne gonfle pas vos fichiers journaux. Pour supprimer cet avertissement de version, vous devez le définir en tant qu'attribut à la fabrique de transformation. FeatureKeys définit un ensemble de constantes qui sont très utiles.

TransformerFactory tFactory = TransformerFactory.newInstance(); 
tFactory.setAttribute(FeatureKeys.VERSION_WARNING, Boolean.FALSE); 
+0

Attention à [expliquer votre solution] (http://stackoverflow.com/help/how-to-answer) un peu? –

+0

Si votre feuille de style est écrite à l'aide de la version 1.0 de XSLT et que votre analyseur est basé sur XSLT 2.0, vous verrez ce message d'avertissement. Si la feuille de style est écrite par vous alors essayez d'apporter des modifications afin qu'elle soit compatible avec XSLT 2.0. Mais si le styesheet n'est pas écrit par (dans mon cas, il n'a pas été écrit par moi), alors la solution la plus simple serait de supprimer l'avertissement, afin qu'il ne gonfle pas vos fichiers journaux. Pour supprimer cet avertissement de version, vous devez le définir en tant qu'attribut à la fabrique de transformation. FeatureKeys définit un ensemble de constantes qui sont très utiles. – sri

+0

La modification de votre réponse à l'aide du bouton Modifier serait le moyen accepté d'améliorer une réponse. ;) –