You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在XSLT中显示样式表参数:Saxonica参数查询技术问询

Saxonica获取样式表参数名称的方法

是的,Saxonica支持在XQuery中获取传递给transform:transform的参数名称,根据你的需求(预先不知道传入参数),可以通过以下两种方式实现:

1. 提取实际传入的参数名称

如果你需要获取调用transform:transform时实际传入的所有参数,可以将参数封装为映射(map)类型,再通过map:keys()函数直接提取参数名称:

declare namespace transform = "http://saxon.sf.net/transform";

let $input-params := map {
  'user-id': '123',
  'display-mode': 'compact',
  'custom-filter': true()
}
let $param-names := map:keys($input-params)
return (
  transform:transform(
    doc("input.xml"),
    doc("stylesheet.xsl"),
    $input-params
  ),
  $param-names
)

这段代码会返回所有传入的参数名称列表,完全不需要预先知道参数的具体名称。

2. 获取样式表声明的参数(可选)

如果需要获取样式表中显式声明的顶层参数(即<xsl:param>定义的参数),可以使用Saxon的扩展函数访问样式表的元数据:

declare namespace saxon = "http://saxon.sf.net/";
declare namespace transform = "http://saxon.sf.net/transform";

let $compiled-stylesheet := saxon:compile-stylesheet(doc("your-stylesheet.xsl"))
let $declared-params := saxon:declared-parameters($compiled-stylesheet)
return $declared-params ! string(.)

这种方法仅能获取样式表中定义的参数,无法捕获未在样式表中声明但被传入的参数。

注意事项

  • 确保XQuery环境启用了Saxon扩展函数支持,并且正确声明了对应的命名空间;
  • 若使用Saxon HE版本,部分扩展功能可能受限,建议使用PE或EE版本以获得完整支持。

内容的提问来源于stack exchange,提问作者lschult2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:16:17