I think plain old SAX makes a good substitute. It only lacks one (of the two) good things I like about XSLT, template matching. But Fowler suggests a way to get that: http://martinfowler.com/bliki/MovingAwayFromXslt.html
The other thing I like about XSLT is that it creates a hard code-boundary. But I hardly think its syntax makes that worth it.
The other thing I like about XSLT is that it creates a hard code-boundary. But I hardly think its syntax makes that worth it.