我在一个类中有自己的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的匹配1参数函数。


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

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

最佳答案

如果您从命令行运行,则

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

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

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

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

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

07-28 01:28
查看更多