用Java处理XSLT?

如何在Java中使用XSLT处理器转换XML?

这里是使用变压器的Java API的示例,@Raedwald说:

import javax.xml.transform.*; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; public class TestMain { public static void main(String[] args) throws IOException, URISyntaxException, TransformerException { TransformerFactory factory = TransformerFactory.newInstance(); Source xslt = new StreamSource(new File("transform.xslt")); Transformer transformer = factory.newTransformer(xslt); Source text = new StreamSource(new File("input.xml")); transformer.transform(text, new StreamResult(new File("output.xml"))); } } 

Java标准库为XMLparsing提供了(XSLT)转换接口。 请参阅类javax.xml.transform.Transformerjavax.xml.transform.TransformerFactory的API文档。

我是新来的xslt。 任何人都可以指导我如何用java处理xslt?

这取决于您使用的是哪个基于Java的XSLT处理器。 每个XSLT处理器都有自己的API。

例如,Saxon 6.5.5(用于XSLT 1.0)和Saxon 9.1.07(用于XSLT 2.0)是用Java编写的。 该文档位于http://www.saxonica.com/documentation/documentation.xml

几乎所有的XSLT处理器都有一个命令行工具 ,它不需要编写程序来执行XSLT转换。

例如, 这里是如何从命令行启动Saxon 9.x转换

以下是我经常从命令行使用Saxon的方法

 java -Xms2048M -Xmx10000M -jar C:\xml\Parsers\Saxon\Ver.9.1.0.7\J\saxon9.jar -t -repeat:1 -o %out% %xml% %xsl% %param[ name=\"value\"]% 

其中%out%是输出文件的名称, %xml%是xml文件, %xsl%是主要xslt文件, %param[ name=\"value\"]%是外部参数的名称 – 值列表(我几乎总是把这个空着)。

JAXP提供了一种独立于实现的方式来处理XSLT转换。 这里是让你开始的教程 。 如果您正在处理大量XSLT和/或使用多个XSLT,那么出于性能原因,还可以selectcaching已分析的XSLT模板。 这篇文章解释了如何cachingxslt的