【问题标题】:Q: Saxon XQuery Custom Resolver问:Saxon XQuery 自定义解析器
【发布时间】:2020-06-15 12:49:25
【问题描述】:

我正在尝试确认我注册自定义解析器的实现是否正确... 我希望解析器在调用相应的 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());

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

【问题讨论】:

    标签: java xquery saxon


    【解决方案1】:

    您应该在XQueryEvaluator 上设置URIResolver,而不是在Configuration 上。

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

    【讨论】:

    • 使用Configuration对象不正确吗?看起来我只能在 XQueryEvaluator 上设置自定义 URIResolver,而 Configuration 似乎提供了一个更通用的接口来设置解析器。
    • 在配置上设置也可以。但是范围可能比您真正想要的更全局,例如影响模式文档的读取方式。
    • 非常感谢!
    猜你喜欢
    • 2019-12-26
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    相关资源
    最近更新 更多