去除 FOP 内联元素中的空格

Posted

技术标签:

【中文标题】去除 FOP 内联元素中的空格【英文标题】:Strip whitespace in FOP inline element 【发布时间】:2017-03-30 22:14:07 【问题描述】:

我无法使用 DITA-OT PDF2 去除 FOP 中的内联元素内的空格。这是我的代码 sn-p:

<p>1 BEFORE <uicontrol>test</uicontrol> AFTER</p>
<p>2 BEFORE <uicontrol> test</uicontrol> AFTER</p>
<p>3 BEFORE <uicontrol>test </uicontrol> AFTER</p>
<p>4 BEFORE <uicontrol><keyword keyref="test"/> </uicontrol> AFTER</p>
<p>5 BEFORE <uicontrol> <keyword keyref="test"/></uicontrol> AFTER</p>
<p>6 BEFORE <uicontrol>
  <keyword keyref="test"/>
</uicontrol> AFTER</p>
<p>7 BEFORE <uicontrol>  
  <keyword keyref="test"/>
</uicontrol> AFTER</p>

呈现给:

这是我的属性集:

<xsl:attribute-set name="uicontrol">
    <xsl:attribute name="white-space">nowrap</xsl:attribute>
    <xsl:attribute name="white-space-treatment">ignore</xsl:attribute>
    <xsl:attribute name="white-space-collapse">true</xsl:attribute>
    <xsl:attribute name="linefeed-treatment">treat-as-zero-width-space</xsl:attribute>
    <xsl:attribute name="background-color">#ff0000</xsl:attribute>
</xsl:attribute-set>

必须去除所有红色空格。我的错在哪里?

【问题讨论】:

【参考方案1】:

FOP 似乎在“空白处理”方面有困难:

XSL-FO Property Support Table (§7)

所以可能需要在uicontrol中为text()使用加上normalize-space()函数。

以下是指定

时的结果

供您参考,Antenna House 将您的原始样式定义呈现如下:

希望这对您的发展有所帮助。

【讨论】:

非常感谢。 &lt;xsl:strip-space elements="uicontrol"&gt; 成功了

以上是关于去除 FOP 内联元素中的空格的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个(内联)元素之间插入空格?

内联元素空隙问题

XSL:FO / Apache FOP 中的内联图像数据

内联元素inline-block空隙问题

去除MathType内联公式后自动生成的空格

CKEditor 去除内联属性