- PR -

xsl-foのfo:table-cellで自動改行

投稿者投稿内容
sugimoto
常連さん
会議室デビュー日: 2002/12/05
投稿数: 45
投稿日時: 2004-01-14 11:08
杉本と申します。
xsl-fo の質問です。よろしくお願いします。

<fo:table-column column-width="8cm" />
のようにテーブルのセルの幅を指定しており、
その幅を指定されているセルで

<fo:table-cell>8cm を超えるテキスト</fo:table-cell>
のように8cm を超えるテキストが入力された場合、
自動改行されずに次のセルにはみ出してしまい困っています。

おそらく自動改行するための属性があると信じているのですが、
見つけることができません。

プロセッサには FOP-0.20.5 を使用しております。
よろしくお願いします
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-01-14 12:39
FOPで、table-cellに対してcolomn-width属性で個別に設定できたかな?
<fo:table-colomn colomn-width="xxx" />ってな感じでいっつも設定しているなぁ
sugimoto
常連さん
会議室デビュー日: 2002/12/05
投稿数: 45
投稿日時: 2004-01-14 13:08
返答ありがとうございます。

<fo:table-cell column-width="8cm" >
と、table-cell に対しても column-width を指定してみましたが、
やはり、8cmを超えるテキストを表示しようとしたときに、
次の列にはみ出してしまいました。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-01-14 18:00
はみ出す部分について、どのように記述しているのかを提示していただけないでしょうか?
(できればfo:tableから。問題ないところはすっ飛ばしてもらって結構ですので)

<fo:table-cell column-width="8cm" > 以外に問題があるような気がします
sugimoto
常連さん
会議室デビュー日: 2002/12/05
投稿数: 45
投稿日時: 2004-01-14 20:32
実際は、XSLTを使ってますので、下記のようになっています。
<xsl:value-of select="fieldA" />の部分に8cm を超えるくらいの
長い文字列を入れると、2列目にはみ出してしまいます。

<!-- ここから -->
<fo:table table-layout="fixed">
 <fo:table-column column-width="8cm" />
<fo:table-column column-width="8.5cm" />
 <fo:table-body>
  <fo:table-row font-family="Gothic" font-size="12pt" text-align="center" height="0.5cm">
   <fo:table-cell border="0.1mm solid black">
    <fo:block>フィールドA</fo:block>
   </fo:table-cell>
   <fo:table-cell border="0.1mm solid black">
    <fo:block>フィールドB</fo:block>
   </fo:table-cell>
  </fo:table-row>
  <xsl:for-each select="row">
   <fo:table-row font-family="Mincho" font-size="10pt">
    <fo:table-cell border="0.1mm solid black" padding="1mm" column-width="8cm">
     <fo:block><xsl:value-of select="fieldA" /></fo:block>
    </fo:table-cell>
    <fo:table-cell border="0.1mm solid black" padding="1mm">
     <fo:block><xsl:value-of select="fieldB" /></fo:block>
    </fo:table-cell>
   </fo:table-row>
  </xsl:for-each>
 </fo:table-body>
</fo:table>
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-01-15 01:18
wrap-option="no-wrap"
もどうでしょうか? FOP の実装レベルしだいですが
XSL仕様の実装状況(XSL Formatter V3.0)
http://www.antenna.co.jp/XML/axf30/axf_fo.htm


[ メッセージ編集済み 編集者: MMX 編集日時 2004-01-15 18:43 ]
sugimoto
常連さん
会議室デビュー日: 2002/12/05
投稿数: 45
投稿日時: 2004-01-15 09:32
ありがとございます。
wrap-option="no-wrap" を試してみたところ、だめでした。

ただ進展があり、問題の文字列が
 あいうえおかきくけこさしすせそ
となっていたところを、
 あいうえお かきくけこ さしすせそ
のようにスペースを入れると wrap-option の設定に関わらず改行されました。

一つの単語と判断された場合、改行されないようです。
このあたりの属性を調べてみます。
sugimoto
常連さん
会議室デビュー日: 2002/12/05
投稿数: 45
投稿日時: 2004-01-15 14:58
InternetExplorer のスタイルシートにある word-break のような
属性が指定できると解決しそうなのですが、xsl-foでは
見つかりません。

word-break と同じことを xsl-fo ではできないのでしょうか?
よろしくお願いします。

スキルアップ/キャリアアップ(JOB@IT)