You can use DOM to chain transforms in memory.
Example:
// Setup the transformations Transformation tfactory = TransformerFactory.newInstance(); Transformer step1xform = tfactory.newTransformer(new StreamSource("step1.xsl")); Transformer step2xform = tfactory.newTransformer(new StreamSource("step2.xsl")); // Create a DOMResult to hold the between XML document DOMResult between = new DOMResult(); // Transform the input step1xform.transform(new StreamSource("in.xml"),between); // Transform the output of step 1 step2xform.transform(new DOMSource(between.getNode()),new StreamResult("out.xml"));