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