Typo:  That first word was supposed to be "Unlike", not "Unless".

Bob Stayton
Sagehill Enterprises
[email protected]


  ----- Original Message ----- 
  From: Bob Stayton 
  To: Jon Rosen ; [email protected] 
  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
  [email protected]


    ----- Original Message ----- 
    From: Jon Rosen 
    To: [email protected] 
    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
    [email protected]

    PS - feel free to email me directly.

     

    Jon Rosen

    "Sometimes you're the pinball wizard, and sometimes you're just the 
pinball."

     

Reply via email to