2016-07-06 5 views
0

현재 보고서 작성을 위해 report.fo를 작성하고 있습니다. 문제가 발생했습니다. 그건 내가 각 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>