Imagining, building and using an XSLT virtual machine

Mark Howe & Tony Graham
Xcruciate
Play (28min) Download: MP4 | 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.