Xemeiah : an XML Database, XPath/XSLT/XUpdate processor, and more.

Version_0.4.10

Introduction to Xemeiah

Xemeiah is yet another XML framework, written from scratch in C++. Xemeiah is built on top of :

Why is Xemeieah faster than other XSLT implementations ?

  1. Memory thriftiness : Xemeiah has been designed with great care to limit memory footprint to its minimum.
    • XML-parsed DOM (Document Object Model) is made up of loads of little elements (named nodes).
    • Each byte spared for one element is a a million bytes spared for large XML files.
  2. Strings are nice when they are parsed :
    • Xemeiah internally converts each node name to a unique integer, allowing fast key comparison.
    • Keys as strings are uniquely stored in a dedicated structure, avoiding to allocate them for each node.
  3. Large file parsing at speed of light :
    • Xemeiah's pseudo-SAX-based XML parser has been designed with great care on performance.
    • With the help of a fast hashing mechanism, key names are quickly converted to their corresponding integer representation.
  4. Avoid deep XML tree-walking to its maximum, and use information as it is :
    • Xemeiah's core XSLT engine uses the parsed DOM nodes information as they are, no post-parsing conversion is operated.
    • XPath expression parsing is performed on-demand (i.e. when we need to), and the XPath parsed representation is directly stored in the DOM.
  5. Avoid string duplication when it's possible :
    • Xemeiah uses a specially crafted String class that greatly reduces the number of string copying while processing.
    • For example, when processing <xsl:value-of "@attribute"/>, not a single string duplication will occur until serialization of the final result.

Xemeiah extensions to standard XSL and XUpdate commands :

  1. Fast external importing
    • Import a file using xem:import_file (equivalent to XPath document())
    • Import a whole folder using xem:import_folder
    • Import a whole zip file using xem:import_zip
  2. Memory management
    • Release a parsed document using xem:release-document, future calls to document() will re-parse the document
  3. Multithreading commands
    • Spawn multiple processing threads using xem:fork, synchronize using xem:wait-forks
  4. Exception handling (ala C++/Java)
    • Throw an exception using xem:exception
    • Catch exceptions with xem:catch-exceptions, containing a xem:try and a xem:catch subsection.
  5. Call an external stylesheet (independant XSLT processing)
    • Use xem:process to process a new stylesheet with a different XML content

The following (prototype) modules extend Xemeiah's functionalities :

Current Version Features

Xemeiah is almost able to (what it should do right now) :

Xemeiah is quite able to (see it as a POC) :

Roadmap

Development Roadmap (as of Xemeiah 0.3.81)

Functions Roadmap

Source Architecture

Source code is splitted by functional modules. All the header files are sorted in the 'include/Xemeiah' directory.

Miscellaneous

This project is (still) a spare-time hacker's proof of concept : XML will re-structurate computer designs in the years to come.
Copyleft (or GPL, or ...) 2005-2999 by Francois Barre.
Many thanks to my beloved, for her infinite patience, and her ability to refill me with kindness (and food !) at moments of despair...

Generated on Sat Jun 6 18:35:34 2009 for Xemeiah by  doxygen 1.5.8