【问题标题】:Saxon 9.2 / Java / XSLT: setting transformer parameters using setParameters()Saxon 9.2 / Java / XSLT:使用 setParameters() 设置转换器参数
【发布时间】:2010-08-08 14:20:09
【问题描述】:

我有以下 XSLT 2.0 模板:

<xsl:template name="t1">
<xsl:variable name="totalpos" as="xsd:double" select="$currentTotal"/>
..  

我正在努力以编程方式将currentTotal 作为参数提供给转换器,如下所示:

transformer.setParameter("currentTotal", new Double("100"))

..但没有任何积极的结果:

/xsl:transform/xsl:template[3]/xsl:variable[1] XPST0008 错误: {$currentTotal} 中第 -1 行的字符 13 处的 XPath 语法错误: 变量 $currentTotal 尚未声明

当调用setParameter() 时,currentTotal 变量也会被定义,对吧? 我应该如何调用setParameter() 调用,以便在我的应用程序中定义的currentTotal 可以在样式表中看到?

为澄清起见,我正在像这样实例化转换器:

System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");
transformerFactory = new TransformerFactoryImpl();
transformer = transformerFactory.newTransformer(inputNodes);

【问题讨论】:

    标签: java xslt saxon transformer


    【解决方案1】:

    必须在样式表中声明参数

    <xsl:param name="currentTotal"/>
    

    xsl:stylesheet 元素内。您还可以使用select 属性或在元素主体内定义默认值。

    【讨论】:

    • 确实,我需要定义变量。我期待它会在我设置参数时定义,但我错了。抱歉我迟到了,我正在度假。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多