XSLT is one of those cases where the idea and the intention is great, but the actual implementation is horrible.
I would love to see someone propose a modern alternative to XSLT, that works for the same use cases, but avoids XSLTs mistakes.
You might find Enlive (a Clojure library) interesting:
https://github.com/cgrand/enlive
See Brian Marick's 5-part tutorial for a good overview:
https://github.com/cgrand/enlive/wiki/Table-and-Layout-Tutor...