- 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
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 UTC