我有一个 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>