2017-05-28 2 views
1

Ich habe den folgenden XSL-Code und was ich erreichen möchte, ist die Überschrift an der Spitze der Zelle ausgerichtet und die Beschreibung an den unteren Rand der Zelle:XSL-FO, richten Sie zwei Blöcke in einer Tabellenzelle aus

<fo:table-cell>       
    <fo:block display-align="before"> 
     <xsl:value-of select="headline" /> 
    </fo:block> 
    <fo:block display-align="after"> 
     <xsl:value-of select="description" />        
    </fo:block> 
</fo:table-cell> 

Ich weiß nicht warum, aber es scheint nicht für alle Zellen in der Tabelle zu arbeiten.

Kann dieser Code verbessert werden, sodass die Umwandlung in alle Zellen stattfinden kann?

+0

Die Eigenschaft 'display-align' bezieht sich auf' fo: table-cell' (und andere Formatierungsobjekte), aber ** nicht ** auf 'fo: block'. Können Sie stattdessen zwei Zeilen verwenden (eine für Überschriften, eine für die Beschreibungen)? Welchen Formatierer verwendest du? – lfurini

Antwort

1

Wahrscheinlich die beste Lösung, wie von Ifurini vorgeschlagen, wäre, Ihre Tabellenzelle in zwei Reihen zu teilen. Wenn das nicht das, was Sie wollen, versuchen Sie dies:

<fo:table table-layout="fixed"> 
    <fo:table-column/> 
    <fo:table-body line-height="16pt"> 
     <fo:table-row height="100pt"> 
      <fo:table-cell> 
       <fo:block-container height="50pt" display-align="before"> 
        <fo:block>Top</fo:block>  
       </fo:block-container> 
       <fo:block-container height="50pt" display-align="after"> 
        <fo:block >Bottom</fo:block>  
       </fo:block-container> 
      </fo:table-cell> 
     </fo:table-row> 
    </fo:table-body> 
</fo:table> 

display-align So in einem block-conainer verwenden. Aber Sie müssten irgendeine Art von Höhenbeschränkungen angeben, sonst wird der Inhalt des Containers einfach umgebrochen, so dass display-align nutzlos bleibt.

Verwandte Themen