XSL-FO предотвращает группирование различных элементов на новой строке

Следующий xsl-fo отображает описание и цену в блоке, а затем визуализируется в PDF-документе, однако два элемента группируются вместе на новой строке, когда в строке выше достаточно места для описания, первоначально я думал, что это просто "Держись вместе" будет работать, но это не имеет никакого значения. Красный показывает описание, а зеленый показывает цену. Цена должна следовать после описания, но она не должна группироваться с последним словом в описании, если в указанной строке достаточно места для этого.

<fo:block linefeed-treatment="preserve" line-height="8pt">
    <xsl:value-of select="description" />&#160;<xsl:call-template name="price"/>
</fo:block>

XSL-FO

2 ответа

Решение

Поскольку вы использовали NBSP, то есть склейте цену и последнее слово вместе. Таким образом, вам просто нужно регулярное пространство между двумя значениями:

 <fo:block linefeed-treatment="preserve" line-height="8pt">
    <xsl:value-of select="description" />
    <xsl:text> </xsl:text>
    <xsl:call-template name="price"/>
 </fo:block>

Не забудьте использовать <xsl:text> потому что в противном случае простое пространство в вашей таблице стилей будет потеряно.

Я предполагаю, что разные элементы обрабатываются как один, но просто поместив пробел до и после разных тегов, описание заполнит оставшееся место в строке выше.

<fo:block linefeed-treatment="preserve" line-height="8pt">
    <xsl:value-of select="description" /> &#160; <xsl:call-template name="price"/>
</fo:block>
Другие вопросы по тегам