使用已编译的XSL转换

时间:2014-04-22 07:40:29

标签: java xml xslt transformation compiled

我使用TransformerFactory从XSL转换文件生成已编译的.class文件(Translet),该文件由org.apache.xalan.xsltc.trax.TransformerFactoryImpl实现。

不幸的是,尽管我搜索了几个小时,但我找不到如何在XML转换中使用这些translet类的方法。

您可以提供任何代码示例或参考文档吗?因为this文件不够复杂。 感谢。

1 个答案:

答案 0 :(得分: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);
    }

在您的搜索中,您错过了type the Interface specification into Google,其中3rd link显示了与Transformer相同的呼叫签名的接口定义。因此,您可以为自定义对象交换变换器对象(或将变换器对象保留在内存中以供重用)

希望有所帮助