A language built to support event handling, not strictly a functional programming language but fitting that mold. A deep understanding of markup structures. A home in the browser.
Thursday afternoon at Balisage, O’Neil Delpratt and Michael Kay discussed Interactive XSLT [2.0] in the browser, showing not just the usual transformations but a working engine for a graphical interface. Their earlier XML Prague paper also tells the story and shows more code detail, including a chess game.
The Saxon-CE project page, in addition to pointing to a GitHub repo and identifying the open source (MPL) license, links to the documentation. In properly recursive style, that documentation itself uses Saxon-CE to display its content. There’s also a simpler books application.
I need to take a much closer look at the details of this, especially performance. It uses a subset of XSLT 2.0, notably without XML Schema. It’s built using GWT, which Kay said bound it to the client-side world of browsers, but it may be possible to use it on the server side with Node.
Kay described the mechanisms for interactivity:
The development style is different. You start with an HTML skeleton and populate it with different style sheets. You can change those sections in response to an event.
A questioner asked if this would also work with graphics, particular SVG. Kay admitted his surprise to be using XSLT as a graphics programming language. (Via Twitter, here’s a demo with SVG graphics from @XMLArbyter as well.)
(And even if you don’t like XSLT, hopefully the mere fact that this works gives you more ideas.)