In my experience, rather than relying on the JAXP TransformerFactory searching the classpath, it's much more reliable to set the system property javax.xml.transform.TransformerFactory explicitly to the value "net.sf.saxon.TransformerFactoryImpl". You can do this in the init() method of your servlet code, and if you want to parameterize it you can read the relevant values from the web.xml configuration file.
Or to make it even more robust (and faster), if you don't mind having a compile-time reference to Saxon in your code, replace the call
factory = TransformerFactory.newInstance();
by
factory = new net.sf.saxon.TransformerFactoryImpl();
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference