如何避免在 XSL-FO 中的块之前分页?

How to avoid page breaks before a block in XSL-FO?

我正在使用 XSL 将带有段落后跟块引号的 HTML 转换为 FO。

如何避免段落和后面的块引用之间出现分页符?

块引号后的分页符是可以的。

示例:

<p> Some paragraph..</p>
<blockquote>My reference</blockquote>
<p> Another paragraph..</p>
<blockquote>My reference</blockquote>

我认为最直接的方法是用 fo:block 将要保留的元素包装在一起,然后添加 keep-with-next.within-page="always" 属性,如图 here:

<fo:block keep-with-next.within-page="always">
    ... content of p and blockquote elements
</fo:block>

你需要在正常 p 生成的块和 blockquote.

生成的块之间添加所谓的 keep condition

特别是,由于 p 是一个通用标签,我认为最好的选择是在为 [=12= 生成的 fo:block 中使用属性 keep-with-previous.within-page="always" ] HTML 元素.

如果您使用 XSLT 创建 XSL-FO 输出,您需要这样的东西(您可能需要调整名称空间):

<xsl:template match="blockquote">
    <fo:block keep-with-previous.within-page="always" ...other attributes...>
        <xsl:apply-templates/>
    </fo:block>
</xsl:template>