2009-11-11 36 views
11

<fo:table>'un en solundaki sütunda daha büyük yazı tipine sahip bir metin görüntülemek istiyorum. Sağdaki sütunlar, ancak daha küçük metin içeren birkaç satırdan oluşmalıdır.XSL-FO'da 'rowspan' eşdeğerini kullanmanın bir yolu var mı?

Bu XSL kod daha büyük metin ile herhangi soldaki sütun eklemeden önce nasıl göründüğünü geçerli:

<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> 

bıraktım sütun eklemek istiyorum ama bunun için sözdizimi bulamıyorum. HTML'de yukarıda böyle bir şey yazılabilir olacaktır:

<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> 

Ve biz sadece böyle değiştirmek gerekir istediklerini gerçekleştirmek için:

<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> 

Ama bunun en iyi yapılabilir olurdu XSL-FO?

+0

Başlık XSLT yerine XSL: FO'dan bahsetmemeli mi? – ndim

+0

Gördüğünüz gibi, XSL'ye yeni başladım ve haklı olduğunuzu görebiliyorum. Soru XSL: FO ve XSLT ile ilgili değil. Teşekkürler! – Niklas

cevap

30

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

sen ne kadar söz XSL olduğunu sevmiyorsun?

0

Numara sıralı veya yayılmış sütunları kullanın. Ama neden bir görsel tasarımcı kullanmıyorsunuz? Ecrion XF Designer kullanıyorum ve oldukça iyi bir iş çıkarıyor.

+1

* sütunlara yayılmış –

+0

Ecrion'a herhangi bir alternatif var mı? –

3

Yukarıdaki seçili yanıt doğru, tablo hücresinin tanımına "number-rows-spanned =" yan tümcesini eklersiniz. Ancak, HTML'den farklı olarak, aşağıda yer alan satırlara yer tutucu hücrelerde ayrılmazsınız. Bunu yaparsanız FO, satırda tanımlanmış çok fazla hücre olduğundan şikayet eder.

İlgili konular