我正在尝试确认我注册自定义解析器的实现是正确的...我希望解析器在调用相应的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());
这合理吗?或者我缺少什么?
您应该将URIResolver
设置在XQueryEvaluator
上,而不是在Configuration
上。
此外,这取决于“相应的撒克逊人xquery函数”是什么。 URIResolver例如用于doc()
函数,但不用于unparsed-text()
。