将我的java函数绑定到saxon XSLT处理器

时间:2011-11-28 21:15:11

标签: java xslt

我在类中有自己的java静态函数:

package com.test;

public class A {

    public static void returnSameNodes(Object nodes){
        return nodes;
    }


}

我试图将此函数绑定到XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:ext="java:com.test.A" >
    <xsl:template match="root">
        <xsl:apply-templates select="ext:returnSameNodes(//child::*)"></xsl:apply-templates>
    </xsl:template>
</xsl:stylesheet>

,但出现以下错误:

  

找不到名为etc的匹配单参数函数。

我知道我做错了什么 - 我必须告诉撒克逊人(9B)我的班级在特定位置,但我不知道该怎么做。有什么建议??包括例如Math.sqrt()效果很好。感谢

编辑:问题是设置Java类路径,有人知道如何针对这种特殊情况执行此操作吗?以下链接中有关于设置类路径变量的注释,但是如何? http://www.saxonica.com/documentation/extensibility/functions.xml 谢谢你的建议

1 个答案:

答案 0 :(得分:1)

如果您从命令行运行,那么

(a)使用-TJ选项更好地诊断扩展功能的问题

(b)确保包含您的方法的类在类路径上,例如

java -cp mycode; saxon9ee.jar net.sf.saxon.Transform -TJ -xsl:xxx.xsl -s:yyy.xml

其中mycode是包含已编译类的目录

(c)确保您使用支持自反扩展功能的Saxon版本(Saxon-HE不支持)。