XSL-FO阻止新行上的不同元素分组

时间:2013-07-08 11:18:20

标签: xml xslt 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 个答案:

答案 0 :(得分: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>,否则样式表中的简单空格将会丢失。

答案 1 :(得分:0)

我假设不同的元素被视为一个元素,但只需在不同的标记之前和之后放置一个空格,描述就会填充上面一行的剩余空间。

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