The growing use of XML languages has spurred the demand for means to transform XML documents. Many XML transformation systems
are, however, limited in their expressive power, and fail to provide a useful collection of combinators for several tasks.
This paper describes SXSLT, a practical, higher-order, concise, expressive and readable declarative XML transformation language.
The language is a head-first rewriting system over abstract XML syntax trees, implemented as a library extension of Scheme.
SXSLT features local scoping of re-writing “templates”, first-class stylesheets, flexible traversal strategies, the ability
to re-traverse the original or the transformed trees. The language can emulate XSLT in whole or in part, in a more coherent
and expressive manner. By virtue of being a Scheme library, SXSLT is seamlessly integrated with Scheme.
We illustrate the power of SXSLT with several examples abstracted from practical projects. We and other people have used SXSLT
for over two years for real-life projects, ranging from authoring of static and dynamic Web pages to content-distribution
engines. Our experience and user comments show that SXSLT is expressive and easy to use. We argue that this outcome is a consequence
of SXSLT providing right abstractions for XML transformations, of being higher-order, declarative and extensible.
Keywords: XML - SXML - XSLT - tree traversal - Scheme