xslt - FOP XSL 1.0 替换文本并保留换行符
问题描述
我正在尝试使用 xsl + xml 生成 pdf,但我在文档的一部分存在问题,其中有一些带有换行符的文本行。生成文档时,它没有保留这些换行符。
我已经尝试了一切,我完全卡住了。
我的代码是:
<fo:table-row>
<fo:table-cell margin-right="0mm" margin-left="0mm"
margin-bottom="0mm" margin-top="0mm"
xsl:use-attribute-sets="bordergris" number-columns-spanned="5">
<fo:block xsl:use-attribute-sets="titoldades"
space-before.optimum="0pt" space-after.optimum="0pt"
keep-together="always" >
More info:
</fo:block>
<fo:block xsl:use-attribute-sets="dades"
space-before.optimum="0pt" space-after.optimum="0pt"
keep-together="always" linefeed-treatment="preserve">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="/Response/DataList/Data/MoreInfo"/>
<xsl:with-param name="replace" select="' '" />
<xsl:with-param name="with" select="'<fo:block/>'"/>
</xsl:call-template>
</fo:block>
</fo:table-cell>
</fo:table-row>
其中使用模板功能:
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="with"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$with"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text"
select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="with" select="$with"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:模板>
结果文本与硬编码文本“<fo:block/>”一起出现,而不是应用换行符。
我究竟做错了什么?
谢谢!!!
解决方案
重要的是将以下属性放入 fo:block 中:
inefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve"
然后使用以下内容进行替换:
<fo:block xsl:use-attribute-sets="dades"
linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="/Response/DataList/Data/MoreInfo"/>
<xsl:with-param name="replace" select="' '" />
<xsl:with-param name="with" select="'
'"/>
</xsl:call-template>
推荐阅读
- node.js - 在 AWS 上的 NGINX Web 服务器上运行的 NodeJS 中无法找出 504 错误
- java - Gradle:无法实例化 SLF4J LoggerFactory 错误
- amazon-web-services - 进出 AWS Api Gateway 的不同响应
- javascript - 如何向非营利网站添加捐赠功能?
- python - Django 不在数据库中存储密码
- go - 在不知道它们的类型的情况下比较来自两个接口的结构字段?
- azure - Azure 应用服务自定义域 - 网站功能不同
- r - 为什么我不断收到关于 Else 语句的错误?
- swift - 在 Xcode 中出现“无法打开权利”错误
- python-2.7 - Luigi:有没有办法像在 configparser 中那样使用扩展插值?