- From: MURAKAMI Shinyu <murakami@nadita.com>
- Date: Sat, 30 Jun 2001 17:38:18 -0400 (EDT)
- To: xsl-editors@w3.org
Dear XSL authors,
I have still question about the conditionality of space/border/paddings.
The section [4.3 Spaces and Conditionality] of XSL CR says about this
but it seems insufficient. There is no description about the condition
of is-first and is-last traits, although such description is found in
each section of border/paddings.
7.6.9 "border-before-width"
...... The .conditionality component may be set to
"discard" or "retain" to control if the border should be 0
or retained if its associated edge is a leading-edge in a
reference-area for areas generated from this formatting
object that have an is-first value of "false".
7.6.34 "padding-end"
...... The .conditionality component may be set to
"discard" or "retain" to control if the padding should be 0
or retained if its associated edge is a trailing-edge in a
line-area for areas generated from this formatting object
that have an is-last value of "false".
(etc.)
But in section 4.3.1:
The border or padding at the before-edge or after-edge of a
block-area may be specified as conditional. If so, then it is
set to zero if its associated edge is a leading or trailing edge
in a reference-area. In this case, the border or padding is
taken to be zero for purposes of the stacking constraint
definitions.
The border or padding at the start-edge or end-edge of an
inline-area may be specified as conditional. If so, then it is
set to zero if its associated edge is a leading or trailing edge
in a reference-area or line-area. In this case, the border or
padding is taken to be zero for purposes of the stacking
constraint definitions.
(BTW in the last paragraph why "reference-area or" ?)
If the condition "is-first/last value of false" is missing, the
conditional border/padding has different behavior. For example:
<fo:block>
<fo:inline border-style="solid"
border-start-width="1mm"
border-start-width.conditionality="discard"
border-end-width="1mm"
border-end-width.conditionality="discard">
This inline begins a line, has conditional border-start/end, and
continues to the next line.
</fo:inline>
<fo:inline>Here is another inline.</fo:inline>
</fo:block>
(of course .conditionality="discard" need not to be specified since it
is the default)
The expected result is:
+-------------------------------------------------------------
| This inline begins a line, has conditional border-start/end,
+-------------------------------------------------------------
--------------------------------+
and continues to the next line. | Here is another inline.
--------------------------------+
The border-start of the first inline-area is not discarded because this
inline-area has the is-first value of "true".
The is-first/last problem is not only about border/paddings but also
about spaces. However the problem is different.
Example of conditional spaces:
<fo:block>
<fo:inline space-start="1cm"
space-start.conditionality="discard"
space-end="1cm"
space-end.conditionality="discard">
This inline begins a line, has conditional space-start/end, and
continues to the next line.
</fo:inline>
<fo:inline>Here is another inline.</fo:inline>
</fo:block>
The expected result is: (here [SPACE-*] represents spaces)
This inline begins a line, has conditional space-start/end,
and continues to the next line.[SPACE-END]Here is another inline.
Note that the space-before of the first inline-area is discarded
(different from conditional padding/borders). Spaces are normally used
as separator and should be descarded at the first and last.
Example of non-conditional spaces:
<fo:block>
<fo:inline space-start="1cm"
space-start.conditionality="retain"
space-end="1cm"
space-end.conditionality="retain">
This inline begins a line, has non-conditional space-start/end, and
continues to the next line.
</fo:inline>
<fo:inline>Here is another inline.</fo:inline>
</fo:block>
A possible result is:
[SPACE-START]This inline begins a line, has non-conditional[SPACE-END]
[SPACE-START]space-start/end, and continues to the next[SPACE-END]
[SPACE-STAET]line.[SPACE-END]Here is another inline.
According to the current XSL CR spec this seems to be correct, but
probably the following is more reasonable.
[SPACE-START]This inline begins a line, has non-conditional space-
start/end, and continues to the next line.[SPACE-END]Here is another
inline.
An important point is that the latter is compatible with CSS margins and
the former is not.
Therefore, I think the rule should be changed.
Any space-before and space-start should not have effect on areas that
have an is-first value of "false".
Any space-after and space-end should not have effect on areas that have
an is-last value of "false".
(i.e., when an area is split, spaces have no effect where the split
occurs.)
Best regards,
Shinyu Murakami
Antenna House XSL Formatter team
http://www.antennahouse.com
Received on Monday, 2 July 2001 03:15:25 UTC