合并多个xslt样式表

合并多个xslt样式表

Merge multiple xslt stylesheets

我有一个带有多个xsl:import的xslt样式表,我想将它们全部合并到一个xslt文件中。

这是我们使用的系统的局限性,因为它围绕xsl样式表作为存储在内存中的字符串对象传递。 这将传输到远程计算机,在此执行转换。 由于未从磁盘加载href链接,因此我们需要从样式表中删除xsl:import

有没有可以做到这一点的工具?


您可以使用XSL样式表来合并样式表。但是,这等效于使用xsl:include元素,而不是使用xsl:import(正如Azat Razetdinov指出的那样)。您可以在此处阅读其中的区别。

因此,您应该首先将xsl:import替换为xsl:include,解决所有冲突并测试您是否仍然获得正确的结果。之后,您可以使用以下样式表将现有样式表合并为一个。只需将其应用于您的主样式表即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<xsl:template match="xsl:include">
  <xsl:copy-of select="document(@href)/xsl:stylesheet/*"/>
</xsl:template>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

第一个模板通过使用document函数将所有xsl:include替换为包含的样式表,该函数读取href属性中引用的文件。第二个模板是身份转换。

我已经用Xalan测试了它,它似乎工作正常。


在不破坏导入优先级的情况下,不可能将导入的样式表包含到主文件中。例如,您在导入的样式表中定义顶级变量,然后在主文件中重新定义它。如果将两个文件合并为一个,则会获得两个具有相同名称的变量并导入优先级,这将导致错误。

解决方法是将xsl:import替换为xsl:include并解决所有冲突。之后,您可以放心地用相应文件的内容替换xsl:include指令,因为这就是XSLT处理器要做的事情:

The inclusion works at the XML tree level. The resource located by the href attribute value is parsed as an XML document, and the children of the xsl:stylesheet element in this document replace the xsl:include element in the including document. The fact that template rules or definitions are included does not affect the way they are processed.


手动合并可能是最好的选择。

主要考虑因素可能是确保匹配模板的逻辑在组合样式表中有效。


你为什么要通常出于某种原因(通常是可维护性)将它们分开

您总是可以自己编写合并-读入XSL文件,选择感兴趣的模板项,然后写入新的主XSL文件...


1
2
3
4
5
6
7
8
9
10
11
12
 import multiple xsl in single xsl

      <xsl:import href="FpML_FXOption_Trade_Template1.xsl"/>
      <xsl:apply-imports/>

<calypso:keyword>
                <calypso:name>DisplayOptionStyle</calypso:name>
<calypso:value>Vanilla</calypso:value>
</calypso:keyword>

           <xsl:import href="FpML_FXOption_Trade_Template2.xsl"/>
           <xsl:apply-imports/>


推荐阅读

    金蝶担保机构业务管理系统

    金蝶担保机构业务管理系统,,1.金蝶财务软件怎么使用?软件使用方法 使用需要先登陆到数据库,可只导出V3数据或只导出最新年度数据。功能介绍

    wps如何合并章节

    wps如何合并章节,WPS教程,1.WPS表格如何实现单元格合并?WPS 表格在新版本中增加了“合并单元格”系列按钮,同时配有下拉菜单和快捷键。新增

    联想台式机怎么恢复出厂系统

    联想台式机怎么恢复出厂系统,所示,如下图,如所示:首先关闭计算机。然后在下一个接口中选择“引导设备优先级”输入新界面后,然后单击“是”

    鼠标不能拖动文件了

    鼠标不能拖动文件了,鼠标,拖动,本文目录鼠标不能拖动文件了电脑鼠标无法拖动软件图标了,怎么办鼠标不能滚动怎么调整电脑鼠标不能进行任何

    电脑系统城|电脑系统下载 win7

    电脑系统城|电脑系统下载 win7,电脑系统城,不少朋友在使用电脑时候,有时碰到电脑卡住,不能使用,很多人都会选择装机来解决。那么电脑装机软件