如何使用额外XSLT合并多份XSLT输出的Report节点到同一Reports根节点
多份XSLT同结构输出合并方案
完全可以实现,核心逻辑是提取三份输出中所有<Report>节点,统一挂载到同一个<Reports>根节点下即可,常用有三类实现路径:
新增聚合XSLT(推荐,无需修改原有已验证的XSLT逻辑)
适用于XSLT 2.0及以上版本,直接引入原有三份XSLT,统一收集Report节点输出即可,示例代码如下:<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <!-- 引入原有三个XSLT文件,替换为你自己的文件路径 --> <xsl:import href="report1.xsl"/> <xsl:import href="report2.xsl"/> <xsl:import href="report3.xsl"/> <xsl:template match="/"> <Reports> <!-- 依次获取三份输出的所有Report节点 --> <xsl:apply-templates select="document('report1输出源')/Reports/Report"/> <xsl:apply-templates select="document('report2输出源')/Reports/Report"/> <xsl:apply-templates select="document('report3输出源')/Reports/Report"/> </Reports> </xsl:template> </xsl:stylesheet>如果你使用的是XSLT 1.0版本,可先将三份XSLT的输出分别存为临时XML文件,再用上述逻辑读取三个临时文件完成合并。
改造现有XSLT结构
把三份XSLT中生成Report节点的逻辑抽离为公共可调用模板,在统一的根节点<Reports>下依次调用三个模板即可输出所有Report节点,适合原有XSLT还在迭代维护的场景。外置工具合并
不想额外编写XSLT的话,可以用任意XML处理工具(比如Python lxml库、Java DOM4J库等)分别解析三份输出XML,提取所有<Report>子节点后添加到新建的<Reports>根节点下,实现逻辑和聚合XSLT完全一致。
内容的提问来源于stack exchange,提问作者Linus Choudhury
相关产品推荐
相关产品推荐

