Next in thread →
Next in month →
Re: [docbook-apps] How do I customize docbook/fo stylesheet to do custom page breaks on sections?
Typo: That first word was supposed to be
"Unlike", not "Unless".
Bob Stayton
Sagehill Enterprises
----- Original Message -----
From:
Bob Stayton
To: Jon Rosen ;
Sent: Friday, October 07, 2011 11:45
PM
Subject: Re: [docbook-apps] How do I
customize docbook/fo stylesheet to do custom page breaks on sections?
Hi Jon,
Unless global params, an attribute-set is
evaluated each time it is used, in the context of the element being
processed. So putting an xsl:choose inside the body of an
xsl:attribute element works, but be sure to include an xsl:otherwise so you
don't get an empty attribute.
In your case, I would recommend adding a role
attribute to the special chapter, rather than relying on its position in the
document (which can change). If you used <chapter
role="StatementDefs">, then your stylesheet could use:
<xsl:attribute-set
name="section.level1.properties">
<xsl:attribute
name="break-before">
<xsl:choose>
<xsl:when
test="ancestor::chapter/@role =
'StatementDefs'">page</xsl:when>
<xsl:otherwise>auto</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:attribute-set>
This feature of XSLT is very handy for stuff like
this.
Bob Stayton
Sagehill Enterprises
----- Original Message -----
From:
Jon
Rosen
To:
Sent: Thursday, October 06, 2011 12:39
PM
Subject: [docbook-apps] How do I
customize docbook/fo stylesheet to do custom page breaks on sections?
I have no idea if anyone on this forum will be familiar
enough with Docbook and the XSL-FO stylesheets for creating PDFs but I need
to figure out how to customize my stylesheet template so that I can do
pagebreaks differently for each chapter.
There is a standard param
element to set page breaks on sections:
<xsl:attribute-set
name="section.level1.properties">
<xsl:attribute
name="break-before">page</xsl:attribute>
</xsl:attribute-set>
But
this is universal, i.e., ALL chapters in the book get set with this
property. Chapter 4 has statement definitions for each element of our SQL
language and because of the layout, we would like each section to start on a
new page. However, the other chapters have lots of very small sections at
the sect1 level and when they page-break, the book looks awful.
So I
want chapter 4 to do this, but on the other chapters, I just want regular
non-breaking section 1 headings.
I figure I need some kind of
"xsl:if" statement that tests the chapter number and puts in this attribute
modification just for chapter 4 but I have no real idea how to find out what
variable has the chapter numbers to compare and where to put this test (xsl
is still a bit mysterious to me although I am getting more familiar all the
time).
Any help would be GREATLY appreciated!
Jon "bleurose"
Rosen
PS -
feel free to email me directly.
Jon
Rosen
"Sometimes you're the
pinball wizard, and sometimes you're just the
pinball."
Next in thread →
Next in month →