Nick Bradbury puts it well:
Learning XSLT wasn't a whole lot of fun, either. It's an odd language with unexpected omissions, bizarre rules and a learning curve that's made steeper by unexpected "gotchas" - in other words, it's just like every other language out there.
It was much the same for me with Tellico. I decided on XML as the underlying data type before I really thought about representing it in the UI. Then I read about XSLT, which could magically turn XML into HTML. At this point, I can't say that I've completely gotten my head around XSLT, it still surprises me occasionally, but when I need to debug, I can generally pinpoint the problem area fairly quickly. And libxslt has pretty good error messages.
Having said that, XSLT 2.0 scares me. There's still no open source, non-Java implementation, as far as I know. And after looking at parts of the spec, gee-whiz...