我试图从一个配置对象中获取processor对象,该配置对象在xquery脚本(从 net.sf.saxon.Query
). 如果我这样做,变量 processor
为空:
public class MyFunctionCall extends ExtensionFunctionCall {
public Sequence call(XPathContext ctxt, Sequence[] params) throws XPathException {
Processor processor = (Processor) ctxt.getConfiguration().getProcessor();
// Abbreviated
}
}
但是,在执行xslt转换时(从 net.sf.saxon.Transform
),变量是正确的 Processor
对象。
我从命令行执行查询,扩展 net.sf.saxon.Query
和覆盖 applyLocalOptions
为了注册我的扩展函数。
我的最终目标是得到一个 DocumentBuilder
对象,以及 Processor.newDocumentBuilder()
似乎是最简单的方法,但在这种情况下也许有解决办法。
1条答案
按热度按时间idfiyjo81#
看看代码,我认为我们从查询命令行创建配置的方式,它没有拥有自己的处理器,因此使用“开箱即用”的命令行执行,这是做不到的。
但是,既然你在
net.sf.saxon.Query
使用自己的子类,可以重写parseOptions()
待办事项transform为子类提供initializeconfiguration()钩子,这在查询中很遗憾地丢失了。