我使用TransformerFactory从XSL转换文件生成已编译的.class文件(Translet),该文件由org.apache.xalan.xsltc.trax.TransformerFactoryImpl实现。
不幸的是,尽管我搜索了几个小时,但我找不到如何在XML转换中使用这些translet类的方法。
您可以提供任何代码示例或参考文档吗?因为this文件不够复杂。 感谢。
答案 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相同的呼叫签名的接口定义。因此,您可以为自定义对象交换变换器对象(或将变换器对象保留在内存中以供重用)
希望有所帮助