使用Java进行XSLT处理?

Ven*_*kat 68 java xslt

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

Ask*_*kov 133

以下是使用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")));
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Rae*_*ald 8

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

  • 如果您可以为相关类提供Java 6 javadoc的链接以及一个简单的代码示例,那就太棒了. (3认同)

Dim*_*hev 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转换.

例如,这里是:如何从命令行启动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\"]%
Run Code Online (Sandbox Code Playgroud)

其中%out%是输出文件的名称,%xml%是xml文件,%xsl%是主xslt文件,%param[ name=\"value\"]%是外部参数的名称 - 值列表(我几乎总是将其留空).

  • 有一个用于XSLT的标准API,请参阅包`javax.xml.transform`.除非有使用特定第三方库的一些令人信服的理由,否则我会使用它来支持任何具有自己API的第三方库. (8认同)
  • @Dimitre但问题是如何用Java进行XSLT处理; 谈论其他方法(不是通过API)是不相关的.如果您打算使用某些API,请使用标准API,除非有令人信服的理由使用某些非标准API. (4认同)

Ara*_*ram 5

JAXP提供了一种与实现无关的XSLT转换方式.这是帮助您入门的教程.如果您正在使用大型XSLT和/或使用多个XSLT,那么出于性能原因,还可以选择缓存已解析的XSLT模板.本文介绍如何缓存xslt