From EXPath

Revision as of 16:12, 27 June 2010 by Mozer (Talk | contribs)
Jump to: navigation, search

This is a list of languages using XPath (or at least related specs, like the XQuery Scripting Extension), and a list of processors supporting XPath (or related languages). This list tries to be comprehensive, but it sure lacks some specs and implementations. If you know any such spec, language or implementation that should be added, please tell us on the mailing list.


Languages using XPath


This is only a partial list. you can also have a look at the following Wikipedia page about XSLT processors for other processors as well.

  • BaseX, a native XML database with XQuery support.
  • Calabash, Norman Walsh's XProc processor.
  • EMC Documentum xDB by EMC, a native XML database with XQuery support.
  • EMC Documentum XProc Engine (aka Calumet), EMC's XProc processor, developed by Vojtech Toman.
  • eXist, an open source native XML database with XQuery and XSLT support.
  • Intel® SOA Expressway's XSLT 2.0 Processor (this is an alpha version, post comments on this forum).
  • MarkLogic Server, a native XML database with XQuery support.
  • MXQuery by ETH Zurich, an in-memory XQuery processor.
  • Oracle Berkeley DB XML, an open source native XML database with XQuery support.
  • Sausalito, by 28msec. Not a processor, but a suite of tools that allow you to write, test, and deploy full-fledged Web-based applications, coded entirely in XQuery.
  • Qizx, by XMLmind, a fast XML repository and search engine fully supporting XQuery.
  • Saxon by Saxonica (by Michael Kay), an in-memory XPath 2.0, XSLT 2.0, XQuery and XML Schema processor.
  • Xalan by Apache, an XPath 1.0 and XSLT 1.0 processor, used in the Sun's Java standard distribution.
  • XQilla, an in-memory XQuery processor in C++, by John Stenson.
  • XQSharp, an in-memory XQuery 1.0 and XPath 2.0 processor for .NET.
  • Zorba by the FLWOR Foundation, an embeddable XQuery processor.
  • [ Other Oracle products? (XDB, BPEL, etc.) ]
  • [ IBM? ]


BaseX is a native, open-source XML database and efficient XPath/XQuery processor, including support for the latest Full Text and Update recommendations. It supports very large XML instances and offers a highly interactive frontend. BaseX is written in Java and freely available for download. It is developed by the Database and Information Systems Group at the University of Konstanz.

EMC Documentum xDB

EMC Documentum xDB (formerly known as X-Hive/DB) is a scalable, high-performance native XML database optimized for storing and querying large volumes of content. Written in 100% Java, xDB provides a fully persistent, transactional DOM Level 3 implementation. xDB is easy to embed, with fully configurable storage and memory footprint. EMC provides xDB free of charge for development purposes on the EMC Developer Network website.

You can try a live demo here.

EMC Documentum XProc Engine

EMC Documentum XProc Engine (aka Calumet) is a Java XProc implementation. It can be used either as an embedded component in larger applications, or as a standalone tool with a simple command-line interface. Calumet features an open architecture that makes it possible to register plug-ins that customize the default behavior of the processor or provide new functionality, such as extension XProc steps. Calumet provides seamless integration with EMC Documentum xDB as well as various other 3rd-party tools. Calumet is available free of charge for development purposes on the EMC Developer Network website.

EMC Documentum XForms Engine

EMC Documentum XForms Engine (aka Formula) is an XForms 1.1 engine based on the Google Web Toolkit. This means it is coded in the Java programming language, and compiled into JavaScript which can be executed by most modern browsers, without the need for a plugin or processing outside of the browser. It comes with Java and JavaScript application programming interfaces which make it easy to embed Formula in various types of web applications. EMC provides the Formula XForms engine free of charge for development purposes. It can be obtained from the EMC Developer Network website.

You can try a live demo here.


eXist is an Open Source Native XML Database featuring efficient, index-based XQuery processing. It has a modular indexing architecture and provides a powerful environment for the development of web applications based on XQuery, XSLT and related standards. Entire web applications can be written in XQuery, using XSLT, XHTML, CSS, and Javascript (for AJAX functionality).

eXist has now been around since late 2000 and provides a huge number of XML technology features. There is a large, active and well established Open Source community supporting and driving forward eXist's development.

MarkLogic Server

MarkLogic Server is a petabyte-scalable XML server that combines an application server, transactional persistent storage (XML, text, and binary), and a full-text search engine. It includes a native XQuery engine, an HTTP server, and a share-nothing cluster architecture to simplify how developers build and deploy rich information applications. MarkLogic Server is used today in production by leading organizations in media, government, financial services, and healthcare.

You can find more technical information and documentation on the developer network.


Qizx is a native XML repository and search engine optimized for fast queries. Though it supports XQuery Update and database features like transaction/isolation, Qizx is not represented as an XML Database because it is not optimized for updating. Qizx/open is an open-source edition with all XQuery features, but no database support. See the features and product pages for more informations.


XQSharp is a standards compliant implementation of XQuery 1.0 and XPath 2.0 for the Microsoft .NET Framework. The XQSharp API builds upon the classes in the System.Xml namespace. It is written in 100% managed code for Microsoft .NET Framework version 2.0 or later. It is provided as a single strong-named assembly which is suitable for use in Low and Medium Trust environments.

For an interesting and rather unusual example of XQuery application, see the article written by the XQSharp team about building a raytracer in XQuery.


This table provides a comparison between several processors (the rows) based on specifications they implement or feature they provide (the columns).

Update, Full Text and Scripting are respectively the draft specs XQuery and XPath Full Text, XQuery Update Facility and XQuery Scripting Extension. Try/catch and function items refer to the features to handle non-local errors and to manipulate functions as first-class citizens (both are in the drafts for XPath 2.1 / XQuery 1.1 / XSLT 2.1). Packaging and webapps refer to an existing solution to build and install packages and to facilities to build webapps (this mean principally to be able to execute a component in response to an HTTP request, to access this request attributes and values, and to tell what will be the corresponding HTTP response to return). Please note this matrix is an overview, be sure to read the footnotes for details when appropriate.

Processor XPath XSLT XProc XQuery Family Cross Language Feature
XQuery XQueryX Update Full Text Scripting Extension Try/catch Function items
(High Order Functions)
Packaging Webapps
BaseX 2.0 No No 1.0 No Yes Yes No Yes No No Yes
Berkeley DB XML 2.0 [1] No No 1.0 No Yes No No No No No No
Calumet 1.0 [2] 2.0 [3] Yes 1.0 [4] No Yes [4] Yes [4] No No No No No
EMC xDB 1.0 [5] 2.0 [6] Yes [7] 1.0 No Yes Yes No No No No No
eXist 2.0 2.0 [8] Yes [9] 1.0 No Yes No [10] No Yes [11] Yes [11] No Yes
MarkLogic 2.0 No No 1.0 [12] No No [13] No [13] No Yes Yes No Yes [14]
Qizx 2.0 No No 1.0 [15] No Yes Yes No Yes No [16]  ? No [17]
Saxon 8+ 2.0 [18] 2.0 [18] No 1.0 [18] No Yes [19] No No Yes [20] Yes [20] No No
Xalan 1.0 1.0 No No No No No No No No No No
XQilla 2.0 No [21] No 1.0 No Yes Yes No No Yes No No
XQSharp 2.0 No No 1.0 1.0 No No No No No No No
Zorba 2.0 No No 1.0 Yes Yes No Yes Yes [22] No [23] No No

In addition to this table, an interesting link (though limited to XQuery) is the official XQuery Test Suite Result Summary hosted by the W3C XML Query working group.


  • For each of the "Languages using XPath", add a one-line description of the language. Add also other XPath/XQuery/XSLT specs (like Update, Full Text, etc.)
  • Add a dedicated sub-section for each processor for which there is something more to say about.
  • Notes from an email by Abel on XSL List (look at the whole thread too). To integrate into this page, above...
Thanks to everyone for joining in on this discussion, which went slightly beyond my original intentions (a good thing), but learnt a few new things along the way. Was a bit surprised that throughout this thread, the market seems divided between LAMP and Java only. What happened to ASP, C#.NET or even desktop/tools? And what about browser's client-side XSLT 2.0? If I try to compile a little final list of all information so far, it'll look something like the following. If you have information about the gaps in my information gathering, I'm (still/always) all ears. Complete implementations
  • Saxon-HE, open source, basic [1][3]
  • Saxon-PE, commercial closed source, basic [2][3]
  • Saxon-EE, commercial closed source, schema-aware [2][3]
  • AltovaXML, free closed source, schema-aware[4]
  • IBM WebSphere Feature Pack, free^ closed source, schema aware[5]
^ the feature pack is free, WebSphere, to which it belongs, is not Incomplete implementations
  • Intel XSLT 2.0, public beta free dl, basic^, 90% conformance [6]
  • Gestalt, open source, no more development, unknown conformance [7]
  • Oracle 10.1+, unclear status, no dl, unknown conformance [8]
^ Intel wants feedback, in particular about whether to implement SA. Alternatives
  • EXSLT, extensions to XSLT 1.0 to close the gap, no conformance [9]
  • XSLT 2.0 through XSLT 1.0 (can't find the link anymore)
No plans
  • Microsoft has postponed plans for XSLT 2.0 indefinitely [10]
  • Native XSLT 2.0 for .NET. The XPath 2.0 datamodel is already there
  • Native C/C++ XSLT 2.0 processor for LAMP and others
  • Open source C-interface for implementation in open source browsers


  1. Berkeley DB XML does not provide a way to evaluate an XPath expression while rejecting XQuery expressions that are not strictly XPath expressions. But as XPath expressions are valid XQuery expressions, it gives a way to evaluate XPath 2.0 as well.
  2. Support for XPath 2.0 is being considered.
  3. Provided by integration with an external transformer such as Saxon or Xalan.
  4. 4.0 4.1 4.2 Provided by integration with EMC Documentum xDB.
  5. Support for XPath 2.0 in xDB is being considered. In the meantime, XQuery remains the main query language in xDB.
  6. Provided by integration with an external transformer such as Saxon or Xalan.
  7. Provided by integration with EMC Documentum XProc Engine.
  8. Provided by integration with an external transformer such as Saxon or Xalan. Native version is in development (work is currently being done to improve that support).
  9. The XProc support in eXist is partial, see 8.3. xprocxq compliance and limitations for further details.
  10. eXist does not support the Full Text spec, but integrates Lucene to provide a similar functionality.
  11. 11.0 11.1 As custom extensions to XQuery. Will be aligned to XQuery 1.1 spec soon.
  12. MarkLogic Server 4.1-5 passes 99.9% of the standard XQuery test suite, and contains in addition optional language extensions (among which try/catch, function mapping, multi-transaction modules, private functions and variables, binary nodes, validate as expression).
  13. 13.0 13.1 XQuery Update and Full Text are not supported, but MarkLogic Server provides proprietary functions to achieve the same goals.
  14. MarkLogic Server contains a built-in application server with XQuery as a programming language (HTTP 1.1, integrated SSL, multipart form handling, URL rewriting, error handling).
  15. Qizx supports also windowing, grouping and try/catch from current XQuery 1.1 draft, and support for function items is currently under work.
  16. Support for function items in Qizx is currently under work.
  17. There used to be in Qizx a module called XQSP (for XQuery Server Pages), but it is no more supported for now. It could be revamped in a next release though.
  18. 18.0 18.1 18.2 Saxon B is free and supports XSLT and XQuery Basic, Saxon SA is commercial and supports XSLT and XQuery Schema Aware. Beginning at 9.2, Saxon exists in 3 flavours: HE is free and supports XSLT and XQuery Basic, PE is commercial and supports XSLT and XQuery Basic with additional features, and Saxon EE is commercial and supports XSLT and XQuery Schema Aware. Saxon SA and EE are XML Schema processors too. Saxon PE and EE will also support XSLT 2.1 and XQuery 1.1 as the working drafts evolve [1].
  19. In Saxon EE.
  20. 20.0 20.1 Either as extensions in Saxon SA or as part of XQuery 1.1 in Saxon PE and EE.
  21. Under development - partial implementation available.
  22. Part of XQuery 1.1.
  23. Under development.
Personal tools