SourceForge.net Logo
digitalecology




























project::xslt4exml

overview


This is an implementation of the most useful aspects of XSLT, developed specifically using and for the intention of being used in conjunction with the Electric XML product from The Mind Electric (http://www.themindelectric.com).

TME have implemented a 'fast, useful subset' of a full XML parser under the 80/20 ethos of only implementing what was most frequently used, guided by a need for fast execution, and usability of the API.  This project builds on that - and applies a similar ethos to implementing a 'fast, useful subset' of the XSLT standard, with EXML at its core for XML parsing, manipulation, and creation.

This project is generously hosted by Sourceforge.
compatibility


Release 1.3.0 is essentially the same as 1.2.1 but with some minor modifications so that it is compatible with with EXML6.0.  The key differences are in the manner in which XPath objects are instantiated with cache and namespace context support.

Release 1.2.1 works fine with EXML version 5.0 as the changes noted in the release note below have in fact being rolled into the core EXML classes, and so xslt4exml will interoperate without modification.  

Watch this site for news and info regarding the iminent next release!

The EXML project is also open sourced under the Electric XML Licence (http://www.themindelectric.com/exml/license-EXML.html).
usage


When using EXML as an XML parser, with integrated DOM2 support, an EXML-parsed Document may be passed to any DOM-compliant XSL engine (such as Xalan) in order to execute any required transformations.  This XSL engine (XSLT4EXML) is written using EXML APIs natively, so receives a performance boost due to EXML’s fast parsing and manipulation capabilities, as well as being implemented specifically to execute quickly and efficiently.  Initial benchmarking shows a significant head start (order of magnitude is common) on transforming XML when compared to Xalan, for instance, even when EXML is doing all the parsing.
technical requirements


The project technical requirements are as follows:
  • Java2 (jdk1.4 used during development)
  • EXML version 5.0 (with release 1.2.1)
  • EXML version 6.0 (with release 1.3.0)
  • Implemented to the TRaX standard (javax.xml.transform) aspect of JAXP.

issues


By the fact that this project is based on implementing a 'subset' of XSLT (and XPath), you may find that your stylesheets wont run without some form of modification; especially if you're using complex XPath expressions (Electric XPath can't deal with much of that anyway, so you probably won't be).  However you might be pleased to know that this initial release has a good go at implementing pretty much all of the XSLT/XPath functions, and the xsl:if (and xsl:when) test supports compound expressions.  Please see what happens and respond to the appropriate fora, and i'll try to improve things.

Please also note that with EXML6.0 supporting the Jaxen XPath implementation, a future release of this project should be able to take advantage of this by deferring all XPath support to the Jaxen implementation where it makes sense in terms of the play-off between inline implmentation (for performance) versus widespread XPath support.
licence


This project is licenced under the LGPL (Library 'lesser' General Public Licence) source approved licence.
download


Please download the appropriate EXML sourcecode, then install xslt4exml from the following list of downloads:

The public release of this code available at SourceForge:

version
detail
0.1
inital public release
1.1.1.2
(EXML4.1): Update after first major testing cycle
1.2.1
(EXML 5.0): Major changes for performance; a compiled option to bring JSP-style stylesheet pre-compilation into java classes for runtime execution on the fly!  Performance in development benchmarks shows order-of-magnitude improvements over the 'reference' XSLT implementation...
1.3.0
Interoperability with EXML 6.0.
1.4.0
(planned): Enhanced usage of the Jaxen support in EXML 6.0
1.5.0
(planned): SAX-based micro-transformation engine for effecient, targeted transformations on-the-fly.
2.0.0
(planned): rework for tighter integration with EXML including EXML+ extensions.
release notes


The following release notes are currently available:
support


This being an open source project; the usual disclaimers appy (ie use at your own risk if it breaks fix it etc etc etc...).  Please feel free to patch up the code yourself; if you're interested get in touch at the Sourceforge site and perhaps think about becoming a developer yourself.  Please also refer to the fora on the sourceforge website, and the TME support group on yahoo.


references::
jdk1.4
XML
XSLT
TRaX
TME
LGPL