Welcome to Rexsel
Note
This site is still under construction and some of the pages are still changable. In particular the error messages produced by the compiler in the examples are being continuously improved.

Rexsel is a simplified (compact, non-XML), easy to read version of XSLT, similar to the relationship between Relax-NG and its compact form.

It has been successfully used on the Paloose, Hop Vine Music sites, as well as this site, generating all the necessary XSLT transform files. This is done when the site is built and uploaded to the server, rather than being performed on each browser request.

It was conceived after many years of writing XSLT templates for translating XML into various forms: XML, XHTML, Swift code, and even LaTeX. While the underlying structure is virtually identical to XSLT, it is hoped that the result will help users produce more concise, readable stylesheets, independent of XML.

stylesheet { version "1.0" proc helloWorld { element "div" { attribute "class" "simpleBox" text "Hello World!" } } }

Rexsel was developed on a Mac using Xcode with Swift as the underlying language; however, the actual compiler kernel is "OS neutral". The compiler (RexselKernel) is written as a Swift Package, currently here, and there is a command line application (CRexsel) currently here which is also also a Swift Package, that uses the RexselKernel package. Both can be built on any system that supports Swift. Currently it has been extensively tested on a MacOS system and a Parallels based Ubuntu and Fedora Linux, both running on MacOS 14.4.1 Sonora on a M2 Mac Mini.

The CRexsel application also provides an "uncompiler" function that takes existing XSLT files and translates them to a basic Rexsel format (ignoring XML comments). This should make migrating XSLT stylesheets into Rexsel much easier.

There is a MacOS only application, using the same RexselKernel package, that provides an editor and real-time compile function. It is not ready for release but is used to aid in the development of the compiler.

Spurious logging
Corrected RexselLogger
Null block detection
Updated to handle XSLT 1.1
Updates to syntax checking etc
Copyright 2024 Hugh Field-Richards. All Rights Reserved.