W3C home > Mailing lists > Public > xsl-editors@w3.org > July to September 2001

Re: Your comments on the XSL Candidate Recommendation

From: Anders Berglund <alrb@us.ibm.com>
Date: Mon, 2 Jul 2001 17:26:22 -0400
To: MURAKAMI Shinyu <murakami@nadita.com>
Cc: xsl-editors@w3.org
Message-ID: <OF083945EC.BD6737FD-ON85256A7D.00746E46@pok.ibm.com>

I am glad that most of the dispositions meet with your approval.
Please see a correction below to the outstanding issue.

Anders

>I received from XSL WG the disposition of comments about:
> - initial value of border/padding conditionality
> - start-indent and end-indent
>
>[snip]
>
>> It lacks consistency!!!  Why "retain" on before/after and "discard" on
>> start/end?
>>
>> I believe that the initial value of the .conditionality should be
>> "discard" on all edges.
>[snip]
>
>> Disposition: Accepted (clarification)
>>
>> This question was discussed at a joint XSL/CSS face to face meeting
>> and it was agreed that, even though the CSS2 recommendation does not
>> state the behaviour for blocks being split one should assume the same
>> rules as for inlines. The initial values have been changed to
>> "discard" as you request.
>
>OK.
>
>> Comment 20 (public comment):
>>
>> I've found some problems of XSL-FO CR spec about start-indent and
>> end-indent.
>>
>> Item 1
>>
>> Problem 1: Formulae for indents (indent=margin+padding+border?)
>[snip]
>
>> Case 1: Indents on nested blocks
>[snip]
>
>> Disposition: Accepted (bug in spec)
>>
>> The formula has been corrected by adding "inherited end-indent +" and
>> "inherited start-indent +" respectively.
>>
>> Changed text in the XSL recommendation:
>>
>> start-indent = inherited_value_of(start-indent) + margin-corresponding
>> + padding-corresponding + border-corresponding-width
>>
>> end-indent = inherited_value_of(end-indent) + margin-corresponding +
>> padding-corresponding + border-corresponding-width
>
>OK.
>
>> Item 2
>>
>> Case 2: Indents on blocks without margin-corresponding specified
>[snip]
>
>> Disposition: Explanation of XSL spec
>>
>> In XSL you have to explicitly specify margin=0 in order for the indent
>> to be computed from the margin value. start- and end-indents are
>> inherited properties and the traits are the indents not the margins.
>> The current text has been expanded to make the computation rules
>> clearer.
>>
>> Changed text in the XSL recommendation:
>>
>> The "space-before", and "space-after" properties (block-level
>> formatting objects), "space-start", and "space-end" properties
>> (inline-level formatting objects) are handled in the same way as the
>> properties immediately above, but the corresponding absolute
>> properties are in the set: "margin-top", "margin-bottom",
>> "margin-left", and "margin-right".
>>
>> There are two more properties, "end-indent" and "start-indent"
>> (block-level formatting objects) which correspond to the various
>> absolute "margin" properties. For these properties, the correspondence
>> is more complex and involves the corresponding "border-X-width" and
>> "padding-X" properties, where X is one of "left", "right", "top" or
>> "bottom". The computed values of these corresponding properties are
>> determined as follows:
>>
>> If the corresponding absolute "margin" property is specified on the
>> formatting object and the formatting object generates a reference area
>> the computed value of the margin is used to calculate the computed
>> value of the corresponding "Y-indent" property, where Y is either
>> "start" or "end". The formulae for "start-indent" and "end-indent"
>> are":
>>
>> start-indent = margin-corresponding
>>
>> end-indent = margin-corresponding
>>
>
>Has the definition of start-indent and end-indent changed?
>
>XSL CR spec said that the start-indent is the distance from the start-
>edge of the content-rectangle of the containing reference-area to the
>start-edge of the content-rectangle of that block-area.
>
>It seems to have changed as:
>
>When start-indent is applied to a formatting object that generates a
>reference area, the start-indent value is the distance from the start-
>edge of the content-rectangle of the containing reference-area to the
>start-edge of the border-rectangle (NOT content-rectangle) of that
>contained reference-area.
>
>I think this change is reasonable. (but is it true?)

The definition as not changed, but I made a, rather gross, copy and
paste error in creating that part of the text. It should be

 start-indent = margin-corresponding + padding-corresponding +
                border-corresponding-width

 end-indent = margin-corresponding + padding-corresponding +
              border-corresponding-width

(ie the only part left out is the inherited value of the indent)

Thank-you for finding this error!

>> If the corresponding absolute "margin" property is specified on the
>> formatting object and the formatting object does not generate a
>> reference area, the computed value of the margin and the computed
>> values of the corresponding "border-X-width" and "padding-X"
>> properties are used to calculate the computed value of the
>> corresponding "Y-indent" property. The formulae for "start-indent" and
>> "end-indent" are:
>>
>> start-indent = inherited_value_of(start-indent) + margin-corresponding
>> + padding-corresponding + border-corresponding-width
>>
>> end-indent = inherited_value_of(end-indent) + margin-corresponding +
>> padding-corresponding + border-corresponding-width
>>
>> If the corresponding absolute margin property is not explicitly
>> specified the corresponding absolute margin property is calculated
>> according to the following formulae:
>>
>> margin-corresponding = start-indent - inherited_value_of(start-indent)
>> - padding-corresponding - border-corresponding-width
>>
>> margin-corresponding = end-indent - inherited_value_of(end-indent) -
>> padding-corresponding - border-corresponding-width
>>
>> NOTE:
>>
>> If the "start-indent" or "end-indent" properties are not specified
>> their inherited value is used in these formulae.
>
>OK. But people who learnt CSS will make mistakes. It is necessary to
>emphasize: When border or padding is used, the same layout as CSS cannot
>be obtained if margin or indent is not explicitly specified.
>
>  <fo:block padding-left="1in">
>  This text is not indented. (different from CSS)
>  </fo:block>
>
>  <fo:block padding-left="1in" margin-left="0in">
>  This text is 1in indented. (like CSS)
>  </fo:block>
>
>> Item 3
>>
>> Problem 2: Inherited start-indent and end-indent on reference areas
>[snip]
>
>> Disposition: Explanation of why no change will be made
>>
>> The design approach taken for XSL was to have a simple inheritance
>> model. Making this change would obviously introduce an exception to
>> this model. There are many other properties that one MIGHT not want to
>> inherit from e.g. a table-and-caption to the content of the cells so
>> why single out indent? If one, for example, wants to center a
>> table-and-caption one specifies text-align="center" for the
>> table-and-caption, which inherits to the cells.
>>
>> There are also cases where it is necessary to be able to use the value
>> of an indent value in effect outside a reference area inside it. One
>> example is for "CSS side floats" where the floated object is to have
>> the same indent as where the float was defined. In XSL this means that
>> the indent of the content of the reference area generated by the
>> fo:float should be the same as the indent of the fo in which the float
>> occurred. In other cases, eg when using an "offset" style where
>> paragraphs are indented, but "headings" are not, it is also more
>> convenient to inherit the indents.
>>
>> The consensus of the working group was to not introduce this breaking
>> of the inheritance as it is sometimes very useful and in the cases
>> where it is not what the stylesheet author wishes it is very easy to
>> make an explicit specification of the desired indent. An example,
>> using attribute-sets, has been added to the specification to show this.
>>
>> Added text in the XSL recommendation:
>>
>> Input sample:
>>
>> <doc>
>> <table>
>> <caption><p>Caption for this table</p></caption>
>> <tgroup cols="3" width="325pt">
>> <colspec colwidth="100pt"/>
>> <colspec colwidth="150pt"/>
>> <colspec colwidth="75pt"/>
>> <tbody>
>> <row>
>> <entry><p>Cell 1</p></entry>
>> <entry><p>Cell 2</p></entry>
>> <entry><p>Cell 3</p></entry>
>> </row>
>> </tbody>
>> </tgroup>
>> </table>
>> </doc>
>>
>> The table and its caption is centered in the available space between
>> the following indents: start-indent="100pt" and end-indent="0pt". The
>> centering and indent is not desired for the content of the caption and
>> the cells.
>>
>> XSL Stylesheet:
>>
>> <?xml version='1.0'?>
>> <xsl:stylesheet xmlns:xsl="<A HREF
="http://www.w3.org/1999/XSL/Transform">http://www.w3.org/1999/XSL/Transform</A>"
>>                 xmlns:fo="<A HREF
="http://www.w3.org/1999/XSL/Format">http://www.w3.org/1999/XSL/Format</A>"
>>                 version='1.0'>
>>
>> <xsl:attribute-set name="inside-table">
>>   <xsl:attribute name="start-indent">0pt</xsl:attribute>
>>   <xsl:attribute name="text-align">start</xsl:attribute>
>> </xsl:attribute-set>
>>
>> <xsl:template match="p">
>>   <fo:block>
>>     <xsl:apply-templates/>
>>   </fo:block>
>> </xsl:template>
>>
>> <xsl:template match="table">
>>   <fo:table-and-caption text-align="center" start-indent="100pt">
>>     <xsl:apply-templates/>
>>   </fo:table-and-caption>
>> </xsl:template>
>>
>> <xsl:template match="caption">
>>   <fo:table-caption xsl:use-attribute-sets="inside-table">
>>     <xsl:apply-templates/>
>>   </fo:table-caption>
>> </xsl:template>
>>
>> <xsl:template match="tgroup">
>>   <fo:table width="{@width}" table-layout="fixed">
>>     <xsl:apply-templates/>
>>   </fo:table>
>> </xsl:template>
>>
>> <xsl:template match="colspec">
>>   <fo:table-column column-width="{@colwidth}">
>>     <xsl:attribute name="column-number">
>>       <xsl:number count="colspec"/>
>>     </xsl:attribute>
>>   </fo:table-column>
>> </xsl:template>
>>
>> <xsl:template match="tbody">
>>   <fo:table-body xsl:use-attribute-sets="inside-table">
>>     <xsl:apply-templates/>
>>   </fo:table-body>
>> </xsl:template>
>>
>> <xsl:template match="row">
>>   <fo:table-row>
>>     <xsl:apply-templates/>
>>   </fo:table-row>
>> </xsl:template>
>>
>> <xsl:template match="entry">
>>   <fo:table-cell>
>>     <xsl:apply-templates/>
>>   </fo:table-cell>
>> </xsl:template>
>>
>> </xsl:stylesheet>
>>
>> Result Instance: elements and attributes in the fo: namespace
>>
>> <fo:table-and-caption text-align="center" start-indent="100pt">
>>
>>   <fo:table-caption start-indent="0pt" text-align="start">
>>     <fo:block>Caption for this table
>>     </fo:block>
>>   </fo:table-caption>
>>
>>   <fo:table width="325pt" table-layout="fixed">
>>
>>     <fo:table-column column-width="100pt" column-number="1">
>>     </fo:table-column>
>>     <fo:table-column column-width="150pt" column-number="2">
>>     </fo:table-column>
>>     <fo:table-column column-width="75pt" column-number="3">
>>     </fo:table-column>
>>
>>     <fo:table-body start-indent="0pt" text-align="start">
>>
>>     <fo:table-row>
>>
>>     <fo:table-cell>
>>     <fo:block>Cell 1
>>     </fo:block>
>>     </fo:table-cell>
>>     <fo:table-cell>
>>     <fo:block>Cell 2
>>     </fo:block>
>>     </fo:table-cell>
>>     <fo:table-cell>
>>     <fo:block>Cell 3
>>     </fo:block>
>>     </fo:table-cell>
>>
>>     </fo:table-row>
>>
>>     </fo:table-body>
>>
>>   </fo:table>
>>
>> </fo:table-and-caption>
>>
>> Item 4
>>
>> Problem 3: Indents on list-item-label and list-item-body
>> ========================================================
>>
>> As shown in the above, inherited start- and end-indent values are
>> sometimes not useful and should be modified.
>>
>> I request the following modification for solving the problem of
>> inherited
>> indents on list-item-label and list-item-body (label and body overlap
>> when indents are not specified).
>>
>> on list-item-label:
>>   end-indent defaults to label-end()
>> on list-item-body:
>>   start-indent defaults to body-start()
>[snip]
>
>> Disposition: Explanation of why no change will be made
>>
>> The working group felt that also in this case it was better to
>> preserve the simple inheritance model.
>
>OK, the consistency is important.
>
>
>Thanks,
>
>Shinyu Murakami
Received on Monday, 2 July 2001 17:26:59 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:52 GMT