Without going onto the merits or otherwise of XSLT, there is another observation...
For some reason, even on teams with good engineering practice, all discipline goes out of the window when people write XSLT. So a dev who might write beautiful maintainable code in any other language suddenly reverts to the worst spaghetti style on XSLT with 1000 line functions, impenetrable naming, nary a comment to be seen.
There may be some of that, especially at the beginning, but with a little experience that phase seems to pass, it helps to be working in an environment with a good XSLT debugger of course...
I think the fundamental issue may be more to do with a flawed distinction between read "code" and just a "stylesheet / data transform"
For some reason, even on teams with good engineering practice, all discipline goes out of the window when people write XSLT. So a dev who might write beautiful maintainable code in any other language suddenly reverts to the worst spaghetti style on XSLT with 1000 line functions, impenetrable naming, nary a comment to be seen.
I know. I've been that dev.