使用Java进行XSLT处理?

时间:2011-01-05 13:24:58

标签: java xslt

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

4 个答案:

答案 0 :(得分:129)

以下是使用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")));
    }
}

输入也可以来自字符串或DOMSource,输出可以是DOMSource etc

答案 1 :(得分:8)

Java标准库为XML解析提供了一个(XSLT)转换接口。请参阅API文档,了解类javax.xml.transform.Transformerjavax.xml.transform.TransformerFactory

答案 2 :(得分:7)

  

我是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转换。

例如, here is 如何从命令行启动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\"]%是名称 - 值列表外部参数(我几乎总是把它留空)。

答案 3 :(得分:5)

JAXP提供了一种独立于实现的XSLT转换方法。 Here is the tutorial让你入门如果您正在使用大型XSLT和/或使用多个XSLT,那么出于性能原因,还可以选择缓存已解析的XSLT模板。 This article解释了如何缓存xslt的