1

假设你有这两个 xsl 文件:

牛包装器.xsl

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:element name="cow">
            <next-match />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

测试.xsl

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import href="cow-wrapper.xsl" />

    <xsl:template match="/">
        <!-- regular stuff to do -->
    </xsl:template>

</xsl:stylesheet>

在这种情况下,根本不调用 cow-wrapper.xsl 中的根匹配项。有没有办法让 cow-wrapper.xsl 中的根模板匹配优先于 test.xsl 中的根模板?

我所追求的是一种简单地导入文件并让它包装常规输出的方法。例如在肥皂信封中。

4

2 回答 2

1

如果我希望首先“执行”导入模板中的模板,我要么在导入样式表中没有具有相同匹配模式的模板,要么我会这样写:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import href="cow-wrapper.xsl" />

    <xsl:template match="/">
        <xsl:next-match/>
        <!-- regular stuff to do -->
    </xsl:template>
</xsl:stylesheet>
于 2013-01-23T15:22:33.353 回答
0

XSLT 规范看来,导入模板的优先级总是低于具有更高导入优先级的冲突模板(主 XSLT 将具有最高导入优先级),但也许这是一个合适的解决方法?:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:element name="cow">
            <apply-templates select="." mode="regular">
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:import href="cow-wrapper.xsl" />

    <xsl:template match="/" mode="regular">
        <!-- regular stuff to do -->
    </xsl:template>

</xsl:stylesheet>
于 2013-01-23T14:26:06.670 回答