PhoenixmlDb.XSLT

XdmInMemoryStore

In-memory backing the XSLT engine's XDM tree. Exposed publicly so callers can construct an XDM source tree externally (e.g. via XmlDocumentParser), pass it into overloads that accept an + store, and then chain the typed result back into another transformation without serializing through XML markup.

#XdmInMemoryStore

Namespace: PhoenixmlDb.Xslt

In-memory

backing the XSLT engine's XDM tree. Exposed publicly so callers can construct an XDM source tree externally (e.g. via

XmlDocumentParser

), pass it into

overloads that accept an

+ store, and then chain the typed result back into another transformation without serializing through XML markup.

Implements INodeBuilder (and therefore INodeStore / INodeProvider), so the same store satisfies both XSLT and XQuery engines. NodeIds and NamespaceIds allocated by this store are scoped to the store instance — they are not portable across stores.

The store starts with the well-known XML and XMLNS namespace IDs pre-registered (NamespaceId.Xml and NamespaceId.Xmlns) so that node trees built externally see the same canonical mappings the engine uses.

#Properties

Name Description
StringValueResolver Computes an element's or document node's string value from its children in this store, for nodes built without one. Give it to every element and document node the engine constructs: StringValueResolver = store.StringValueResolver.

#Methods

#AdvanceNextIdBy(UInt64)

Advances the internal NodeId counter by

. Used after an external allocator (e.g.

XmlDocumentParser

) has claimed a contiguous range starting at

.

#EnumerateAttributes(PhoenixmlDb.Xdm.Nodes.XdmElement)

Allocation-free attribute iteration: returns a struct enumerator that walks

by index (no boxed IEnumerator) and looks up each attribute in the store. Use this on hot paths where the alternative is the

yield-iterator state machine.

#PeekNextId

Returns the next NodeId that would be allocated, without consuming it. Used by callers that need to hand the value to an allocator (e.g.

XmlDocumentParser

) before reserving the range via

.

#RegisterKnownNamespace(PhoenixmlDb.Core.NamespaceId,String)

Registers a well-known NamespaceId → URI mapping (does not allocate a new ID).

#Remove(PhoenixmlDb.Core.NodeId)

Removes a node from the store. Used by streaming execution to free temporary nodes after they have been processed.