Effiziente XSLT-Pipeline in Java (oder Umleiten von Ergebnissen an Quellen)
Ich habe eine Reihe von XSL 2.0-Stylesheets, die ineinander übergehen, d. H. Die Ausgabe von Stylesheet A füttert B füttert C.
Was ist der effizienteste Weg, dies zu tun? Die umformulierte Frage lautet: Wie kann man die Ausgabe einer Transformation effizient in eine andere umleiten?
Hier ist mein erster Versuch:
@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);
}
Wie Sie sehen, verwende ich ein DOM, um zwischen den Transformationen zu sitzen, und obwohl es praktisch ist, ist es in Bezug auf die Leistung nicht optimal.
Gibt es eine einfache Möglichkeit, ein SAXResult an eine SAXSource zu leiten? Eine StAX-Lösung wäre eine weitere Option.
Mir sind Projekte wie bekanntXProcDas ist sehr cool, wenn Sie sich das noch nicht angesehen haben, aber ich wollte nicht in ein ganzes Framework investieren.