【问题标题】: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 的前提(这从您的问题中并不完全清楚)。
描述“换行符停止工作”可以解释为不同的问题:
-
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"
- 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"。