3

我无法使用 Xalan 处理器在我的 XSL 代码中调用外部 java 函数。

我得到的错误是:

Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xml.utils.NodeVector.incrementPropertyId([ExpressionContext,] ).

我在执行编译命令的文件夹中有一个名为 Util.java 的 java 类。

在我的 xsl 文件中,我已将命名空间声明如下:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                          xmlns:java="http://xml.apache.org/xslt/java" exclude-result-prefixes="java"
                          xmlns:util="xalan://Util">

我使用以下方法调用我的函数:

<xsl:copy-of select="util:incrementPropertyId(blablabal)"/>

所以我想我的问题来自我的命名空间,但它有什么问题?

此外,它是一个 xsl 1.0 样式表。

谢谢你的帮助

编辑 :

在我的 Util.java 文件中,我没有声明包,因为我在根目录中......我应该添加一个包 Util;对我的班级的定义?

4

2 回答 2

1

在 extension-element-prefix 中定义您的命名空间 util,并将包和类的名称分配给此命名空间:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      xmlns:java="http://xml.apache.org/xslt/java" exclude-result-prefixes="java"
                      extension-element-prefix="util"
                      xmlns:util="your.package.YourClass">
于 2013-10-18T00:23:11.503 回答
0

可能你的问题是你在调用方法时没有提到命名空间试试:

<xsl:copy-of select="util:incrementPropertyId()"/>    
于 2013-08-19T21:40:42.537 回答