Re: Your comments on the XSL Candidate Recommendation

I received from XSL WG the disposition of comments about:
 - initial value of border/padding conditionality
 - start-indent and end-indent

> Disposition of Comments on XSL Candidate Recommendation
>
> Comment 11 (public comment): 
> lists.w3.org/Archives/Public/xsl-editors/2000OctDec/0177.html
> 
> To: xsl-editors@w3.org
> From: MURAKAMI Shinyu <murakami@nadita.com>
> Message-Id: <200011270857.GGF08768.VBLNJSNB@nadita.com>
> Date: Mon, 27 Nov 2000 08:57:18 +0900
> Subject: XSL-FO - Initial value of border/padding conditionality
[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): 
> lists.w3.org/Archives/Public/xsl-editors/2001JanMar/0029.html
> 
> To: xsl-editors@w3.org
> Cc: xsl-list@lists.mulberrytech.com
> From: MURAKAMI Shinyu <murakami@nadita.com>
> Message-Id: <200101100311.EDC35279.BSLVJNNB@nadita.com>
> Date: Wed, 10 Jan 2001 03:11:39 +0900
> Subject: XSL-FO - start-indent and end-indent
> 
> 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?)

> 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="http://www.w3.org/1999/XSL/Transform"
>                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
>                 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, 25 June 2001 04:39:52 UTC