XFA Specification
Chapter 7, Layout for Growable Objects
Flowing Layout for Containers
234
Borders and Splitting
Border objects have a
break
property that determines
what the layout processor does when the object to
which the border belongs splits. When
break
is set to
close
the layout processor draws all sides of the
border around each fragment of the object. By contrast
when
break
is set to
open
, the top border is drawn
only over the first fragment and the bottom border only
under the last fragment. The figure at right shows the
effect of the
break
property.
Recall that borders have no effect upon the nominal
extent of a layout object, so although borders are
affected by the layout process they have no effect upon
anything else.
To be or
not to be,
that is the
question.
Whether
'tis nobler
in the mind
to bear the
border break = “closed”
To be or
not to be,
that is the
question.
slings and
arrows of
outrageous
fortune, or
Whether
'tis nobler
in the mind
to bear the
border break = “open”
slings and
arrows of
outrageous
fortune, or
Effect of the border break property
Flowing Between ContentArea Objects
During flowing layout, when a
contentArea
becomes full, the layout processor moves to a new
contentArea
. It traverses from the current
contentArea
to the new
contentArea
in document order
(depth-first, right-to-left). Hence it pours content into the current
contentArea
, then into its next sibling,
and so on until all the
contentArea
objects within the
pageArea
are full.
By default, when the current
pageArea
is full, the layout processor moves on to the next
pageArea
object in document order. By default, when it has filled the last
pageArea
object, it stops and no more
content is laid out. However, it is possible for individual
pageArea
objects, and the
pageSet
object, to be
copied multiple times into the Layout DOM. This is controlled by the maximum occurrence property of the
pageArea
or
pageSet
.
Maximum Occurrence Limits
When the layout processor finishes filling the last
contentArea
on a page, it ascends from the current
node in the Template DOM until it comes to a node with a maximum occurrence limit that has not yet
been exhausted. This may involve ascending one level to the parent
pageArea
or two levels to the
grandparent
pageSet
. When it reaches a node with a maximum occurrence limit that has not yet been
exhausted, the layout processor adds a new node of the same type to the Layout DOM in the
corresponding position. For example, suppose a template contains the following declarations:
<pageSet name="A">
<occur max="-1"/>
<pageArea name="B">
<occur max="1"/>
<contentArea name="C" … />
<contentArea name="D" … />
</pageArea>
<pageArea name="E">
<occur max="2"/>
<contentArea name="F" … />
</pageArea>
</pageSet>