You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在两个XSL模板之间添加分页符

在两个XSL-FO模板之间添加分页符或空白区域的解决方案

要在content_name和pro_list这两个模板之间实现分页或者添加空白区域,有几种简单直接的方法,你可以根据实际渲染场景选择:

1. 强制分页:给第一个模板的块添加分页后属性

如果希望渲染完content_name的内容后直接跳到下一页,直接在它的fo:block里加上page-break-after="always"属性即可。不管当前页剩余多少空间,都会强制触发分页:

<xsl:template match="content_name">
  <fo:block 
    space-after="7pt" 
    space-after.conditionality="retain" 
    line-height="1.147" 
    font-family="Calibri" 
    font-size="15pt" 
    font-weight="bold" 
    language="FR"
    page-break-after="always"> <!-- 强制在该块后分页 -->
    <!-- 别忘了在这里输出内容,比如<xsl:value-of select="." /> -->
  </fo:block>
</xsl:template>

2. 强制分页:给第二个模板的块添加分页前属性

反过来,也可以在pro_list的fo:block里添加page-break-before="always",这样在渲染这个模板的内容之前会自动分页:

<xsl:template match="pro_list">
  <fo:block 
    space-after="15pt" 
    space-after.conditionality="retain" 
    line-height="1.147" 
    font-family="Calibri"
    page-break-before="always"> <!-- 渲染该块前强制分页 -->
    <!-- 这里放置pro_list的内容 -->
  </fo:block>
</xsl:template>

3. 只添加空白区域(不分页)

如果不需要分页,只是想在两个内容块之间留一段空白,有两种实现方式:

  • 直接增大第一个模板fo:block的space-after值,比如改成space-after="50pt"
  • 或者在调用两个模板的主逻辑中插入一个空块来占据空间:
<!-- 假设在主模板中依次调用两个模板 -->
<xsl:apply-templates select="content_name"/>
<!-- 插入固定高度的空白块 -->
<fo:block height="30pt" space-after.conditionality="retain"/>
<xsl:apply-templates select="pro_list"/>

小提示

  • 使用page-break-after或page-break-before时,属性值设为always才会强制分页;如果用auto,则只有当内容放不下当前页时才会分页
  • 主流XSL-FO处理器(比如Apache FOP、RenderX XEP)都支持这些分页属性,不用担心兼容性问题

内容的提问来源于stack exchange,提问作者snehamayi senapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:25:25