У меня есть серия таблиц стилей 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, что очень круто, если вы еще не посмотрели, но я не хотел инвестировать в целую структуру.