Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中为xsl创建ExtensionFunctionDefinition时,StructuredQName中的Uri是什么_Java_Xslt_Xslt 2.0_Saxon - Fatal编程技术网

在Java中为xsl创建ExtensionFunctionDefinition时,StructuredQName中的Uri是什么

在Java中为xsl创建ExtensionFunctionDefinition时,StructuredQName中的Uri是什么,java,xslt,xslt-2.0,saxon,Java,Xslt,Xslt 2.0,Saxon,我正在尝试用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-ar

我正在尝试用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;
类XSLDecrypt扩展了ExtensionFunctionDefinition
{
私有静态最终字符串CLASS_NAME=XSLDecryptRSA.CLASS.getName();
私有静态最终记录器=Logger.getLogger(类名称);
@凌驾
公共结构QName getFunctionQName()
{
返回新的StructuredQName(“aaa”http://com.aaa.bbb.intializer/xsl/extensions“,”解密“);
}
在构造函数中传递的正确uri是什么?

在我的xsl中,我提出:


...

感谢大家的帮助!

问题的解决方案是在配置中定义新的扩展。中对此进行了解释

公共类扩展
{
私有静态最终扩展FunctionDefinition[]xslExtensions;
静止的
{
xslExtensions=new ExtensionFunctionDefinition[]{
新的XSLDecrypt()
};
}
公共静态扩展函数定义[]getExtensions()
{
返回扩展名;
}
公共静态void applyTo(net.sf.saxon.Configuration saxonConfig)
{
if(xsltextensions!=null&&xsltextensions.length>0)
{
for(ExtensionFunctionDefinition xslExtension:xslExtensions)
{
registerExtensionFunction(xslExtension);
}
}
}
}
这是在运行时应用给定配置的类,在本例中,它在我的解决方案中添加了唯一的扩展:xsldepcrypt

考虑到必须(在运行时)调用方法applyTo(),它应该存在一个执行该操作的入口点。不幸的是,我的项目所基于的产品不允许我这样做,因此我们选择了porkaround.:(xD


再见!

对于可能出现的错误,您已经提出了一些建议。当无法定位函数时,请使用命令行上的-TJ选项进行额外诊断。您好,您在说什么命令行?大家好,我如何关闭该问题?我已经解决了它!只需接受您自己的答案。(不要删除该问题-它可能对其他人有用).