我为xalan编写了一个 xslt ,它与 xalan cli ( ) 配合得很好org.apache.xalan.xslt.Process
。xslt 使用 xalan 扩展名redirect
它确实生成了几个 xml 文件,如预期的那样。
现在我想从 Java 应用程序进行转换。我查看了org.apache.xalan.xslt.Process源代码,有点复杂(1000行if/then/else)。我找不到文档。我正在查看调用转换并可能设置输出目录的最少代码。
我试过类似的东西:
final ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = null;
InputStream xsl = null;
try {
in = inputFileStream;
xsl = url.openStream();
final TransformerFactory tFactory = TransformerFactory
.newInstance();
final Transformer transformer = tFactory
.newTransformer(new StreamSource(xsl));
transformer.transform(new StreamSource(in), new StreamResult(out));
} catch (Throwable t) {
Activator.logErrorMessage(NLS.bind(
Messages.Import_XSLT_TRANSFORMATION_FAILED, t.toString()));
} finally {
IOUtils.closeQuietly(xsl);
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
}
它适用于简单的 xslt(即没有重定向扩展)。如果我使用带有重定向扩展名的 xslt,我会得到常规输出<?xml version="1.0" encoding="UTF-8"?>
,但没有其他输出文件(就像我在使用 时得到的那样org.apache.xalan.xslt.Process
)。
使用带有重定向扩展名的 xslt 进行转换的最小调用/API 是什么,并且知道所有输出文件将在哪里结束?