Introduction to Xacerbate

Xacerbate is a real-time XSLT engine for linux, written in threaded C.

Features

How it works

Xacerbate runs as a un*x daemon. Conceptually, it consists of two processes:

  1. an outer loop that handles sockets and OS-type events,
  2. an inner loop that processes and responds to outer loop events by running an XSL stylesheet

Input events that are generated by the outer loop and passed to the inner loop include

Output events that are generated by the inner loop and passed to the outer loop include

The Xacerbate configuration specifies a list of files that Xacerbate can modify - these are the files used to store stateful data. Since XSLT is an XML vocabulary, Xacerbate can modify XSLT files, including XSLT files that it uses itself. It is thus potentially possible to modify the behaviour of Xacerbate in real-time without restarting the server. Xacerbate implements file cacheing to speed up file reading, and a DOM interface to allow the modification of specific data file nodes without recreating the entire data file.

Xacerbate also includes a number of namespaced extensions to XSLT 1.0, including the generation of unique identifiers across multiple parses of the stylesheet and perl-compatible regular expressions.

Status

At the time of writing (winter '09), Xacerbate is almost feature-complete and quite stable. The main feature still to be added is support for server to server socket connections. We then expect the focus for Xcruciate development to shift to applications that depend on Xacerbate, such as Xiguous and Xcathedra.