根据上下文更改 XSLT 中的节点



我有一个 XSL 文件,我想在两个不同的上下文中包含或使用它。在其中一个上下文中,我想使用"fo:block",但在另一个上下文中,我想使用"div class="Block"。

有没有办法根据上下文将 XSL 中的所有"fo:block"更改为"div class="Block",反之亦然,也许使用参数?

这是一个简单的条件:

<xsl:variable name="outputformat" select="'html'"/>
<xsl:choose>
    <xsl:when test="$outputformat = 'html'">
        <div class="Block">
            <!-- your html code -->
        </div>
    </xsl:when>
    <xsl:otherwise>
        <fo:block>
           <!-- your normal code -->
        </fo:block>
    </xsl:otherwise>
</xsl:choose>

或者,您可以创建第二个 xsl 文档并复制除

<fo:block/> 

您应该更改为

<div class="block"/>

这看起来像:

<xsl:template match="@*|node()">
    <xsl:choose>
        <xsl:when test="local-name() = 'block'">
            <xsl:element name="div">
                <xsl:attribute name="class" select="'Block'"/>
                <xsl:apply-templates select="@*"/>
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:when>
        <xsl:otherwise>
            <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
            </xsl:copy>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

相关内容

  • 没有找到相关文章

最新更新