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


person iswinky    schedule 08.07.2013    source источник
comment
Подумайте о том, чтобы опубликовать минимальный, но полный образец используемого вами XSLT вместе с входными данными XML и желаемыми выходными данными XSL-FO (код XML, а не изображения). Что именно выводит шаблон с именем price (вы вызываете его в своем коде)?   -  person Martin Honnen    schedule 08.07.2013


Ответы (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>, потому что в противном случае простое пространство в вашей таблице стилей будет потеряно.

person G. Ken Holman    schedule 08.07.2013
comment
Да, я понял, немного раздражает, что группирует их без пробелов/перерывов! - person iswinky; 08.07.2013

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

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