- PR -

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

投稿者投稿内容
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-01-15 23:10
私の方でも、長い文章を流し込んで見ましたが、特に問題なく表示されました。

以下の文書が正しく改行して表示されるかどうか、確認していただけないでしょうか。
# utf-8で保存してね。

コード:

<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" language="ja">

<fo:layout-master-set>
<fo:simple-page-master
margin-right="2.3cm" margin-left="2.5cm"
margin-bottom="0.5in" margin-top="1.0cm"
page-width="21cm" page-height="29.7cm"
master-name="simple">
<fo:region-body margin-top="1em"/>
</fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="simple">

<fo:flow font-size="10pt" font-family="Gothic" flow-name="xsl-region-body">
<fo:block start-indent="1em">
<fo:table
table-layout="fixed" border-width="0.4pt"
border-collapse="collapse">
<fo:table-column column-width="8.5cm"/>
<fo:table-column column-width="8.0cm"/>

<fo:table-body>
<fo:table-row>
<fo:table-cell border-style="solid" display-align="center" column-width="8cm">
<fo:block>
次に、抽出した分析オブジェクトを使用して、ユースケースのフローを満たすコラボレーションを考える。
コラボレーションの構築はロバストネス分析により行った。
また、今後、オブジェクトが増加したときに全体を把握しやすくするよう、この時点でレイヤー分けも行った。
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" display-align="center">
<fo:block>システム分析</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border-style="solid" display-align="center">
<fo:block>
ここからは、テスト駆動開発を行うためのテストケースを決めていく。
テストケースは、ユースケースのシナリオを参考に作成していく。 ここで、テストシナリオにおいて、
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="solid" display-align="center">
<fo:block>テストケース</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>

</fo:page-sequence></fo:root>



[ メッセージ編集済み 編集者: かずくん 編集日時 2004-01-15 23:14 ]
sugimoto
常連さん
会議室デビュー日: 2002/12/05
投稿数: 45
投稿日時: 2004-01-16 09:43
ありがとうございました。解決です。
頂いたサンプルを動かしたところ見事に改行され、
違いを見ていたら、
<fo:root>の属性に language="ja" が自分のfoには無く、
これを入れてみると、見事に改行されるようになりました。

実は、
http://www.xslt.com/xsl-list/2002-01/msg00928.html
このページを参考に作った下記の一文字ずつ、サイズ0のスペースを入れる
テンプレートでしのぐしかないのかと、覚悟を決めていたところでした。
これで下記のテンプレートを使わずにすみます。
ありがとうございました。

<xsl:template name="text_wrapper">
<xsl:param name="Text"/>
<xsl:choose>
<xsl:when test="string-length($Text)">
<xsl:value-of select="substring($Text,1,1)"/>
<fo:inline font-size="0pt">&#8203;</fo:inline>
<xsl:call-template name="wrapper_helper">
<xsl:with-param name="Text" select="substring($Text,2)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template name="wrapper_helper">
<xsl:param name="Text"/>
<xsl:value-of select="substring($Text,1,1)"/>
<fo:inline font-size="0pt">&#8203;</fo:inline>
<xsl:call-template name="text_wrapper">
<xsl:with-param name="Text" select="substring($Text,2)"/>
</xsl:call-template>
</xsl:template>

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