[xsl] XSLT and FO/FOP workarounding

Subject: [xsl] XSLT and FO/FOP workarounding
From: Sönke Ruempler <ruempler@xxxxxxxxxxxxxxx>
Date: Mon, 13 Sep 2004 08:44:34 +0200
Hi,

I am using XML, XSLT and FOP to generate PDFs via XSL-FO. I have written
(and copied some stuff) a XSLT Stylesheet that transforms a HTML-like
Language to XSL-FO. Since FOP does not support the feature of FO that i can
the a Element that it never breaks with the next elements in 2 pages, I am
looking for a workaround. FOP supports that if the 2 elements are
transformed into a table:

XML:

<h1>title</h1>
<p>blahtext</p>

XSLT Template:

  <template match="h1">
   <fo:table table-layout="fixed" width="100%">
     <fo:table-column column-width="proportional-column-width()"/>
     <fo:table-body>
       <fo:table-row keep-with-next="always">
          <fo:table-cell>
		<fo:block xsl:use-attribute-sets="h1">
			<xsl:apply-templates/>
		</fo:block>
          </fo:table-cell>
       </fo:table-row>
       <fo:table-row>
          <fo:table-cell>
            <xsl:apply-templates select="following-sibling::*"/>
          </fo:table-cell>
       </fo:table-row>
     </fo:table-body>
   </fo:table>

That works so far, but the problem is that now the element after the h1 tag
is processed two times: one in the h1 tag and one for the element itself.

So my question is how to exclude the next element via XSLT, something like:

<xsl:apply-templates
     select="*[not(preceding-sibling::*[1][self::h1])]"/>

One guy at the FOP Maling List told me that, but then FOP says:

[Fatal Error] :-1:-1: Premature end of file.
[ERROR] Premature end of file.)


My second Question is that i don't want to copy that stylesheet for each
heading (h1, h2, ...) and a general stylesheet for the headings would be
nice.


--

Svnke

Current Thread