首页 > 解决方案 > 问:Saxon XQuery 自定义解析器

问题描述

我正在尝试确认我的注册自定义解析器的实现是正确的......我希望解析器在调用相应的 saxon xquery 函数时抛出“未经授权”错误。

首先,我按照这些思路编写了一个自定义类:

class CustomURIResolver implements URIResolver{
            public Source resolve(String href, String base) throws XPathException {
                throw new XPathException("Illegal Operation");
            }]
        }

然后我通过处理器上的底层配置设置解析器:

Processor proc = new Processor(false);
// Override SystemURIResolver
net.sf.saxon.Configuration xconfig = proc.getUnderlyingConfiguration();
xconfig.setURIResolver(new CustomURIResolver());

这是合理的还是我错过了什么?

标签: javaxquerysaxon

解决方案


您应该将 设置在URIResolverXQueryEvaluator,而不是设置在 上Configuration

此外,这取决于“相应的 saxon xquery 函数”是什么。例如, URIResolver 用于doc()函数,但不用于unparsed-text().


推荐阅读