Patternist -- an XQuery 1.0, XSL-T 2.0 and XPath 2.0 Implementation

This page contains the following sections:

Patternist -- Overview

Patternist is an XPath 2.0, XQuery 1.0 and XSL-T 2.0 implementation, licensed under the GNU LGPL license.

Development priority is:

Technical Details

Downloading and Running Patternist

Running Patternist can be tricky, due to it not being exposed through user-oriented utilities and APIs, but development & debugging interfaces(see KXQTS). Patternist is currently being integrated with Trolltech's Qt library, and will therefore be exposed for user-oriented usage through that. When snapshots and the like are published by Trolltech, that will be announced at

The source is currently in KDE's Subversion repository, and can be downloaded with the UNIX command:

svn co svn://

Alternatively, it can be browsed via the web interface.

The documentation that you are reading right now, can be generated by running doxygen inside the top-level patternist/ directory without arguments. The generated documentation can subsequently be browsed from patternist/html/index.html.

Patternist is incomplete, under continuous development and therefore not comformant. The current behavior and what constructs that are currently supported is undefined. The current pass percentage is about 89% of W3C's XQuery Test Suite.
See also:
XML Path Language (XPath) 2.0, F Conformance

Understanding XPath & XQuery

Understanding XPath 2.0, especially at the level required for implementing, is a big task. I learned XPath 2.0 from the specifications, and that was not the most clever thing to do. The comfort is that the complexity will end(time counted in weeks for me), and that it is possible.

Reading articles about XPath/XSL-T 2.0 at is probably a good idea, testing with Saxon(, and to study the following specifications, roughly in order of importance:

Less important documents, depending on what one work on in particular is:

In addition, these articles and papers can be of interest:

Coding Style

Patternist's coding style is as follows.

Doxygen Conventions

Doxygen conventions, are as follows.

The current Doxygen comments does in some cases not adhere to this, but the idea is to harmonize in that direction over time.


Regression testing and debugging the code is done in the following ways:

KXQTS, located in kxqts/, is documented in the KXQTS Doxygen module.


The following individuals, appearing in no particular order, have contributed to Patternist and significantly improved it. A big thank-you extends to them for their efforts:

Frans Englich <>

Generated on Thu Feb 8 14:54:18 2007 for Patternist by  doxygen 1.5.1