XSL-FO - 空块元素

Posted

技术标签:

【中文标题】XSL-FO - 空块元素【英文标题】:XSL-FO - Empty block elements 【发布时间】:2010-11-08 03:06:31 【问题描述】:

我有一个非常简单的模板:

<xsl:template match="p">
    <fo:block>
        <xsl:apply-templates/>
    </fo:block>
</xsl:template>

即使块为空,我如何告诉 FO 保留空行。

【问题讨论】:

【参考方案1】:

或者

<xsl:template match="p">
    <fo:block>
            <xsl:apply-templates/>
            &#x00A0;
    </fo:block>

&amp;#x00A0; 相当于 html 中的 &amp;nbsp;(实际上 &amp;nbsp; 是一个 XML 实体,定义为 A0,它是非分隔空格的 Unicode 字符)。

【讨论】:

【参考方案2】:

或者,

<fo:block white-space-treatment="preserve"> </fo:block>

【讨论】:

【参考方案3】:

只需在&lt;fo:block&gt; 的末尾添加一个&lt;fo:leader/&gt; 元素即可。像这样:

<xsl:template match="p">
        <fo:block>
                <xsl:apply-templates/>
                <fo:leader />
        </fo:block>
</xsl:template>

leader 不会对有内容的行做任何事情,并且会为没有内容的行创建一个空行。

使用 Apache FOP 和 XEP 测试。

【讨论】:

以上是关于XSL-FO - 空块元素的主要内容,如果未能解决你的问题,请参考以下文章

清除浮动方法解析

如何使用 XSL-FO(和 Apache FOP)计算从应用模板返回的元素

sh 使用空块设备创建新文件系统

揭开空块攻击的谎言与真相

如何在两个(内联)元素之间插入空格?

生成 PDF 期间块容器出现 XSL-FO 错误