XSL-FO设置内联文本的默认最小宽度

时间:2010-12-29 23:57:14

标签: xsl-fo apache-fop

我正在编写XSL-FO文档,我想为某些内联元素设置最小宽度值。例如,在以下结构中

|    FirstName:         string1         LastName:         string2         |

其中“string1”和“string2”是我的XML数据,“|”表示左右边框,我想要以下结果

|    FirstName:    John     LastName:   Smith                             |
|    FirstName:             LastName:   Smith                             |
|    FirstName: SomeVeryVeryLongFirstNameOfSomePerson  LastName:  Smith   |

当各个人(“John”“Smith”,“”Smith“,”SomeVery ......“”Smith“)从XML加载时。

基本上,我需要这样的东西

<fo:block> 
FirstName: <fo:inline min-width="50mm"> <xsl:value-of ...> </fo:inline> LastName: <fo:inline min-width="50mm"> <xsl:value-of ...> </fo:inline>
</fo:block>

但这不起作用(忽略min-width)。我在fo:block上尝试了min-width,尝试了inline-progression-dimension,block-progression-dimension,使用fo:table进行了一些解决方法,但没有任何效果,或者我做错了。我正在使用Apache FOP 1.0。

有人可以帮忙吗? 提前致谢

1 个答案:

答案 0 :(得分:0)

我也有这个问题,经过网上搜索后,我发现了一个解决方案:使用所需宽度的fo:inline-container和放置文字的fo:block

<fo:inline-container text-align="center" width="1cm">
  <fo:block border-bottom="0.5pt solid #000">
    <xsl:value-of select="your/xpath/selector"/>
  </fo:block>
</fo:inline-container>

只需替换widthselector即可满足您的需求。此示例还包含我需要的底线,但并非强制性要求:如果您不需要,请从border-bottom移除fo:block。有关原始解决方案和详细信息,请参阅How get fixed width for inline FO?