我有一系列相互馈送的 XSL 2.0 样式表,即样式表 A 的输出馈送 B 馈送 C。
这样做最有效的方法是什么?重新表述的问题是:如何有效地将一种转换的输出路由到另一种转换。
这是我的第一次尝试:
@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);
}
如您所见,我使用 DOM 来进行转换,虽然它很方便,但在性能方面并不是最优的。
是否有任何简单的路由方法可以将 SAXResult 路由到 SAXSource?StAX 解决方案将是另一种选择。
我知道像XProc这样的项目,如果你还没有看过的话,这很酷,但我不想投资整个框架。