Pipeline XSLT eficiente em Java (ou redirecionando Resultados para Origens)
Eu tenho uma série de folhas de estilo XSL 2.0 que alimentam uns aos outros, ou seja, a saída da folha de estilos A alimenta os feeds C.
Qual é a maneira mais eficiente de fazer isso? A questão reformulada é: como alguém pode rotear eficientemente a saída de uma transformação para outra.
Aqui está minha primeira tentativa:
@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 você pode ver, estou usando um DOM para me sentar entre as transformações e, embora seja conveniente, o desempenho não é ideal.
Existe alguma maneira fácil de encaminhar dizer, rotear um SAXResult para um SAXSource? Uma solução StAX seria outra opção.
Eu estou ciente de projetos comoXProc, o que é muito legal se você não deu uma olhada ainda, mas eu não queria investir em um framework inteiro.