如何在eXist-db中正确配置Saxon以抑制模糊匹配警告?
在eXist-db 6.0.1中配置Saxon-PE 9.9.1.8J抑制模糊匹配警告的正确方法
你之前在conf.xml里配置的version-warning和recoveryPolicyName特性,和命令行-warnings:silent控制的不是同一类警告——前者分别负责关闭版本提示、设置错误恢复策略,而模糊匹配警告属于Saxon的通用警告范畴,需要通过以下方法配置:
方法一:全局配置(通过Saxon配置文件)
- 创建一个Saxon配置文件(比如命名为
saxon-config.xml),内容如下:
<configuration xmlns="http://saxon.sf.net/ns/configuration" edition="PE"> <warnings>silent</warnings> </configuration>
- 将该文件放在eXist-db可访问的路径下(比如eXist安装目录的
conf文件夹)。 - 修改
conf.xml中的Transformer配置,添加指定配置文件的属性:
<transformer class="net.sf.saxon.TransformerFactoryImpl" caching="yes"> <attribute name="http://saxon.sf.net/feature/config-file" value="/path/to/eXist/conf/saxon-config.xml" type="string"/> </transformer>
注意替换/path/to/eXist/conf/为你实际的文件路径。
方法二:动态配置(针对特定XQuery)
如果不需要全局生效,可在XQuery代码中动态设置Saxon的警告级别:
declare namespace saxon="http://saxon.sf.net/"; declare variable $config := saxon:get-configuration(); saxon:set-configuration-property($config, 'warnings', 'silent')
将这段代码放在你的查询开头,执行时会临时调整当前上下文的Saxon配置。
方法三:通过JVM启动参数全局生效
修改eXist-db的启动脚本(如startup.sh或startup.bat),添加JVM系统参数:
-Dsaxon.warnings=silent
重启eXist-db后,所有使用Saxon的操作都会抑制模糊匹配警告。
内容的提问来源于stack exchange,提问作者lschult2
相关产品推荐
相关产品推荐

