2009-11-11 54 views
11

Chcę wyświetlić tekst z większą czcionką w skrajnej lewej kolumnie <fo:table>. Kolumny z prawej strony powinny jednak składać się z kilku wierszy z mniejszym tekstem.Czy istnieje sposób użycia odpowiednika "rowspan" w XSL-FO?

ten sposób kod XSL wygląda przed dodaniem żadnej skrajnej lewej kolumnie z większego tekstu:

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

chcę dodać kolumnę w lewo, ale nie mogę znaleźć składni dla niego. W HTML wyżej będzie napisane tak:

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

I aby osiągnąć to, co chcę musielibyśmy tylko zmodyfikować go tak:

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

Ale jak to najlepiej zrobić z za XSL-FO?

+0

Czy tytuł nie powinien zawierać XSL: FO zamiast XSLT? – ndim

+0

Jak mogłeś sobie uświadomić, jestem początkującym użytkownikiem XSL i widzę, że masz rację. Pytanie dotyczy XSL: FO, a nie XSLT. Dzięki! – Niklas

Odpowiedz

30

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

nie można po prostu uwielbiam jak rozwlekły XSL jest?

0

Użyj funkcji wiersza z numerami lub z kolumną z numerem. Ale dlaczego nie skorzystać z wizualnego projektanta? Używam Ecrion XF Designer i wykonuję całkiem niezłą robotę.

+1

* liczba kolumn-spanks –

+0

Wszelkie bezpłatne alternatywy dla Ecrion? –

3

Wybrana powyżej odpowiedź jest właściwa, do definicji komórki tabeli dodaje się klauzulę "number-rows-splanned =".

Jednak w przeciwieństwie do HTML, nie pozostawiasz w komórkach zastępczych w poniższych rzędach. Jeśli to zrobisz, FO będzie narzekać, że w wierszu znajduje się zbyt wiele komórek.

Powiązane problemy