2009-02-26 19 views
2

私はXSLT - > FOを使用してPDFを生成しています。fo:データセルのオーバーフロー

列内のテキストが列のサイズを超え、テキストに空白がない場合、テキストは次のセルまたは表の外側に移動します。

テキストを同じセル内で使用したいです。事前に

ありがとう、 Swetha

答えて

0

可能な場合は、余分な文字を切り捨てます。 xsltのlength()およびsubstring()関数を使用します。

+0

しかし、私の場合、それは私が余分な文字を切り捨てるカント量の値です。 –

+0

多分、uは前のテキスト列から何かを切り捨てることができます –

4

ゼロ幅の空白文字(U + 200B、HTMLエンティティ&#x200b)を挿入してテキストを単語に分割してから、その行にテキストを挿入することでテキストを分割することができます休憩は、これらの位置で発生します。

<xsl:template name="split_value"> 
    <xsl:param name="value"/> 
    <xsl:param name="max_length"/> 
    <xsl:variable name="ret"> 
     <xsl:value-of select="substring($value, 1, $max_length)"/> 
     <xsl:if test="string-length($value) &gt; $max_length"> 
      <xsl:value-of select="'&#x200b;'"/> 
      <xsl:call-template name="split_value"> 
       <xsl:with-param 
        name="value" 
        select="substring($value, $max_length + 1)" 
       /> 
       <xsl:with-param 
        name="max_length" 
        select="$max_length" 
       /> 
      </xsl:call-template> 
     </xsl:if> 
    </xsl:variable> 
    <xsl:value-of select="$ret"/> 
</xsl:template> 

注:あなたはそれが何の空白は$ MAX_LENGTH連続文字の間に発生していないテキストの唯一の部分を分割するようにテンプレートを強化したい場合があります。


ここではテストケースです。

入力XML:

<data></data> 

スタイルシート(HTMLを生成します):

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    exclude-result-prefixes="xsl" 
> 
<xsl:template match="/"> 
    <html> 
     <body 
      style="font-family: Arial; font-size: 12pt; font-weight: normal" 
     > 
      <table width="4cm"> 
      <xsl:for-each select="/data"> 
       <tr><td> 
       <xsl:call-template name="split_value"> 
        <xsl:with-param 
         name="value" 
         select="text()" 
        /> 
        <xsl:with-param 
         name="max_length" 
         select="number(4)" 
        /> 
       </xsl:call-template> 
       </td> 
       </tr> 
      </xsl:for-each> 
      </table> 
     </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 
+0

私のvalue.myの値にこれらのゼロ幅のスペースを挿入するにはどうすればいいのでしょうか?例:23456789087これに似ています。 –

+0

ありがとうJuris.I私の問題はゼロ幅のスペースのアプローチで解決した。 –

関連する問題