Hello, According to the xalan docs, TrAX is independent of XSLT - ie not tied to only performing transformations using xslt. We have a processor which is indeed not XSLT, but we also need to support XSLT. With TrAX, the user calls TransformerFactory.newInstance(), which uses a system property javax.xml.transform.TransformerFactory to determine which concrete class to instantiate.
The problem is that subsequently from this piece of code: Transformer transformer = factory.newTransformer(Source) We want: If the Source is an XSLT stylesheet, to use an XSLT processor (xalan etc) If the Source specifies instructions our processor handles, we want to use our processor. We have an implementation of Source which specifies the location of our instructions, so distinguishing from StreamSource etc is no problem at this level. But the single system property which determines which TransformerFactory implementation means that if we use our implementation, we don't know which XSLT processor the user wants. Does that make sense? Options we have: Use TransformerFactory.newInstance() for XSLT, use normal constructor for our processor TransformerFactory.newInstance() returns our implementation, we define our own system property for the XSLT implementation. This would mean that people using the default processor rather than the system property would presumably find their code stops working. (Apologies that this is not xalan specific, is there a better place to ask the question?). Thanks, Rich
