You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Dan Diephouse <da...@envoisolutions.com> on 2007/03/24 22:06:41 UTC

[slightly offtopic] SXC - simple xml compiler

Hola,

Since we're talking about service routing currently, I thought I would bring
up SXC - which is a project I started recently.  From my blog entry:

"""
The core of SXC is an API which allows you to declaritively say what type of
XML you're expecting to be parsing or writing. You can then attach actions
to perform when you encounter/write that xml. For instance, you can say I'm
expecting the "customer" element and I want to do "new Customer()" when I
get there. It will then compile an optimized XML parser for you.

SXC includes 3 frontends in addition to its core APIs, and these are
probably what you really care about:

   - JAXB <http://sxc.codehaus.org/JAXB>: SXC uses the JAXB annotations
   to drive compilation of an optimized parser/writer for you *at
   runtime. * Why would you do this? It is 2-3x faster on the reading
   side, and about 20-90% faster on the writing side of things. (See below for
   more important details). We do not claim JAXB compliance yet, but we support
   most common JAXB functionality. It has been tested with both
CXF<http://cwiki.apache.org/CXF/>and
   XFire <http://xfire.codehaus.org/>. Note: we aren't trying to replace
   the JAXB RI here, we're augmenting it. You still need to use XJC to compile
   your schemas and keep the RI around at runtime.
   - XPath <http://sxc.codehaus.org/XPath>: SXC can compile down XPath
   expressions and build an *optimized streaming xpath parser* for them.
   Through an XPath event API, you can listen for multiple events as you scan a
   document. Currently we only support a vey limited subset of XPath
   expressions, but my hope is it will grow significantly as time goes on. On a
   VERY ROUGH test (did I mention this was very rough?) it performed about 100x
   faster than Jaxen for repeated evaluations on a DOM with expressions like
   "/foo/bar[@bleh='biz']/baz[text()]".
   - Drools <http://sxc.codehaus.org/Drools>: Now that we have a
   streaming XPath parser, whats the next logical step? Efficient content based
   message routing using rules! Through Drools and SXC you can create a very
   efficient XPath based message router. Rules will fire as your XPath criteria
   are met and you can take action. I'm sure there are many other uses for
   Drools+XPath, but this is one at the forefront of my mind.

"""

Some links:
http://netzooid.com/blog/2007/03/16/sxc-simple-xml-compiler-jaxb-runtime-streaming-xpath-implementation-and-more/
http://sxc.codehaus.org

My goals in relation to CXF are:
a) Allow use of the JAXB runtime for even faster services
b) Allow the streaming XPath compiler for service routing

Cheers,
- Dan

-- 
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog