ho una serie di XSL 2.0 fogli di stile che si alimentano a vicenda, cioè l'uscita del foglio di stile A alimenta B alimenta C.pipeline efficiente a XSLT in Java (o il reindirizzamento Risultati a origini)
Qual è il modo più efficiente di fare questo? La domanda riformulata è: come si può indirizzare in modo efficiente l'output di una trasformazione in un'altra.
Ecco il mio primo tentativo:
@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);
}
Come potete vedere, sto usando un DOM di sedersi tra le trasformazioni, e anche se è conveniente, la sua prestazione non ottimale saggio.
C'è un modo semplice per instradare dire, indirizzare un SAXResult a SAXSource? Una soluzione StAX sarebbe un'altra opzione.
Sono a conoscenza di progetti come XProc, che è molto bello se non si è ancora visto, ma non volevo investire in un intero framework.
"per (Transformer Autobot: Autobots) {" :-) Priceless –