【发布时间】:2015-08-20 04:17:38
【问题描述】:
我有一个 XSL 文件 (template.xsl),如下所示:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="1.xsl" />
<xsl:import href="2.xsl" />
<xsl:import href="3.xsl"/>
<xsl:import href="4.xsl"/>
...
该文件在我测试过的所有非 webkit 浏览器上都可以正常工作。不过,我希望它也可以在 webkit 浏览器上运行。所以,我需要一种将所有 xsl:import 合并到主文件中的方法。所以,我可以看看这是否能解决问题。我已经阅读了其他线程上提供的解决方案,例如这个:
Recursively merging multiple XSLT stylesheets
我可以看到提供的解决方案使用了这个样式表脚本服务器端:
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="xsl:include">
<xsl:apply-templates select="document(@href)/xsl:stylesheet/*"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
不过,我不知道如何使用它(除了将我的 xsl:import 替换为 xsl:include 之外)。我将它放在我的 template.xsl 文件中吗?我是否将它放在一个新的 XSL 文件中并使用 php 脚本来加载它,以便合并 XSL 文件。如果我能举个例子就好了。我需要的结果是为浏览器提供一个没有包含/导入的 XSLT。我想要一个可以在合并后保存的 XSL 文件,所以我摆脱了其他文件。除非必须,否则我不想合并文件服务器端。所以,如果有一个工具可以合并文件。那也可以。谢谢。
【问题讨论】:
-
您只是在问“我如何运行 XSLT 样式表服务器端?”有许多处理器可以做到这一点,或者使用命令行或 GUI 界面,或者集成到 IDE 中,或者托管在 Web 上。我很惊讶任何人都应该在不经常使用这样的工具的情况下进行 XSLT 开发,因为在浏览器中运行是可以想象的最痛苦的开发环境。
-
我的主要问题是如何合并 XSL 文件。我想知道如何实现该服务器端合并。没有人提供有关如何以及在何处放置的任何信息。
-
您是希望在每次使用样式表时按需执行,还是希望在构建站点时执行一次?什么是技术:Java、.NET 等?有很多方法可以做到,而且都很容易,所以很难看出你的困难在哪里。
-
我正在尝试将 template.xsl 中的所有包含/导入合并到 template.xsl 中,以创建将呈现给 webkit 浏览器的单个文件。我想做一次这个任务。我只想要合并的文件。我想我无法理解的是如何完成合并。我需要任何可以帮助我做到这一点的工具或技术,因为我不想手工完成。我将在下面的帖子中进行更多解释。