Использование скомпилированных XSL-преобразований
Я создаю скомпилированные файлы.class (Translet) из файлов преобразования XSL с использованием TransformerFactory, который реализуется org.apache.xalan.xsltc.trax.TransformerFactoryImpl.
К сожалению, я не смог найти способ, как использовать эти классы транслетов для преобразования XML, несмотря на мои поиски в течение нескольких часов.
Можно ли привести пример кода или справочную документацию? Потому что этот документ недостаточен и сложен. Благодарю.
1 ответ
Стандартное преобразование в XSLT выглядит так:
public void translate(InputStream xmlStream, InputStream styleStream, OutputStream resultStream) {
Source source = new StreamSource(xmlStream);
Source style = new StreamSource(styleStream);
Result result = new StreamResult(resultStream);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer t = tFactory.newTransformer(style);
t.transform(source, result);
}
поэтому, учитывая, что вы используете не фабрику Transformer, а готовый Java-класс (который является дополнительной головной болью при обслуживании и не дает вам намного большей производительности, поскольку вы можете сохранить ваш объект-трансформер после начальной компиляции) той же функции будет выглядеть так:
public void translate(InputStream xmlStream, OutputStream resultStream) {
Source source = new StreamSource(xmlStream);
Result result = new StreamResult(resultStream);
Translet t = new YourTransletClass();
t.transform(source, result);
}
В своем поиске вы пропустили ввод спецификации интерфейса в Google, где 3-я ссылка показывает определение интерфейса, которое имеет ту же сигнатуру вызова, что и Transformer. Таким образом, вы можете поменять объект-преобразователь на свой пользовательский объект (или сохранить объекты-преобразователи в памяти для повторного использования).
надеюсь, это поможет