如何在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>插入换行符
,同时可以给<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>
</xsl:text> <xsl:value-of select="artist"/> <xsl:apply-templates/> </fo:block> </xsl:template>
注:原代码中<xsl:value-of select="title " />里title后的多余空格可以去掉,避免生成不必要的空白字符。
内容的提问来源于stack exchange,提问作者priyanka manogaran
相关产品推荐
相关产品推荐

