- From: Nikolai Grigoriev <grig@renderx.com>
- Date: Tue, 14 Nov 2000 11:37:58 +0300
- To: <xsl-editors@w3.org>
Dear XSL Editors,
while implementing multi-column layouts, we have encountered problems in spec
interpretation.
Consider this case:
<fo:block>
<fo:block span="all">SPANNED</fo:block>
<fo:block>
The outer block has an implicit value of span="none". Therefore, by definition
of the "span" property [WD 7.18.5], "this object does not span multiple
columns". It looks like having children with span="all" is illegal in this case.
If we swap the location of attributes, we still get interpretation problems:
<fo:block span="all">
<fo:block>SOME TEXT</fo:block>
<fo:block>
The outer block "shall span all the columns of a multi-column region", and the
inner one "does not span multiple columns" (because @span is not inheritable,
with the initial value of "none"!). Therefore, for a layout to be consistent,
one should never nest blocks with different values of span="all".
This turned out to be extremely unpractical. When designing a stylesheet, you
have to care about every block-level element if it will be placed into a spanned
region, or into a normal one; you need either to switch modes, or to keep an
extra parameter just to pass the @span value down to all block-level descendants
of a spanned block. (Using "inherited" of "from-parent()" value does not help
much - you should care to specify this on every wrapper inside your block, but
not outside. And "from-nearest-specified-value()" risks to destroy
floats/footnotes).
My suggestion is to get rid of all these. If a flow-region should be subdivided
into span-reference-areas, let us design a special formatting object to
correspond to these areas - let us call it fo:flow-body:
<!ELEMENT fo:flow (fo:flow-body+ | (%block;)+)>
<!ELEMENT fo:flow-body+ (%block;)+>
<!ATTLIST fo:flow-body
column-count CDATA #IMPLIED
column-gap CDATA #IMPLIED
...
>
This would also yield the formatting more flexible - you could alternate
two-column regions with three-column ones. From the implementation point of
view, there's little difference between having only two possible values for
@column-count in a fo:flow, or having many - you still need to balance columns
in every span-reference-area separately. And having a possibility to produce
magazine-style layouts is a big plus for any formatter.
Best regards,
Nikolai Grigoriev
RenderX
Received on Tuesday, 14 November 2000 03:39:55 UTC