Engines

From EXPath

(Difference between revisions)
Jump to: navigation, search
m (Comparison)
(Added introduction.)
Line 1: Line 1:
 +
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 [http://expath.org/lists.html mailing list].
 +
==Languages using XPath==
==Languages using XPath==
Line 15: Line 17:
* [http://www.w3.org/TR/sml/ SML]
* [http://www.w3.org/TR/sml/ SML]
* [http://code.google.com/p/xspec/ XSpec]
* [http://code.google.com/p/xspec/ XSpec]
-
* ...
 
==Implementations==
==Implementations==
Line 36: Line 37:
* Intel® SOA Expressway's [http://software.intel.com/en-us/articles/intel-soa-expressway-xslt-20-processor/ XSLT 2.0 Processor] (this is an alpha version, post comments on [http://software.intel.com/en-us/forums/whatif-alpha-software/ this forum]).
* Intel® SOA Expressway's [http://software.intel.com/en-us/articles/intel-soa-expressway-xslt-20-processor/ XSLT 2.0 Processor] (this is an alpha version, post comments on [http://software.intel.com/en-us/forums/whatif-alpha-software/ this forum]).
* [http://sausalito.28msec.com/latest/ 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''.
* [http://sausalito.28msec.com/latest/ 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===
 +
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
 +
[http://www.xmlmind.com/qizx/features.html features] and
 +
[http://www.xmlmind.com/qizx/product.html product] pages for more
 +
informations.
==Comparison==
==Comparison==

Revision as of 16:06, 3 February 2010

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.

Contents

Languages using XPath

Implementations

  • Xalan by Apache, an XPath 1.0 and XSLT 1.0 processor, used in the Sun's Java standard distribution.
  • Saxon by Saxonica (by Michael Kay), an in-memory XPath 2.0, XSLT 2.0, XQuery and XML Schema processor.
  • MarkLogic, a native XML database with XQuery support.
  • eXist, an open source native XML database with XQuery and XSLT support.
  • Oracle Berkeley DB XML, an open source native XML database with XQuery support.
  • Oracle ? (XDB, BPEL, etc.)
  • IBM ?
  • Zorba by the FLWOR Foundation, an embeddable XQuery processor.
  • XQilla
  • BaseX, a native XML database with XQuery support.
  • MXQuery by ETH Zurich, an in-memory XQuery processor.
  • xDB by EMC, a native XML database with XQuery support.
  • Calabash, Norman Walsh's XProc processor.
  • Calumet, EMC's XProc processor, developed by Toman Vojtech.
  • Qizx, by XMLmind, a fast XML repository and search engine fully supporting XQuery.
  • Intel® SOA Expressway's XSLT 2.0 Processor (this is an alpha version, post comments on this forum).
  • 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

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.

Comparison

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 XQueryX Update Full Text Scripting try/catch function items packaging webapps
Xalan 1.0 1.0 No No No No No No No No No No
Saxon 8+ 2.0 [1] 2.0 [1] No 1.0 [1] No Yes [2] No No Yes [3] Yes [3] No No
Zorba 2.0 No No 1.0 Yes Yes No Yes Yes [4] No [5] No No
XQilla 2.0 No [6] No 1.0 No Yes Yes No No Yes No No
Berkeley XML No No No 1.0 No Yes No No No No No No
eXist 2.0 2.0 [7] Yes [8] 1.0 No Yes No No Yes [9] Yes [9] No No
Qizx 2.0 No No 1.0 [10] No Yes Yes No Yes No [11]  ? No [12]

TODO

  • 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]
Wishes
  • 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
References

Notes

  1. 1.0 1.1 1.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].
  2. In Saxon EE.
  3. 3.0 3.1 Either as extensions in Saxon SA or as part of XQuery 1.1 in Saxon PE and EE.
  4. Part of XQuery 1.1.
  5. Under development.
  6. Under development - partial implementation available.
  7. 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).
  8. The XProc support in eXist is partial, see 8.3. xprocxq compliance and limitations for further details.
  9. 9.0 9.1 As custom extensions to XQuery. Will be aligned to XQuery 1.1 spec soon.
  10. Qizx supports also windowing, grouping and try/catch from current XQuery 1.1 draft, and support for function items is currently under work.
  11. Support for function items in Qizx is currently under work.
  12. 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.
Personal tools