gpt4 book ai didi

xslt - 合并多个 xslt 样式表

转载 作者:行者123 更新时间:2023-12-02 11:42:12 33 4
gpt4 key购买 nike

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

这是我们所使用的系统的一个限制,它作为存储在内存中的字符串对象传递 xsl 样式表。该数据被传输到远程机器,并在远程机器上执行转换。由于它没有从磁盘加载,因此 href 链接已损坏,因此我们需要从样式表中删除 xsl:import

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

最佳答案

您可以使用 XSL 样式表来合并样式表。但是,这相当于使用 xsl:include 元素,而不是 xsl:import(正如 Azat Razetdinov 已经指出的那样)。您可以阅读差异 here .

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

<?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 属性中引用的文件。第二个模板是 identity transformation .

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

关于xslt - 合并多个 xslt 样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70143/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com