2010-12-14 7 views
9

Ich verwende XSLT-Transformationen für mein aktuelles Projekt. Die ursprünglichen xslts wurden im Format Stylesheet 1.0 geschrieben. Das Projekt wird auf dem Apache Tomcat Server ausgeführt. In den Ausgabeprotokolle vom Server, die Warnung:"Warnung: Ausführen eines XSLT 1.0-Stylesheet mit einem XSLT 2.0-Prozessor" in Tomcat-Standardprotokolldatei

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

druckt ständig mit dem std aus Protokollen von Tomcat. Ich habe versucht, die Stylesheet-Versionsnummer auf "2.0" zu ändern, aber Teile meines Projekts erhalten nicht die richtigen Daten nach der Umwandlung in den Transformator. Der Grund, warum ich dieses Problem beheben möchte, ist, dass die Protokolldatei zu viel Speicherplatz belegt. Kann jemand die Warnung für spezifischen Tomcat Bediener unterdrücken? Es wäre wünschenswert, diese eine spezifische Warnung zu unterdrücken, aber jede Meinung wird sehr geschätzt. Vielen Dank.

Antwort

11

Können Sie die Transformation nicht mit einem XSLT 1.0-Prozessor ausführen? Wenn die Antwort negativ ist, ist es keine gute Idee, eine XSLT 1.0-Transformation mit einem XSLT 2.0-Prozessor auszuführen.

Meine Empfehlung ist, das Versionsattribut <xsl:stylesheet> zu 2.0 zu ändern und den Code zu debuggen, damit die richtigen Ergebnisse erzeugt werden. Dies beseitigt die Warnung und auch alle schlechten Seiteneffekte des Rückwärtskompatibilitätsmodus (wie zum Beispiel die Verwendung des XPath 2.0 XDM).

+0

Prozessor, die ich verwenden ist 2.0, aber es ist rückwärtskompatibel, so dass es meine 1,0 XSLTs laufen wird, ich möchte nur, um die Warnung zu unterdrücken, damit es nicht die Protokolldateien von Tomcat bevölkern ist. – user542447

+0

Es ist keine gute Idee, eine XSLT 1.0-Umwandlung mit einem XSLT 2.0-Prozessor auszuführen. Meine Empfehlung, das Attribut 'version' von' 'in' 2.0' zu ändern und den Code zu debuggen, damit die richtigen Ergebnisse erzeugt werden. Dies beseitigt die Warnung und auch alle schlechten Seiteneffekte des Rückwärtskompatibilitätsmodus (wie zum Beispiel die Verwendung des XPath 2.0 XDM). –

+0

Danke Dimitre. – user542447

5

Falls Sie Saxon 8+ XSLT 2.0 Prozessor verwenden, können Sie diese Warnung unterdrücken, wenn der Transformator wie dieser Aufruf:

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

Falls Sie den Fehler in XMLUnit fühlt, kann eingestellt werden, XSLT-Version 2.0 wie folgt aus:

XMLUnit.setXSLTVersion("2.0"); 

Hinweis:

Für Kommandozeilen-Saxon Aufruf, laufen Saxon wie folgt aus: saxon -versionmsg:off

2

Die Antwort von @rustyx ist, ob Sie die Saxon-API verwenden. Gerade falls Sie oder ein anderes, das gleiche von der Kommandozeile muss, fügen Sie die Option:

-versionmsg: off

1

Wenn Ihr Sheet geschrieben wird mit Hilfe von XSLT-Version 1.0 und Ihren Parser basiert auf XSLT 2.0, dann wird diese Warnmeldung angezeigt. Wenn das Stylesheet von Ihnen geschrieben wurde, versuchen Sie, Änderungen vorzunehmen, damit es mit XSLT 2.0 kompatibel ist. Aber wenn das Stylesheet nicht von mir geschrieben wird (in meinem Fall wurde es nicht von mir geschrieben), dann wäre die einfachste Lösung, die Warnung zu unterdrücken, damit Ihre Log-Dateien nicht aufgebläht werden. Um diese Versionswarnung zu unterdrücken, müssen Sie sie als Attribut für die Transformationsfactory festlegen. FeatureKeys definiert eine Reihe von Konstanten, die sehr hilfreich sind.

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

Lust auf [erklären Sie Ihre Lösung] (http://stackoverflow.com/help/how-to-answer) ein bisschen? –

+0

Wenn Ihr Stylesheet mit XSLT Version 1.0 geschrieben wurde und Ihr Parser auf XSLT 2.0 basiert, wird diese Warnmeldung angezeigt. Wenn das Stylesheet von Ihnen geschrieben wurde, versuchen Sie, Änderungen vorzunehmen, damit es mit XSLT 2.0 kompatibel ist. Aber wenn das Stylesheet nicht von mir geschrieben wird (in meinem Fall wurde es nicht von mir geschrieben), dann wäre die einfachste Lösung, die Warnung zu unterdrücken, damit Ihre Log-Dateien nicht aufgebläht werden. Um diese Versionswarnung zu unterdrücken, müssen Sie sie als Attribut für die Umwandlungsfactory festlegen. FeatureKeys definiert eine Reihe von Konstanten, die sehr hilfreich sind. – sri

+0

Das Ändern Ihrer Antwort mit der Schaltfläche "Bearbeiten" wäre die akzeptierte Methode, um eine Antwort zu verbessern. ;) –