Figaro - The XML Database for the .NET Framework

Figaro is implemented to conform to the W3C standards for XML, XML Namespaces, and the XQuery working draft. In addition, it offers the following features specifically designed to support XML data management and queries:

Containers

A container is a single file that contains one or more XML documents, and their metadata and indices. You use containers to add, delete, and modify documents, and to manage indices.

Indices

Figaro indices greatly enhance the performance of queries against the corresponding XML data set. Figaro indices are based on the structure of your XML documents, and as such you declare indices based on the nodes that appear in your documents as well the data that appears on those nodes.

You can also declare indices against metadata.

Queries

Query Results

Figaro retrieves documents that match a given XQuery query. Figaro query results are always returned as a set. The set can contain either matching documents, or a set of values from those matching documents.

Storage

If you use node-level storage for you documents (see Container Types), then Figaro automatically transcodes your documents to Unicode UTF-8. If you use whole document storage, then the document is stored in whatever encoding that it uses. Note that in either case, your documents must use an encoding supported by Xerces before they can be stored in Figaro containers.

Beyond the encoding, documents are stored (and retrieved) in their native format with all whitespace preserved.

Metadata Attribute Support

Each document stored in Figaro can have metadata attributes associated with it. This allows information to be associated with the document without actually storing that information in the document. For example, metadata attributes might identify the last accessed and last modified timestamps for the document.

Document Modification

Figaro provides a robust mechanism for modifying documents. Using this mechanism, you can add, replace, and delete nodes from your document. This mechanism allows you to modify both element and attribute nodes, as well as processing instructions and comments.

See Also