Re: from-page-master-region()

Liam Quin wrote:
> Peter, thank you for your comments. The Working Group considered
> your message at its recent Face to Face meeting.
> 
> There seem to us to be three separate questions:
> (1) Editorial changes
> 
> Noted with thanks!
> 
> (2) Re: Might it be possible to provide for direct inheritance of
>     traits?
> 
> Traits do not inherit.
> 
> (3) Re: What if a subset of traits were defined to inherit directly from
>     properties on their area's controlling simple-page-master?
> 
> You can't inherit from both places. The Working Group has tried this
> approach in the past, and it is an area we might need to explore in
> order to do layout-driven formatting, but it is not a change we are
> prepared to make for 1.1.
> 
> Thank you,
> 
> Liam, on behalf of the XSL Working Group FO subgroup.
> 

Liam,

Thanks to you and the WG for your response.  Regarding (3), allow me try
a different tack.

Below are the changes to the description of page-sequence from XSL 1.0
to the 1.1 Draft, except for a discussion of binding edge and change
bars.  The interesting part is at the end of the 1.1 changes.

----------------- 1.1 changes -----------------------
XSL 1.1 Draft
6.4.5 fo:page-sequence

Common Usage:
...

Areas:

...
| The generation of these further areas is described in the descriptions
| of the fo:simple-page-master, region-masters and fo:flow-map.

...

The page-viewport-areas identify one of the sides as a page binding
edge. ... (Discussion of binding edge.)

For each formatting object descendant D under the change bar influence
of a given fo:change-bar-begin ... (Discussion of change bars.)

** Trait Derivation:

** The reference-orientation and writing-mode of the
** region-viewport-areas are determined by the values of the
** "reference-orientation" and "writing-mode" properties of the
** fo:page-sequence.

** Note:

** The value may be given as an explicit value or the
** from-page-master-region function may be used to obtain the
** value specified on the layout formatting object being used
** to generate the region viewport/reference area pair.

---------------- end 1.1 changes ---------------------

What appears to have happened here is that a specific interpretation of
the way reference-orientation and writing-mode are derived is being
cemented in place, and then the new function is introduced to support
aspects of the other interpretation.

It seems to me that 1.0 allowed the following interpretation.

The fo:simple-page-master subtree generates a set of page context areas,
conceptually when the layout-master set is being processed;
page-viewport, page-reference-area, region-(border)-viewport,
region-(border)-reference-area, region-body-viewport,
region-body-reference-area, (empty) before-float-reference-area, (empty)
footnote-reference-area, main-reference-area and span-reference-area.

This set of top-level page areas is common to all pages generated using
a given simple-page-master.  Extent properties defined in terms of
percentages can be resolved during the construction of the
layout-master-set against the actual page size required by the
s-p-master.  This area subtree can then be copied directly into the area
tree when the s-p-m is invoked by a page-sequence.

The trait set developed in this way includes both the
reference-orientation and the writing-mode.  page-sequence then has no
involvement in setting either of these properties.  The curious thing
about the reworking of the draft is that reference-orientation and
writing-mode are active on s-p-m, but are removed from the regions!
What's the rationale for that?  If the s-p-m can control these
properties when pages are being laid out, why can't the regions do the
same?  Instead of being able to directly specify ref-orient or w-m
individually on each region and differently from the s-p-m, the default
is to impose a single value on all of the regions, and introduce
from-page-master-region() to recover flexibility.  This is topsy-turvy.

Note that the normal proces of property inheritance is intact.  Given
the acceptance by the WG of the suggestion that reference-orientation is
not inherited, but is additively applied with respect to the nearest
ancestor reference-area, reference-orientation, similarly to percentage
calculations, is resolved with reference to the area tree, not the FO
tree.  While not identical, writing-mode has similarities.  It is not
"inherited", but sets up a state in the area tree at the reference-area
on which it is defined.

It seems to me feasible to go the other way as described above.
Style-sheet authors also write the pages masters and associate them with
page-sequences.  If an author has reason to override the
reference-orientation or writing-mode on any region, the flow or
static-content can be created with a single fo:block-container child on
which the required properties are defined.

The major advantage is that all of the page layout associated with
layout-master-set can be performed while processing that subtree.

Regards,
Peter

-- 
Peter B. West <http://cv.pbw.id.au/>
Folio <http://defoe.sourceforge.net/folio/> <http://folio.bkbits.net/>

Received on Wednesday, 16 March 2005 00:55:19 UTC