Boost logo

Boost :

Subject: [boost] Probing interest in a typed XML traversal library
From: Sumant Tambe (sutambe_at_[hidden])
Date: 2010-11-28 17:17:47


Hello boosters!

I'm interested in gauging interest in a typed XML traversal library that
combines the succinctness of XPath with the type-safety of XML data-binding
tools. I've been developing one such library called LEESA: Language for
Embedded Query and Traversal <http://www.dre.vanderbilt.edu/LEESA>. LEESA
has several capabilities:

   1. Succinct and expressive XPath-like notation for writing object
   structure traversals
   2. Supports child, parent, sibling, descendant, ancestor axes
   3. Compile-time schema conformance checking
   4. Supports GOF visitors and hierarchical visitors
   5. Strategic Programming ... and more!

Here are two quick examples comparing XPath and LEESA. More examples are
available on the LEESA homepage.

XPath expression: "/catalog/book/author/name/text()"
LEESA expression:
*std::vector<name> author_names = evaluate(root, catalog() >> book() >>
author() >> name()); *

XPath expression: "//name/text()"
LEESA Expression:
*std::vector<name> names = evaluate(root, catalog() >>
DescendantsOf(catalog(), name())); *

The above expressions are checked for schema-conformance at compile-time.
LEESA builds these capabilities on top of existing XML data binding tools
that generate C++ code from .xsd files. The general process of using LEESA
is as follows:

   1. Generate C++ classes using your favorite XML data binding tool
   2. A python script that comes with LEESA adds a few functions in
every generated
   C++ class. It generates a lot of typedefs and helper functions, which
   invoke tool generated code. This creates a bridge between LEESA and the
   code generated by the xml data binding tool. Currently it supports Code
   Synthesis's xsd and Universal Data Model (UDM) from Vanderbilt University as
   the underlying code generators.
   3. The user includes LEESA.h in his/her C++ program (it is
header-only), uses
   its programming model, compiles, and links with the tool generated code and
   libraries.

So folks, please speak up if you are interested in having such a library in
Boost.

Thanks,

Sumant.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk