お返事ありがとうございます。 我々が使用できる別の方法:
<xsl:template name="intersperse-with-zero-spaces">
<xsl:param name="str"/>
<xsl:param name="max_length"/>
<xsl:variable name="head" select="substring($str, 1, $max_length)" />
<xsl:variable name="tail" select="substring($str, $max_length + 1)" />
<xsl:value-of select="$head"/>
<xsl:if test="$tail">
<!-- there's no space present when translate() returns the same string and the $tail does not begin with a space, either -->
<xsl:if test="string-length(translate($head, ' ', '')) = string-length($head) and not(substring($tail, 1, 1)=' ')">
<xsl:text>​</xsl:text>
</xsl:if>
<xsl:call-template name="intersperse-with-zero-spaces">
<xsl:with-param name="str" select="$tail"/>
<xsl:with-param name="max_length" select="$max_length"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<fo:table-cell padding-left="3mm" width="2.5cm">
<fo:block >
<xsl:call-template name="intersperse-with-zero-spaces">
<xsl:with-param name="str"><xsl:value-of select="./@originator"/></xsl:with-param>
<xsl:with-param name="max_length" select="15"/>
</xsl:call-template>
</fo:block>
</fo:table-cell>
の可能性のある重複した[XSL-FO:テーブルエントリの強制ラップ](http://stackoverflow.com/questions/4350788/xsl-fo-force-wrap-on-テーブルエントリ) –