- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在看Integrated extension functions在 Saxon-HE 10 (Java) 中。
我需要该函数返回一个由 StreamSource
构造的 document-node()?
。
回答similar question提到这段代码:
context.getConfiguration().buildDocument()
但是,context
不会传递给 ExtensionFunction
,仅传递 XdmValue[] 参数
。
ExtensionFunctionDefinition
确实接受 XPathContext 上下文
,但看起来 getConfiguration().buildDocument()
在 10 中不存在。
相反,有context.getConfiguration().buildDocumentTree(Source source)
,但我不知道如何将TreeInfo
转换为Sequence
接口(interface)签名所需。
最佳答案
“简单接口(interface)”(s9api.ExtensionFunction
) 不允许传入 XPathContext 对象。但是,为此目的,您不需要完整的 XPath 动态上下文;您只需要访问配置对象。事实上,您可以在 s9api 级别执行所有操作,而无需深入研究 Saxon 内部:
final Processor proc = new Processor();
ExtensionFunction ef = new ExtensionFunction() {
...
public XdmValue call(XdmValue[] arguments) throws SaxonApiException {
Source source = ...;
return proc.newDocumentBuilder().build(source);
}
};
proc.registerExtensionFunction(ef);
如果您确实需要比这更多的上下文信息,例如,如果您需要访问调用扩展函数的表达式的静态基本 URI,那么您需要使用带有单独 的“完整接口(interface)” ExtensionFunctionDefinition
和 ExtensionFunctionCall
对象。
然后,您将需要使用较低级别的 Saxon 接口(interface),例如 Sequence
和 NodeInfo
。 Configuration.buildDocumentTree()
返回一个 TreeInfo
,其中有一个 getRootNode()
方法返回 NodeInfo
。 NodeInfo
实现了 Item
,而 Item
实现了 Sequence
,因此您可以从 ExtensionFunctionCall.call( )
方法。
关于java - 如何从 Saxon 的扩展函数返回文档节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60899154/
我是一名优秀的程序员,十分优秀!