如何使用zero_width_space进行文本换行

时间:2015-11-16 16:54:29

标签: xslt xsl-fo

我发现这段代码将数据包装在一个单元格中,但它并没有考虑到这个单词,即如果完整的单词不能在行中拟合,它就不会改变行。在改变线之前写了几个字母。

我应该在此代码中修改什么,以便如果某个特定单词未在行中调整,则会更改该行。

另外,我是xsl -fo的新手。我已经了解了大部分代码,但如果能解释一下,我会很感激。

 <xsl:template name="zero_width_space_1">
    <xsl:param name="data"/>
    <xsl:param name="counter" select="0"/>
    <xsl:choose>
        <xsl:when test="$counter &lt; string-length($data)">
          <xsl:value-of select='concat(substring($data,$counter,1),"&#8203;")'/>
           <xsl:call-template name="zero_width_space_2">
               <xsl:with-param name="data" select="$data"/>
               <xsl:with-param name="counter" select="$counter+1"/>
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    <xsl:template name="zero_width_space_2">
    <xsl:param name="data"/>
    <xsl:param name="counter"/>
       <xsl:value-of select='concat(substring($data,$counter,1),"&#8203;")'/>
       <xsl:call-template name="zero_width_space_1">
        <xsl:with-param name="data" select="$data"/>
        <xsl:with-param name="counter" select="$counter+1"/>
      </xsl:call-template>
    </xsl:template>

    and then placing a call to zero_width_space_1 like following-

    <xsl:call-template name="zero_width_space_1">
        <xsl:with-param name="data" select="span"/>
    </xsl:call-template>

对于ex - &#34;我发现这段代码将数据包装在一个单元格中#34; ..它在单元格中显示为

I found th
is piece o
f code whi
ch wraps t
he data in
side a cel
l

1 个答案:

答案 0 :(得分:1)

由单元格自动提供包装。 Zero_width_space在每个字符后面都包含一个零宽度空间,因此如果要求不是字符填充单元格,最好不要调用此模板。