Использование скомпилированных преобразований XSL

Я создаю скомпилированные файлы .class (Translet) из файлов преобразования XSL с использованием TransformerFactory, который реализован org.apache.xalan.xsltc.trax.TransformerFactoryImpl.

К сожалению, я не смог найти способ, как использовать эти классы транслетов для преобразования XML, несмотря на многочасовые поиски.

Можете ли вы дать пример кода или справочную документацию? Поскольку этот документ недостаточен и сложен. Спасибо.


person kursattokpinar    schedule 22.04.2014    source источник
comment
Предоставьте код, как вы создаете свои транслеты и как вы их используете в данный момент. (может включать /* здесь я застрял */)   -  person stwissel    schedule 23.04.2014


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

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

person stwissel    schedule 24.04.2014
comment
спасибо @stwissel 3-я ссылка может отличаться в наших поисках, я применил ваш ответ и нашел то же решение в файлах примеров файлов загрузки xalan 2.7.1 - person kursattokpinar; 25.04.2014