2016-07-06 3 views
0

現在、私はreport.foを書いて、レポートのpdfを生成しています。 問題が発生しました。私は各15文字のためにSUBSTRとそれのために行を挿入する必要が<fo:block>XSLT - どのように私はfo:blockの長いテキストを壊すことができますか?

私のソリューションの「aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa」のような長いテキストを自動的に分割する必要があります 。

それはテキスト、ではありませんので「AAAAは​​AAAAA .... AAAA」ので、我々が使用することができませんでしたwrap-option="wrap"か何かのようなlinefeed-treatment="preserve"

は誰も私を助けてもらえますか?ありがとう

+1

の可能性のある重複した[XSL-FO:テーブルエントリの強制ラップ](http://stackoverflow.com/questions/4350788/xsl-fo-force-wrap-on-テーブルエントリ) –

答えて

0

お返事ありがとうございます。 我々が使用できる別の方法:

<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>&#x200b;</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>  
関連する問題