我正在尝试用java为xsl模板创建一个saxon扩展。我复制粘贴了我们经常用来“获取灵感”的解决方案中的代码。
当我执行收到的代码时:
2020-11-17 11:26:45,866 ERROR [stderr] XPST0017 XPath syntax error at char 0 on line 58 near {...($data.pwd...}:
2020-11-17 11:26:45,866 ERROR [stderr] Cannot find a matching 1-argument function named
2020-11-17 11:26:45,866 ERROR [stderr] {http://com.aaa.bbb.intializer/xsl/extensions}decrypt-rsa()
我唯一想到的是重写方法getfunctionqname()中uri的配置。
package it.ccc.bbb.xxx.util;
class XSLDecrypt extends ExtensionFunctionDefinition
{
private static final String CLASS_NAME = XSLDecryptRSA.class.getName();
private static final Logger LOGGER = Logger.getLogger(CLASS_NAME);
@Override
public StructuredQName getFunctionQName ()
{
return new StructuredQName("aaa", "http://com.aaa.bbb.intializer/xsl/extensions", "decrypt");
}
传入构造函数的正确uri是什么?
在我的xsl中,我放了:
<xsl:stylesheet version="2.0" xmlns:aaa="http://com.aaa.bbb.intializer/xsl/extensions">
...
<Parameter Key="password">
<xsl:value-of select="aaa:decrypt($data.pwd)"/>
</Parameter>
谢谢大家的帮助!
1条答案
按热度按时间66bbxpm51#
问题的解决方案是在配置中定义新的扩展。saxonica的文档中对此进行了解释。
这是在运行时应用给定配置的类,在本例中,它在我的解决方案中添加了唯一的扩展:xsldecrypt。
假设必须(在运行时)调用方法applyto(),那么它应该存在一个执行该操作的入口点。不幸的是,我的项目所基于的产品不允许我这么做,所以我们选择了porkaround除息的
再见!