我正在使用 saxon EE 处理器通过 XSLT-2.0 进行 XML 转换。但它给出了 XSL 文件错误。
以下是XSL文件的代码
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:setfile ="java:com.output.extensionFile">
<xsl:param name="outDir" select="setfile:getCurrentDir(setfile:new())"/>
</xsl:stylesheet>
下面是我们调用转换器以将 XML 转换为 HTML 的代码。
{
javax.xml.transform.TransformerFactory tFactory = new EnterpriseTransformerFactory();
XslImportResolver myResolve = new XslImportResolver();
tFactory.setURIResolver( myResolve );
javax.xml.transform.Transformer transformer = tFactory.newTransformer
(new javax.xml.transform.stream.StreamSource(xslLocation));
Registry registry = Registry.getRegistry( this );
transformer.transform( new StreamSource( xmlLocation ),
new StreamResult( new FileOutputStream( htmlLocation ) ) );
}
导入 Java 类的 Java 代码
public class extensionFile {
// Empty Constructor
public extensionFile()
{
}
public Object getCurrentDir()
{
return ReportStatic.getCurrentDir();
}
}
我们收到以下错误:
第 78 行第 73 列 xsl:param/@select 表达式中 {...e:getCurrentDir(setfile:new...} 附近的 char 22 处出现静态错误: XPST0017:找不到名为 Q{java:com.output.extensionFile}new() 的匹配 0 参数函数。用于诊断 调用 Java 方法,使用 -TJ 命令行选项或设置 Configuration 属性 功能键.TRACE_EXTERNAL_FUNCTIONS
您是否运行了建议的诊断程序?
根据给出的信息,最可能的解释是(a)该类的全名不是您所建议的,或者(b)该类不在类路径上。 -TJ 诊断应该会揭示解释。