XSL-FO:PDF输出:允许带空格的文本将行包裹在表列中

时间:2013-06-04 17:39:16

标签: xslt xsl-fo

我们面临着从XML内容发布PDF输出的格式问题。 在表格列中,表格单元格中的文本包含一些文本(模型编号),例如

AD150,OP834,
HT78J,QW09T,
OL560, PQ
UW ,AG800,XN280

如突出显示的那样,如果名称中有空格(“PQ UW”),则提到的模型名称将分为两行。即使有足够的单元格宽度来容纳空格后的文本,也会发生这种情况。但是,如果没有空格,文本将以常规列宽分割。

请建议解决方法以解决此问题,以便文本始终显示在同一行(不会分成新行),即使文本中有空格也是如此。文本应仅以常规单元格宽度打破。

2 个答案:

答案 0 :(得分:1)

如果输入XML为每个型号都有单独的标签,则提供的示例XSL将很有效。如果没有,源XML就是这样:

< modellist> OL560,PQ UW,AG800< / modellist>

然后,您将编写一个递归模板来处理列表中的每个字符,将输出写入变量(搜索递归XSL模板以进行拆分示例)。这样做并不难。您可以输出“,”之后的任何空格字符,但是如上所述替换不遵循“,”的任何空格字符(使用不间断的空格)。

从这里开始寻找灵感:

Breaking long lines

答案 1 :(得分:0)

尝试一件便宜的事情:渲染模型名称时,将空格更改为字符U + 00A0,不间断空格。像这样:

<xsl:template match="model-name">
  <xsl:value-of select="translate(.,' ','&#xA0;')"/>
</xsl:template>