2009-11-11 3 views
11

より大きいフォントのテキストを<fo:table>の一番左の列に表示したいとします。しかし、右側の列は、小さなテキストの2行から構成する必要があります。XSL-FOで 'rowspan'に相当する方法を使用する方法はありますか?

これは、XSLコードは、大きな文字で任意の左端の列を追加する前に、どのように見えるかです:

<xsl:template name="printAddress"> 
    <xsl:param name="subDocument" /> 
    <fo:table table-layout="fixed" background-color="#e0e0e0" keep-with-next.within-page="always"> 
    <fo:table-column column-width="7.0cm" /> 
    <fo:table-column column-width="7.0cm" /> 
    <fo:table-column column-width="2.0cm" /> 
    <fo:table-body> 
     <!-- Begin Row 1 --> 
     <fo:table-row keep-with-previous="always"> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block>Value 1</fo:block> 
     </fo:table-cell> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block>Value 2</fo:block> 
     </fo:table-cell> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block /> 
     </fo:table-cell> 
     </fo:table-row> 
     <!-- Begin Row 2 --> 
     <fo:table-row keep-with-previous="always"> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block> 
      <xsl:value-of select="$subDocument/someAttribute" /> 
      </fo:block> 
     </fo:table-cell> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block> 
      <xsl:value-of select="$subDocument/someOtherAttribute" /> 
      </fo:block> 
     </fo:table-cell> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block /> 
     </fo:table-cell> 
     </fo:table-row> 
     <!-- Begin Row 3 --> 
     <fo:table-row keep-with-previous="always"> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block>value 3</fo:block> 
     </fo:table-cell> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block>Value 4</fo:block> 
     </fo:table-cell> 
     <fo:table-cell margin-left="0.2cm" padding-before="0.1cm" padding-after="0.1cm"> 
      <fo:block>Value 5</fo:block> 
     </fo:table-cell> 
     </fo:table-row> 
    </fo:table-body> 
    </fo:table> 
</xsl:template> 

は、私は左に列を追加したいが、私はそれのための構文を見つけることができません。 HTMLでは上記のようなものに書くことになります。

<tr> 
    <td>Value 1</td> 
    <td>Value 2</td> 
    <td></td> 
</tr> 
<tr> 
    <td>{someAttribute}</td> 
    <td>{someOtherAttribute}</td> 
    <td></td> 
</tr> 
<tr> 
    <td>Value 3</td> 
    <td>Value 4</td> 
    <td>Value 5</td> 
</tr> 

をそして、私たちはこれだけのようにそれを変更する必要があります何をしたい達成するために:

<tr> 
    <td rowspan="3" style="font-weight:bold;font-size:14pt">New Text</td> 
    <td>Value 1</td> 
    <td>Value 2</td> 
    <td></td> 
</tr> 
<tr> 
    <td>{someAttribute}</td> 
    <td>{someOtherAttribute}</td> 
    <td></td> 
</tr> 
<tr> 
    <td>Value 3</td> 
    <td>Value 4</td> 
    <td>Value 5</td> 
</tr> 

しかし、どのようにそれが最善のために行われますXSL-FO?

+0

タイトルにXSLTの代わりにXSL:FOと書いてください。 – ndim

+0

私はXSLの初心者であり、あなたが正しいことが分かりました。問題はXSL:FOであり、XSLTではありません。ありがとう! – Niklas

答えて

30

<fo:table-cell number-rows-spanned="3">

あなたはどれだけ冗長なXSLです愛していませんか?

0

number-rows-spanまたはnumber-column-spanを使用します。しかし、なぜビジュアルデザイナーを使用しないのですか? 私はEcrion XF Designerを使用しています。それはかなりうまくやっています。

+1

* number-columns-spanned –

+0

Ecrionの無料代替手段はありますか? –

3

上記の選択された答えが正しい場合は、 "number-rows-spanned ="句をテーブルセルの定義に追加します。

ただし、HTMLとは異なり、下位のスパンの行にプレースホルダセルを置かないでください。そうした場合、FOは列に定義されているセルが多すぎると不満を持ちます。

関連する問題