XSL-FO предотвращает группирование различных элементов на новой строке
Следующий xsl-fo отображает описание и цену в блоке, а затем визуализируется в PDF-документе, однако два элемента группируются вместе на новой строке, когда в строке выше достаточно места для описания, первоначально я думал, что это просто "Держись вместе" будет работать, но это не имеет никакого значения. Красный показывает описание, а зеленый показывает цену. Цена должна следовать после описания, но она не должна группироваться с последним словом в описании, если в указанной строке достаточно места для этого.
<fo:block linefeed-treatment="preserve" line-height="8pt">
<xsl:value-of select="description" /> <xsl:call-template name="price"/>
</fo:block>
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" />   <xsl:call-template name="price"/>
</fo:block>