换行符从xsl中消失

时间:2015-02-27 14:47:21

标签: xml templates xslt line-breaks

我有一个可能很小的问题。 ATM我正在创建一个XSL文件作为pdf的模板,它看起来很好看。 但后来我必须改变一些东西,突然输出中的所有换行都停止了。 从包含换行符的XML加载文本有效,但即使在XSL中进行换行也不起作用,而且& #xA;不再工作了。

我想我有点破坏了某些东西可能已经意识到我搞砸了。 所以一些帮助将非常感激

1 个答案:

答案 0 :(得分:0)

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

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

  1. fo:block创建一条长行,该行溢出边距并可能超出页数限制
  2. 可能的原因:您是否添加了一些keep-together属性?在块级格式化对象中设置keep-together="always"等同于设置keep-together.within-page="always" keep-together.within-column="always" keep-together.within-line="always"并强制格式化程序构建包含块的所有文本的单行。

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

    1. 在PDF中忽略XSL-FO文件中存在的换行符
    2. 可能的原因:您是否删除或修改了某些linefeed-treatment属性?输入XSL-FO中的换行符(手动换行符和
实体)通常被视为普通空格,并与其他相邻空格折叠。

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

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

      结果只是:

      This is a block with line breaks.
      

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