“需要抑制”;警告:使用XSLT 2.0处理器运行XSLT 1.0样式表;in-Tomcat标准输出日志文件

“需要抑制”;警告:使用XSLT 2.0处理器运行XSLT 1.0样式表;in-Tomcat标准输出日志文件,xslt,suppress-warnings,Xslt,Suppress Warnings,我在当前项目中使用xslt转换。原始XSLT是以样式表1.0格式编写的。该项目在ApacheTomcat服务器上运行。在服务器的输出日志中,警告: Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor 正在不断地从Tomcat打印std输出日志。我尝试将样式表版本号更改为“2.0”,但我的项目的一部分在发送到transformer之后没有获得正确的数据。我希望修复此问题的唯一原因是日志文件占用了太多内存空间。那么,

我在当前项目中使用xslt转换。原始XSLT是以样式表1.0格式编写的。该项目在ApacheTomcat服务器上运行。在服务器的输出日志中,警告:

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

正在不断地从Tomcat打印std输出日志。我尝试将样式表版本号更改为“2.0”,但我的项目的一部分在发送到transformer之后没有获得正确的数据。我希望修复此问题的唯一原因是日志文件占用了太多内存空间。那么,有人知道如何抑制特定Tomcat服务器的警告吗?压制这一特定的警告将是首选,但任何意见都是非常感谢的。谢谢。

您不能用XSLT 1.0处理器运行转换吗

如果答案是否定的,那么使用XSLT 2.0处理器运行XSLT 1.0转换就不是一个好主意


我的建议是将
的版本属性更改为2.0,并调试代码
,以便生成正确的结果。这消除了向后兼容模式的警告和任何不良副作用(例如仍然使用XPath 2.0 XDM)

如果您使用的是Saxon 8+XSLT 2.0处理器,则在调用转换器时可以如下方式抑制此警告:

TransformerFactory tf = TransformerFactory.newInstance();
tf.setAttribute("http://saxon.sf.net/feature/version-warning", Boolean.FALSE);
Transformer t = tf.newTransformer();
t.transform(xmlSource, outputTarget);
XMLUnit.setXSLTVersion("2.0");
如果在XMLUnit中出现错误,可以将XSLT版本设置为2.0,如下所示:

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


对于命令行Saxon调用,按如下方式运行Saxon:
Saxon-versionmsg:off

来自@rustyx的答案是如果您使用的是Saxon API。如果您或其他人需要从命令行执行相同的操作,请添加以下选项:

-版本msg:关闭


如果样式表是使用XSLT版本1.0编写的,并且解析器基于XSLT 2.0,那么您将看到此警告消息。如果样式表是由您编写的,那么请尝试进行更改,使其与XSLT2.0兼容。但是,如果styesheet不是由编写的(在我的例子中,它不是由我编写的),那么最简单的解决方案是抑制警告,这样它就不会阻塞日志文件。要抑制此版本警告,必须将其设置为转换工厂的属性。FeatureKeys定义了一组非常有用的常量

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

我必须使用的处理器是2.0,但它是向后兼容的,因此它确实运行我的1.0 XSLT,我只想抑制警告,这样它就不会从Tomcat填充日志文件。使用XSLT 2.0处理器运行XSLT 1.0转换不是一个好主意。我建议将
version
属性更改为
2.0
,并调试代码,以便生成正确的结果。这消除了向后兼容模式的警告和任何不好的副作用(例如仍然使用XPath 2.0 XDM)。@user542447:我很高兴我的答案很有用。在这里,表达感激的既定方式是接受答案(只需点击答案旁边的复选标记即可)哦,对不起。我不知道。介意一点吗?如果您的样式表是使用XSLT 1.0版编写的,并且您的解析器基于XSLT 2.0,那么您将看到此警告消息。如果样式表是由您编写的,那么请尝试进行更改,使其与XSLT2.0兼容。但是,如果styesheet不是由编写的(在我的例子中,它不是由我编写的),那么最简单的解决方案是抑制警告,这样它就不会阻塞日志文件。要抑制此版本警告,必须将其设置为转换工厂的属性。FeatureKeys定义了一组非常有用的常量。使用“编辑”按钮修改答案将是增强答案的公认方法。;)你现在快乐吗?谢谢你让我知道。