Использование скомпилированных 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. Таким образом, вы можете поменять объект-преобразователь на свой пользовательский объект (или сохранить объекты-преобразователи в памяти для повторного использования).

надеюсь, это поможет

Другие вопросы по тегам