贝利信息

Java XSLT转换时如何传递参数 Transformer.setParameter

日期:2025-12-30 00:00 / 作者:星降
Transformer.setParameter()是Java中向XSLT传递参数的标准方式,需在XSLT中用声明同名参数,调用前设置且名称严格匹配;支持String、Boolean等基本类型,null会回退默认值;带命名空间需用QName;调试可用输出验证。

在Java中使用XSLT进行XML转换时,Transformer.setParameter() 是向XSLT样式表传递参数的标准方式。关键在于:XSLT中必须用 声明同名参数,且参数类型默认为 StringObject(如 BooleanNumberNodeList 等),JAXP会自动做适配。

参数声明与命名需严格匹配

XSLT文件中必须显式定义参数,否则传入无效:


Java端调用时名称必须完全一致(区分大小写),且应在 transformer.transform() 之前设置:

支持的参数类型及注意事项

JAXP支持多种参数类型,但实际行为取决于XSLT处理器(如Xalan、Saxon):

动态参数与命名空间处理

如果XSLT中参数名带命名空间(较少见),Java中也需用带命名空间的QName对象:

普通场景无需命名空间,直接用字符串名即可。

调试技巧:确认参数是否生效

若参数未起作用,可临时在XSLT中加入诊断输出:

userName = 

运行时查看控制台输出,或启用Transformer的调试日志(如Xalan的 -Dorg.apache.xalan.xslt.verbose=true)。