PhoenixmlDb.XQuery
HttpDocumentClient
Shared for fetching XML documents referenced by fn:doc() / xsl:source-document / fn:doc-available() when the resolved URI is http:// or https://.
#HttpDocumentClient
Namespace: PhoenixmlDb.XQuery
Shared for fetching XML documents referenced by fn:doc() / xsl:source-document / fn:doc-available() when the resolved URI is http:// or https://.
One static client is reused across the process to amortize TCP/TLS handshake cost. Conservative 30 s timeout — long enough for typical XML documents over the network, short enough that a misconfigured URL surfaces as an error rather than hanging the query. Sandbox enforcement is the caller's responsibility: PolicyEnforcingResolver wraps this when a ResourcePolicy is configured.
#Methods
#OpenRead(Uri)
Opens a streaming read of . The caller is responsible for disposing the returned stream. Streaming avoids buffering large documents into a string before parsing — important for the 100+ MB documents the engine targets.
Synchronous-over-async: the underlying call is awaited to completion on the calling thread. This is fine on runtimes that allow thread blocking (server, desktop, CLI) but fails on Blazor WebAssembly (single-threaded, cannot park a thread on a monitor wait). On WASM, register a custom that pre-fetches documents asynchronously instead of relying on this default loader — we throw a clear error here rather than the runtime's obscure Cannot wait on monitors message.