PhoenixmlDb.Core 1.4.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package PhoenixmlDb.Core --version 1.4.0
                    
NuGet\Install-Package PhoenixmlDb.Core -Version 1.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PhoenixmlDb.Core" Version="1.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PhoenixmlDb.Core" Version="1.4.0" />
                    
Directory.Packages.props
<PackageReference Include="PhoenixmlDb.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PhoenixmlDb.Core --version 1.4.0
                    
#r "nuget: PhoenixmlDb.Core, 1.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PhoenixmlDb.Core@1.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PhoenixmlDb.Core&version=1.4.0
                    
Install as a Cake Addin
#tool nuget:?package=PhoenixmlDb.Core&version=1.4.0
                    
Install as a Cake Tool

PhoenixmlDb.Core

Core types, interfaces, and XDM (XQuery Data Model) implementation for PhoenixmlDb — a modern embedded XML/JSON document database for .NET.

What's in this package

  • Database interfacesIDocumentDatabase, IContainer, IDocument for storing and retrieving XML/JSON documents
  • XDM node typesXdmElement, XdmAttribute, XdmDocument, etc. — the W3C XQuery Data Model
  • Transaction modelIReadTransaction, IWriteTransaction with MVCC snapshot isolation
  • Index configuration — path, value, full-text, and metadata indexes for fast queries
  • XML parser and serializer — parse XML into XDM trees and serialize back
  • Atomic value types — dates, times, durations, and other XSD types with correct semantics

When to use this package

Directly: If you're building a storage provider, query engine integration, or tooling that works with XDM types.

Indirectly: This package is a dependency of PhoenixmlDb.XQuery, PhoenixmlDb.Xslt, and the CLI tools. You typically don't reference it alone unless you need the core types without query/transform capabilities.

Quick example

using PhoenixmlDb.Core;
using PhoenixmlDb.Xdm.Parsing;

// Parse XML into an XDM tree
var parser = new XmlDocumentParser();
var result = parser.Parse("<order><item>Widget</item></order>");
var doc = result.Document;

// Navigate the tree
var root = doc.Children[0]; // <order> element
Console.WriteLine(root.StringValue); // "Widget"
Package Description
PhoenixmlDb.XQuery XQuery 4.0 query engine
PhoenixmlDb.Xslt XSLT 4.0 transformation engine
PhoenixmlDb.XQuery.Cli xquery command-line tool
PhoenixmlDb.Xslt.Cli xslt command-line tool

Documentation

Full documentation at phoenixml.dev

License

Apache 2.0

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on PhoenixmlDb.Core:

Package Downloads
PhoenixmlDb.XQuery

XQuery 4.0 query engine for PhoenixmlDb

PhoenixmlDb.Xslt

XSLT 4.0 transformation engine for PhoenixmlDb

Phoenixml.Platform.Editor.Xml

XML/XSD vocabulary binding for Phoenixml.Platform — concrete IDocument and ITreeNodeProvider implementations against PhoenixmlDb.Core's XDM, XSD schema validation pipeline.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.6.7 129 8/24/2026
1.6.6 141 8/23/2026
1.6.5 137 8/21/2026
1.6.0 147 8/7/2026
1.5.0 97 8/6/2026
1.4.0 91 8/4/2026
1.3.0 351 7/27/2026
1.2.2 285 7/9/2026
1.2.1 148 7/8/2026
1.2.0 322 6/28/2026
1.1.9 323 6/17/2026
1.1.8 202 6/14/2026
1.1.7 138 6/9/2026
1.1.6 115 6/9/2026
1.1.5 316 5/23/2026
1.1.4 415 5/17/2026
1.1.3 165 5/14/2026
1.1.2 227 5/12/2026
1.1.1 356 5/9/2026
1.1.0 120 5/8/2026
Loading failed

Foundation for typed document metadata: a single conversion boundary between CLR values and XDM, a
registry for well-known namespaces, and typed metadata property descriptors. Additive — no public
API was removed.

### `XdmValue.From<T>` / `To<T>` — one CLR-to-XDM conversion

`XdmValue` gains a single, symmetric conversion pair, replacing ad-hoc per-call-site coercion.

**`To<T>` is strict**, deliberately. The stored `XdmType` must match the requested `T`, with numeric
widening the only implicit conversion; a mismatch throws `InvalidCastException` and an overflowing
narrowing throws `OverflowException`. It does *not* inherit `AsLong()`'s XPath-style coercion, which
parses strings into numbers — correct in an XPath expression, wrong at a typed storage boundary,
where it would let a value round-trip as a different type than it was written as.

**Empty-value semantics are explicit.** `From<T>(null)` produces `Empty`. `To<T>(Empty)` returns
`null` for reference types and `Nullable<V>`, preserving the round-trip, and throws
`InvalidCastException` for non-nullable value types — because `default(long)` is `0`, and silently
returning `0` for an absent value is a lie the caller cannot detect. Note `XdmQName` is a
`readonly record struct` and follows the value-type arm.

### `NamespaceRegistry` — one source for well-known URIs

Well-known namespace URIs and their conventional prefixes now live in one table rather than being
restated at each use, so a URI typo cannot silently create a second namespace.

### Typed metadata: `MetadataProperty<T>`, `MetadataCollection`, vocabularies

`MetadataProperty<T>` is a typed, namespace-qualified property descriptor; `MetadataCollection`
holds resolved values. Ships with `PhxMeta` (engine-reserved: `ContentType`, `Size`) and `DcTerms`
(`Creator`, `Created`, `Title`).

`MetadataProperty<object>` is **rejected in the constructor**. `IsSupportedClrType` returns `true`
for `object` because runtime dispatch in `From` needs it, but a `MetadataProperty<object>` would
defeat the type safety the descriptor exists to provide.

There is no `TryGetValue` on `MetadataCollection` — the nullable `this[XdmQName]` indexer already
expresses absence, and typed access is the `Get<T>` extension method, because C# cannot declare a
generic indexer on a non-generic type.

### Packaging

- Exception stack traces from shipped assemblies no longer embed the absolute build-machine path (a `PathMap` maps the repo root to a repo-relative prefix, so a frame reads `phoenixmldb-core/src/…` instead of a local filesystem path). Line numbers are preserved. Release builds only.
- Release notes are delivered to `dotnet pack` from this file by CI at tag time rather than duplicated in `Directory.Build.props`, removing a source of drift between the two.