如何在xslt文件中调用外部java函数?

我有这个xslt文件,我需要调用一个放在同一个应用程序中的其他地方的java函数。 在我有的xslt文件中

   

Summary:

但是当我尝试执行此xlst文件时,我收到以下错误

 XSL transform reported error: XPath syntax error at char 21 on line -1 in {test_my:parse2($text)}: Cannot find a matching 1-argument function named {vobs.plugins.WikiParser.WikiParser}parse2() 

好像它找不到java类,那么这样做的正确方法是什么? 一些代码示例会更好。 提前致谢!

这取决于您使用的XSLT转换处理器。 Saxon使用urn:java: ; Xalan使用xalan://

我有完全相同的问题,这解决了我在哪里urn:java:java:都失败了。

假设您正在使用Xalan进行转换,您应该将xmlns:test_my="vobs.plugins.WikiParser.WikiParser"更改为xmlns:test_my="xalan://vobs.plugins.WikiParser.WikiParser"

您需要将名称空间声明(在xsl:stylesheet元素中)从xmlns:test_my="vobs.plugins.WikiParser.WikiParser"更改为xmlns:test_my="urn:java:vobs.plugins.WikiParser.WikiParser"

基本原理如下:为了使用包ab中的类C,您需要定义名称空间前缀并将其与urn:java:abC相关联。

如果我正确理解XSL,则在导入不属于标准库的Java代码时需要使用urn:前缀(如您的情况)。 如果您只需要导入标准库类,那么“java:”就可以了。

(进一步详情: http : //cafeconleche.org/books/xmljava/chapters/ch17s03.html )

[编辑:改变“java:” – >“urn:java:”]