Imagining, building and using an XSLT virtual machine

Mark Howe & Tony Graham
Xcruciate
Play (28min) Download: FLV | Mov | Ogg | mp3

XSLT is the canonical XML vocabulary for transforming XML, but the creators of realtime server applications such as chatrooms and virtual worlds have tended to rely on lower-level technologies such as SAX and DOM for manipulating XML client-server protocols. The goal of the open-source Xcruciate project is to develop a generic server solution based around XSLT, with I/O, data storage and application code in XML.

Theorists have discussed the extent to which XSLT is Turing-complete, with Dimitre Novatchev’s FXSL showing what is possible within a single transformation. The Xcruciate team has taken a less pure and more pragmatic approach, using a LibXSLT-based virtual machine to perform successive transformations on state data and to handle I/O to multiple clients via socket connections.

An all-XML server implementation offers a number of advantages compared to bespoke OOP code, notably by enabling snapshots of the entire environment through serialisation. The main challenge has been balancing the conceptual elegance of pure XSLT with the need for rapid throughput and relatively concise application code.

The talk will focus on the design decisions made in the course of Xcruciate’s development and the challenges encountered during implementation, as well as giving a taste of server application development within an all-XML environment.

1 Responses to “Imagining, building and using an XSLT virtual machine”


  • Interesting stuff, which I’m looking into. I have spent almost as long working on an XML-VM, but with a different aim, and consequentially a different design.

    It’s called Friend2Friend (F2F), and was originally designed as a tool to implement Altruistic Economics, which is still an active plan. Like you, I have wrestled with how to tame XSLT and create a syntax that was concise enough to be manageable. I am presenting it as a language for writing decentralised programs.

    One of my hopes is that, since we’re both using XML, we will be able to make the systems inter-operable and assemble them in synergistic fashion.

Leave a Reply