如何逃避" 
"或XSLT PDF中的新行特殊添加字符?

时间:2017-09-29 08:09:51

标签: pdf xslt xsl-fo apache-fop

我正在使用apache FOP使用XSL 1.0将XML转换为PDF。

我是xml节点

<ABC>This is one line&#xD;
  This is second line&#xD;
This is third line</ABC>

我希望输出类似于节点,即

  This is one line 
  This is second line
  This is third line

但它只有一行。 那么有什么解决方案可以逃脱&#34;&amp;#xD&#34;在xsl?以下代码用于获取节点的值。

 <xsl:value-of select="ABC" disable-output-escaping="yes"  />

2 个答案:

答案 0 :(得分:2)

您要查找的媒体资源是linefeed-treatment

将其设置为"preserve"会将换行分隔的文本处理为单独的段落,因此像这样的块

<fo:block linefeed-treatment="preserve">A
B
C</fo:block>

将在输出中生成三​​行

A
B
C

答案 1 :(得分:0)

解决问题的方法是使用像

这样的分析字符串
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="/">
        <xsl:analyze-string select="ABC" regex="&#xD;">
            <xsl:matching-substring></xsl:matching-substring>
            <xsl:non-matching-substring>
                <xsl:value-of select="."/>
            </xsl:non-matching-substring>
        </xsl:analyze-string>
    </xsl:template>
</xsl:stylesheet>

使用我们然后在匹配时拆分并仅使用非匹配字符串的事实。