Saxon document, wrapping a Saxon (9.7+) TreeInfo object.
Saxon NodeInfo element wrapper.
Saxon NodeInfo element wrapper. It is efficient, because of an entirely custom query API implementation tailored to Saxon.
Saxon yaidom BackingNodes.Elem
wrapper around Saxon (9.7+) NodeInfo backends.
Saxon yaidom BackingNodes.Elem
wrapper around Saxon (9.7+) NodeInfo backends. Saxon-HE is the minimal
requirement, but Saxon-EE can be used instead, of course.
Typically the wrapped NodeInfo uses the tiny tree model, in which case these yaidom wrapper nodes for Saxon are quite fast in query processing and especially quite memory-efficient.
Be careful to cautiously manage the underlying Saxon Processor (or Configuration) objects in the application using these Saxon node wrappers. Do not shared them naively, and also do not use new instances of them naively.
Yaidom EName
and QName
instances are created from Saxon NodeInfo
objects using the
global ENameProvider.globalENameProvider
and QNameProvider.globalQNameProvider
, respectively.
Consider using efficient implementations for those name providers that use name pooling (at least
for commonly used names).
Saxon-based
BackingNodes.Elem
implementation that can be used as underlying element implementation in any "yaidom dialect". If Saxon tiny trees are used under the hood, this implementation is very efficient, in particular in memory footprint.This package depends on the current latest major Saxon version considered stable, like 9.8. If other major Saxon versions must be supported, consider copying and adapting this code, or yaidom itself should provide a separate source tree (with copied and adapted code) from which artifacts are created that target that other Saxon major version(s).
The dependency is on Saxon-HE, so features of Saxon-EE are not used here. That does not mean that they are not accessible, of course.