【问题标题】:Linebreaks disappear from xsl换行符从 xsl 中消失
【发布时间】:2015-02-27 14:47:21
【问题描述】:

我遇到了一个可能很小的问题。 ATM 我正在​​创建一个 XSL 文件作为 pdf 的模板,一切看起来都不错。 但是后来我一定改变了一些东西,突然输出中的所有换行符都停止工作了。 从包含换行符的 XML 加载文本有效,但即使在 XSL 中进行换行符也不起作用, 不再工作了。

我想我有点弄坏了一些东西,有人可能已经意识到我是怎么搞砸的。 因此,我们将非常感谢您的帮助

【问题讨论】:

    标签: xml templates xslt line-breaks


    【解决方案1】:

    注意:此答案基于您使用 XSLT 创建 XSL-FO 文件,处理后创建 PDF 的前提(这从您的问题中并不完全清楚)。

    描述“换行符停止工作”可以解释为不同的问题:

    1. fo:blocks 创建一条长线,超出页边距并可能超出页面限制

    可能原因:您是否添加了一些keep-together 属性?在块级格式化对象中设置keep-together="always" 等效于设置keep-together.within-page="always" keep-together.within-column="always" keep-together.within-line="always" 并强制格式化程序构建包含块所有文本的单行。

    建议的解决方案:如果您想避免 page 中断拆分您的块,请使用 keep-together.within-page="always"

    1. XSL-FO 文件中存在的换行符在 PDF 中被忽略

    可能原因:您是否删除或修改了一些linefeed-treatment 属性?输入 XSL-FO 中的换行符,包括手动换行符和 
 实体,通常被视为正常空格并与其他相邻空格折叠。

    所以,即使您的输入文件有:

    <fo:block>This
    is a block
    with
    line breaks.
    </fo:block>
    

    结果就是:

    This is a block with line breaks.
    

    建议的解决方案:在包含您要维护的换行符的fo:block 元素中使用属性linefeed-treatment="preserve"

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      相关资源
      最近更新 更多