Discussion started on the ticket (it seems JIRA is down at the moment, so I can't paste the link) on what sort of implementation the XSLT Transformer should have. It later continued on IRC and we decided it would be nice to have some views from others as well, especially considering possible use-cases.
There's several available XSLT implementations for Java platforms, including Xalan/Saxonica/Intel/IBM/others from which Xalan is XSLT 1.0 only and rest are XSLT 2.0. Also, Xalan has ability to use translets or XSLTC for compiled transformers.
What was proposed is using TrAX (JAVA Transformation API), which is the standard way of doing XSLT transformations in the Java world. What we discussed was how to use alternative implementations or configure it. With TrAX it's relatively simple (all Java XSLT transformers as far as I know have TrAX support API), just set Java system property for TransformerFactory implementation to something else. As default it's some version of Xalan included in the JDK on translet mode.
I'd go with this implementation personally, as translet Xalan is well known implementation and it provides quite stable environment with portability across different engines. For example we move different XSLTs between BizTalk / JBossESB / other proprietary systems easily. Extensions are always difficult to port and that's why I don't think easily plugging in different implementations is necessary. There's just more stuff involved than changing few classes.
Seems reasonable to me. IINM, XsltAction in JBoss ESB 4.x has more or less the same approach. So we can take a look at that implementation and move forward a good part of the implementation if appropriate.