What is Xcerpt?
Xcerpt is a declarative, rule-based query and transformation language for XML,
inspired by logic programming. Instead of the path-based navigational approach
taken by languages like XSLT and XQuery, Xcerpt uses pattern-based, positional
queries, where a pattern is an "example" of the database containing variables
for binding content.
Xcerpt is a research project at the Teaching and Research Unit for Programming
and Modelling Languages at the Ludwig-Maximilians University Munich. The core
language is developed by Sebastian Schaffert and François Bry, but the Xcerpt
Team consists of several other researchers working on related topics.
For more information, see http://www.xcerpt.org
Widespread query languages for XML, like XQuery and XSLT, are based on a
navigational selection, in which the user needs to specify path navigations
through the data tree. In our opinion, this approach is rather well suited for
simple queries but tends to be very complicated for more complex queries. In
contrast, Xcerpt is based on a positional selection in which a user specifies an
incomplete pattern for the data tree in which the parts that are to be selected
are represented by variables. It is our conviction that such a pattern based
selection is more suitable to querying XML data.
Xcerpt programs in general consist of several rules. Each rule specifies a
transformation of a data tree (or graph) into a possibly different data tree
(graph). Like in logic programming, a rule may query the result of another rule
("rule chaining" or "inference").
About this Prototype
This prototype serves as a testbed for experimenting with the Xcerpt language. As the
language is still in development, aspects may change, although the core syntax is more
or less fixed.
Feel free to use this prototype for experimenting with Xcerpt yourself. However, we
discourage the use of this software in a production environment and we do not make
guarantees that future versions of this prototype will be compatible with programs
written for the current prototype.
The prototype is written in the functional, lazily evaluating programming language
Haskell, since it provides a high abstraction while still being reasonably efficient
with respect to speed and memory. Future versions of Xcerpt may be written in e.g. C,
but there is no schedule for this currently.
Now have fun,
Sebastian Schaffert, in the name of the Xcerpt Team