【问题标题】:Strip whitespace in FOP inline element去除 FOP 内联元素中的空格
【发布时间】:2025-11-28 19:55:01
【问题描述】:

我无法使用 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>

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

【问题讨论】:

    标签: apache-fop dita dita-ot


    【解决方案1】:

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

    XSL-FO Property Support Table (§7)

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

    以下是指定

    时的结果

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

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

    【讨论】:

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