如何在Java下使用Saxon将参数传递给我的xslt样式表?

时间:2012-01-22 04:37:15

标签: xslt saxon xsl-stylesheet

我正在使用Saxon 9 HE,在NetBeans 7.0.1中,当我尝试将参数发送到样式表时出现以下错误:

enter image description here

只是为了确保,这是发送参数的好方法,所以我可以用

取回它

<xsl:param ... />

如果是这样,我该如何使用它?

谢谢!

2 个答案:

答案 0 :(得分:2)

请参阅S9APIExamples.java

String[] fruit = {"apple", "banana", "cherry"};
QName paramName = new QName("in");
for (String s: fruit) {
    StringWriter sw = new StringWriter();
    out.setOutputWriter(sw);
    t.setParameter(paramName, new XdmAtomicValue(s));
    t.setDestination(out);
    t.transform();
    System.out.println(s + ": " + sw.toString());
}

答案 1 :(得分:1)

从消息中可以看出,您需要传递net.sf.saxon.s9api.Qname作为第一个参数(而不仅仅是字符串"myVar")。

第二个参数必须构造为net.sf.saxon.s9api.XdmValue

  

只是为了确保,这是发送参数的好方法,所以我可以用

取回它      

<xsl:param ... />

在您的XSLT样式表(xsl:importxsl:include指令中引用的主要样式表和任何样式表模块)中,您必须具有全局(子xsl:stylesheet){{ 1}}与用于构造xsl:param的字符串同名,并将其作为Qname的第一个参数传递。

当执行setParameter()方法然后调用转换时,相应的全局setParameter()将具有用于构造作为{{的第二个参数传递的xsl:param的值。 {1}}。