You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT生成HTML出现多余换行问题(Apache FOP 2.3)

解决XSLT输出HTML时span内部多余空白导致的显示问题

问题原因

你的XSLT模板中,<span>标签内部的换行和缩进空白被当作文本节点输出到最终HTML中,再加上span设置了white-space: pre,浏览器会原样渲染这些空白,导致文本换行、内容错位。

解决方案

方案1:紧凑编写XSLT模板,消除span内部多余空白

修改模板,将<xsl:value-of>与<span>标签写在同一行,避免模板中的换行和缩进被输出:

<xsl:template match="text">
  <div>
    <span><xsl:value-of select="."/></span>
  </div>
</xsl:template>

这样输出的span内部只会包含<text>元素的原始文本,不会混入模板产生的空白。

方案2:用normalize-space()过滤文本空白

如果模板的排版无法调整,可以在取值时使用normalize-space()去除文本前后的空白,并合并中间的连续空白:

<xsl:template match="text">
  <div>
    <span>
        <xsl:value-of select="normalize-space(.)"/>
    </span>
  </div>
</xsl:template>

⚠️ 注意:该方法会移除原始文本首尾的空白,并合并中间连续空格,若你的原始文本需要保留这类空白,请勿使用。

方案3:调整CSS样式,忽略不必要的空白

若不想修改XSLT代码,可调整span的white-space属性:

span {
  white-space: pre-line; /* 保留硬换行,合并连续空白 */
  /* 或使用 white-space: normal; 完全忽略多余空白,自动换行 */
}

pre-line会保留文本中的手动换行,但自动合并连续空格和缩进;normal则会忽略所有多余空白,根据容器宽度自动换行,可根据实际需求选择。

内容的提问来源于stack exchange,提问作者CrazyEight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:42:08