XSL-FO - пустые элементы блока

имеет довольно простой шаблон:

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

Я спрашиваю себя, как сообщить FO, чтобы пустые строки, если блок пуст.

Приветствия
Ян

Ответы

Ответ 1

Просто добавьте элемент <fo:leader/> в конец вашего <fo:block>. Вот так:

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

Лидер ничего не сделает для строк с контентом и создаст пустую строку для строк без содержимого.

Протестировано с помощью Apache FOP и XEP.

Ответ 2

Или

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

&#x00A0; является эквивалентом &nbsp; в HTML (фактически &nbsp; является объектом XML, который определяется как A0, который является символом Unicode для Non Breaking Space).

Ответ 3

В качестве альтернативы

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