W3C home > Mailing lists > Public > www-xsl-fo@w3.org > February 2012

Re: Detecting last page of real content

From: G. Ken Holman <gkholman@CraneSoftwrights.com>
Date: Sun, 05 Feb 2012 22:28:10 -0500
Message-Id: <7.0.1.0.2.20120205221619.023c79f0@wheresmymailserver.com>
To: www-xsl-fo@w3.org
At 2012-02-05 15:20 -0600, Earl Hood wrote:
>[Sorry if this is a dupe, seems mailing list does not like
>  when Sender field is not the same as From/Reply-to.  List
>  software should handle this properly.]
>
>I have an odd-even page layout where the sequence is configured
>to end on even.  Hence, a blank page will be inserted if the
>flow content ends on odd.
>
>The problem I have is detecting the case when the flow content
>ends on odd since I am required to indicate that the next page
>is blank.  For example, if the next page is blank, the previous
>page should have something like the following where the page
>number is printed:
>
>  3/4 blank
>
>This indicates we are on page 3, and page 4 is blank.
>
>I've tried to use the "last" for page-position in
>conditional-page-master-reference, but it appears that "last"
>also includes the generated blank page vs the last page
>of flowed content.
>
>Is there a way with standard XSL-FO to get the effect I
>want?

Yes, I've done this in my XSL-FO classroom and showed it working with 
Antenna House.  Attached is the PDF I created (I don't know if this 
list will accept attachments or not).  The XSL-FO that created the 
PDF is below.

In brief,

(1) - put a unique identifier in each page-sequence's blank page flow
(2) - use different page geometries for odd and even pages
(3) - add a marker retrieval on the odd page after the page number
(4) - at the end of the flow the marker as you want the suffix to appear,
       using a page-number-citation to cite the following even page number
       using that page-sequences blank page unique identifier defined in (1)

Note that students informed me that the commercial brand of XSL-FO 
processor they are using does not support this standard use of 
XSL-FO.  I won't say publicly which processor that was, but it might 
be that the processor you are using will not work here.

A contributor to the XSL list revealed this approach last year I 
think.  I wish I had thought of it.

I hope this helps.

. . . . . . . . . Ken

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://www.w3.org/1999/XSL/Format" font-family="Times" 
font-size="20pt">
    <layout-master-set>
       <simple-page-master master-name="frame-even" 
page-height="210mm" page-width="297mm"
                           margin-top="1cm"
                           margin-bottom="1cm"
                           margin-left="1cm"
                           margin-right="1cm">
          <region-body region-name="frame-body" margin-bottom="1cm"/>
          <region-after region-name="after-even" extent="1cm"/>
       </simple-page-master>
       <simple-page-master master-name="frame-odd" 
page-height="210mm" page-width="297mm" margin-top="1cm"
                           margin-bottom="1cm"
                           margin-left="1cm"
                           margin-right="1cm">
          <region-body region-name="frame-body" margin-bottom="1cm"/>
          <region-after region-name="after-odd" extent="1cm"/>
       </simple-page-master>
       <simple-page-master master-name="blank" page-height="210mm" 
page-width="297mm" margin-top="1cm"
                           margin-bottom="1cm"
                           margin-left="1cm"
                           margin-right="1cm">
          <region-body region-name="blank-body"/>
       </simple-page-master>
       <page-sequence-master master-name="frames">
          <repeatable-page-master-alternatives>
             <conditional-page-master-reference 
master-reference="blank" blank-or-not-blank="blank"/>
             <conditional-page-master-reference 
master-reference="frame-even" odd-or-even="even"/>
             <conditional-page-master-reference 
master-reference="frame-odd" odd-or-even="odd"/>
          </repeatable-page-master-alternatives>
       </page-sequence-master>
    </layout-master-set>
   <page-sequence master-reference="frames" force-page-count="end-on-even">
       <static-content flow-name="after-even">
          <block text-align="center">
         Page <page-number/>
          </block>
       </static-content>
       <static-content flow-name="after-odd">
          <block text-align="center">
         Page <page-number/>
             <retrieve-marker retrieve-class-name="next_blank"/>
          </block>
       </static-content>
       <static-content flow-name="blank-body">
          <block id="d0e3_blank"/>
       </static-content>
       <flow flow-name="frame-body">
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>
             <marker marker-class-name="next_blank">
           (<page-number-citation ref-id="d0e3_blank"/> blank)
         </marker>
          </block>
       </flow>
    </page-sequence>
   <page-sequence master-reference="frames" force-page-count="end-on-even">
       <static-content flow-name="after-even">
          <block text-align="center">
         Page <page-number/>
          </block>
       </static-content>
       <static-content flow-name="after-odd">
          <block text-align="center">
         Page <page-number/>
             <retrieve-marker retrieve-class-name="next_blank"/>
          </block>
       </static-content>
       <static-content flow-name="blank-body">
          <block id="d0e102_blank"/>
       </static-content>
       <flow flow-name="frame-body">
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>
             <marker marker-class-name="next_blank">
           (<page-number-citation ref-id="d0e102_blank"/> blank)
         </marker>
          </block>
       </flow>
    </page-sequence>
   <page-sequence master-reference="frames" force-page-count="end-on-even">
       <static-content flow-name="after-even">
          <block text-align="center">
         Page <page-number/>
          </block>
       </static-content>
       <static-content flow-name="after-odd">
          <block text-align="center">
         Page <page-number/>
             <retrieve-marker retrieve-class-name="next_blank"/>
          </block>
       </static-content>
       <static-content flow-name="blank-body">
          <block id="d0e129_blank"/>
       </static-content>
       <flow flow-name="frame-body">
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>
             <marker marker-class-name="next_blank">
           (<page-number-citation ref-id="d0e129_blank"/> blank)
         </marker>
          </block>
       </flow>
    </page-sequence>
   <page-sequence master-reference="frames" force-page-count="end-on-even">
       <static-content flow-name="after-even">
          <block text-align="center">
         Page <page-number/>
          </block>
       </static-content>
       <static-content flow-name="after-odd">
          <block text-align="center">
         Page <page-number/>
             <retrieve-marker retrieve-class-name="next_blank"/>
          </block>
       </static-content>
       <static-content flow-name="blank-body">
          <block id="d0e228_blank"/>
       </static-content>
       <flow flow-name="frame-body">
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>This is a test</block>
          <block>
             <marker marker-class-name="next_blank">
           (<page-number-citation ref-id="d0e228_blank"/> blank)
         </marker>
          </block>
       </flow>
    </page-sequence>
</root> 

--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour video lecture: XSLT/XPath 1.0 & 2.0 http://ude.my/uoui9h
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/f/
G. Ken Holman                   mailto:gkholman@CraneSoftwrights.com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal



Received on Monday, 6 February 2012 03:28:53 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 6 February 2012 03:28:53 GMT