2009-07-04 16 views
15

mający dość prosty szablon:XSL-FO - Puste elementy blokowe

<xsl:template match="p"> 
    <fo:block> 
     <xsl:apply-templates/> 
    </fo:block> 
</xsl:template> 

zadaję sobie pytanie, jak stwierdzić FO aby zachować puste linie jeśli blok jest pusty.

Cheers
Jan

Odpowiedz

32

Wystarczy dodać element <fo:leader/> na końcu swojej <fo:block>. W ten sposób:

<xsl:template match="p"> 
     <fo:block> 
       <xsl:apply-templates/> 
       <fo:leader /> 
     </fo:block> 
</xsl:template> 

Lider nic nie zrobi dla linii z zawartością i utworzy pusty wiersz dla linii bez zawartości.

Testowany z Apache FOP i XEP.

8

Alternatywnie

<fo:block white-space-treatment="preserve"> </fo:block> 
11

Albo

<xsl:template match="p"> 
    <fo:block> 
      <xsl:apply-templates/> 
      &#x00A0; 
    </fo:block> 

&#x00A0; jest odpowiednikiem &nbsp; w HTML (właściwie &nbsp; jest jednostką XML, który jest zdefiniowany jako A0, który jest Unicode dla Non Breaking Space).

Powiązane problemy