如何将 XSL 文件包含到另一个文件中?

问题描述 投票:0回答:1
xslt xslt-2.0
1个回答
11
投票

您可以使用

<xsl:include>

包含其他文件

您的

home.xsl
文件将如下所示

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:output method="html" indent="yes"/>
    <xsl:include href="head.xsl"/>
    <xsl:template match="/">
        <html>
            <head>
                <link rel="stylesheet" type="text/css" href="style.css"/>
                <title/>
            </head>
            <body>
                <div id="main">
                    <div id="content">
                        <xsl:call-template name="home-in"/>
                    </div>
                </div>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

更多详情

XSLT 处理器将简单地将指令替换为

href
属性中命名的样式表的内容。请注意,包含的样式表模板将具有与包含的样式表相同的默认优先级和导入优先级。

不要将

xsl:include
xsl:import
混淆,两者类似,只是导入样式表中的指令可以被导入样式表和任何包含的样式表中的指令覆盖。换句话说,导入样式表中元素的导入优先级始终低于导入样式表的导入优先级。

由于使用

xsl:include
与复制文件中的代码相同,因此在使用命名模板时请确保没有重复的模板名称。

这里是来自

w3 documentation

的粘贴

多次包含样式表可能会导致错误,因为 重复的定义。当以下情况时,这种多重包含不太明显: 它们是间接的。例如,如果样式表 B 包含样式表 A, 样式表 C 包含样式表 A,样式表 D 包含两者 样式表 B 和样式表 C,则 A 将被 D 间接包含 两次。如果 B、C 和 D 全部用作独立样式表,则 通过分离 B 中除 将 A 包含到单独的样式表 B' 中并将 B 更改为包含 只是包含 B' 和 A,与 C 类似,然后将 D 更改为 包括 A、B'、C'。

请注意,

xsl:include
xsl:import
元素都只允许作为顶级元素。

© www.soinside.com 2019 - 2024. All rights reserved.