Canalización eficiente de XSLT en Java (o redireccionando los resultados a las fuentes)

Tengo una serie de hojas de estilo XSL 2.0 que se conectan entre sí, es decir, la salida de la hoja de estilo A alimenta a B alimenta a C.

¿Cuál es la forma más eficiente de hacer esto? La pregunta reformulada es: ¿cómo se puede enrutar de manera eficiente la salida de una transformación a otra?

Aquí está mi primer intento:

@Override
public void transform(Source data, Result out) throws TransformerException{
    for(Transformer autobot : autobots){
        if(autobots.indexOf(autobot) != (autobots.size()-1)){
            log.debug("Transforming prelim stylesheet...");
            data = transform(autobot,data);
        }else{
            log.debug("Transforming final stylesheet...");
            autobot.transform(data, out);
        }
    }
}

private Source transform(Transformer autobot, Source data) throws TransformerException{
    DOMResult result = new DOMResult();
    autobot.transform(data, result);
    Node node = result.getNode();
    return new DOMSource(node);
}

Como puede ver, estoy usando un DOM para ubicarme entre las transformaciones, y aunque es conveniente, no tiene un rendimiento óptimo.

¿Hay alguna forma fácil de enrutar para decir, enrutar un SAXResult a un SAXSource? Una solución StAX sería otra opción.

Soy consciente de proyectos comoXProc, lo cual es muy bueno si aún no ha echado un vistazo, pero no quería invertir en un marco completo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta