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

如何在XSLT(XSL FO 1.0)中添加换行以生成PDF文件

在XSL FO 1.0中实现文本换行的方法

你当前使用XSL FO 1.0生成PDF,现有XML和XSLT代码如下:

XML代码

<catalog>
    <cd value="First">
        <title company="Grammy" price="10.20">1999 Grammy Nominees</title>
        <artist all="type">Many</artist>
        <country>USA</country>
    </cd>
</catalog>

原XSLT代码

<xsl:template match="catalog/cd">
<fo:block>
    <xsl:value-of select="title " />
    <xsl:value-of select="artist" />
  <xsl:apply-templates/>
</fo:block>
</xsl:template>

当前生成的输出为:

1999 Grammy NomineesMany

希望实现的换行输出:

1999 Grammy Nominees
Many

实现方法

有两种常用方式可以实现换行:

方法一:用<fo:block>包裹每个需要换行的元素

XSL FO中,<fo:block>是块级元素,默认会自动换行。修改XSLT代码如下:

<xsl:template match="catalog/cd">
    <fo:block><xsl:value-of select="title"/></fo:block>
    <fo:block><xsl:value-of select="artist"/></fo:block>
    <xsl:apply-templates/>
</xsl:template>

方法二:在元素间插入换行符

使用<xsl:text>插入换行符&#xA;,同时可以给<fo:block>设置white-space-treatment="preserve"确保换行生效(多数XSL FO处理器默认支持),代码如下:

<xsl:template match="catalog/cd">
<fo:block white-space-treatment="preserve">
    <xsl:value-of select="title"/>
    <xsl:text>&#xA;</xsl:text>
    <xsl:value-of select="artist"/>
    <xsl:apply-templates/>
</fo:block>
</xsl:template>

注:原代码中<xsl:value-of select="title " />里title后的多余空格可以去掉,避免生成不必要的空白字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 09:20:33