我希望我的字符串显示为pdf格式,我使用XSLT XPATH从XML生成。我的XML包含字符串,其中包含一些空格,但问题是xslt会自动修剪这些字符串。我在这个W3SCHOOL链接上查了一下 Try it yourself。每当我添加一些额外的空间时,它就会被自动修剪掉,这在我的情况下我真的不需要。任何帮助将不胜感激。
--------更新------------
我尝试用 
替换字符串中的所有空格并尝试显示它,但xslt没有将 
作为空格。它正在考虑它就像字符串的一部分。
我也尝试使用递归来替换字符串中的特殊字符和空格(我已经用xml中的字符替换了空格,现在我的xml包含我需要空格的字符)但是在递归调用时它会显示named template is not available
。
<xsl:template
name="add-spaces">
<!-- COMMENTS is string containing ~ where I need spaces -->
<xsl:param
name="text"
select="COMMENTS" />
<xsl:if
test="$text != ''">
<xsl:variable
name="letter"
select="substring($text, 1, 1)" />
<xsl:when
test="$letter = '~'">
<fo:inline>
<xsl:text> </xsl:text>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline>
<xsl:value-of
select="$letter" />
</fo:inline>
</xsl:otherwise>
<xsl:call-template
name="add-spaces">
<xsl:with-param
name="text"
select="substring-after($text, $letter)" />
</xsl:call-template>
</xsl:if>
</xsl:template>
答案 0 :(得分:2)
您正在生成HTML。修剪普通空间是HTML的问题。您可以将
用于剩余的空格。但是,您无法在XML中使用
而无需将其定义为实体,但您可以使用 
代替:
<artist>Bob Dylan </artist>
或者您可以在根标记之前在XML中定义权利:
<!DOCTYPE cds[
<!ENTITY nbsp " ">
]>
然后使用
<artist>Bob Dylan </artist>
然而,对我来说,如果你在开头和结尾都没有空格,那桌子看起来很难看。但是,解决方案不是添加空格,解决方案是在转换中指定填充和边距,例如。
<td style="padding:0 10 0 10"><xsl:value-of select="catalog/cd/title"/></td>
答案 1 :(得分:0)
要解决此问题,我只是在XML字符串中使用特殊字符~
替换所有空格,然后在xslt中使用上面的模板,只需稍加修改(使用if
而不是{{1 }},我不知道为什么when
不起作用)我完成了。现在在pdf中我的所有字符串都包含我需要的空格。可能在代码之下是一个业余的,但暂时它对我有用。
when