You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并带xsl:import继承的多个XSL文件?求Java工具或库

实现XSL文件扁平化的Java工具/方案

1. Saxon库(推荐)

Saxon是Java生态中最常用的XSL处理库,支持XSLT 1.0/2.0/3.0,自带合并导入XSL的能力,能自动处理xsl:import和xsl:include指令,生成完整的扁平XSL文件。

  • 核心实现思路:用Saxon的Processor加载主XSL文件,通过XsltCompiler编译为可执行样式表,再将其序列化回单个XSL文件。
  • 示例代码片段:
import net.sf.saxon.s9api.*;
import java.io.File;
import java.io.FileOutputStream;

public class XslFlattener {
    public static void main(String[] args) throws Exception {
        Processor processor = new Processor(false);
        XsltCompiler compiler = processor.newXsltCompiler();
        XsltExecutable executable = compiler.compile(new File("main.xsl"));
        
        Serializer serializer = processor.newSerializer(new FileOutputStream("flattened.xsl"));
        executable.getUnderlyingCompiledStylesheet().export(serializer);
    }
}
  • 依赖说明:需引入Saxon-HE的Maven依赖(如net.sf.saxon:Saxon-HE:12.4)。

2. Xalan库

Apache Xalan是另一款主流Java XSLT处理库,也可实现XSL扁平化:

  • 实现思路:通过TransformerFactory加载主XSL生成Templates对象,再将该对象序列化回XSL文件。不过它对复杂XSL继承结构的处理能力弱于Saxon,适合简单场景。
  • 示例代码思路:
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;

public class XalanFlattener {
    public static void main(String[] args) throws Exception {
        TransformerFactory factory = TransformerFactory.newInstance();
        Templates templates = factory.newTemplates(new StreamSource(new File("main.xsl")));
        
        Transformer transformer = templates.newTransformer();
        // 需传入空XML作为输入触发序列化
        transformer.transform(new StreamSource(new File("empty.xml")), new StreamResult(new File("flattened.xsl")));
    }
}

3. 自定义实现(简单场景)

如果你的XSL结构不复杂,可自行编写解析逻辑:

  • 核心逻辑:递归遍历XSL文件,遇到xsl:import或xsl:include时,读取对应导入文件内容,替换导入指令,最终拼接为单个文件。
  • 注意事项:需处理命名空间、相对路径转绝对路径等细节,仅适合结构简单的场景。

生成扁平XSL后,可通过Maven的maven-assembly-plugin或maven-jar-plugin配置,将文件打包到JAR的指定目录中。

内容的提问来源于stack exchange,提问作者Alex Vagin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:57:40