- From: MURAKAMI Shinyu <murakami@nadita.com>
- Date: Sun, 24 Jun 2001 22:12:52 -0400 (EDT)
- To: xsl-editors@w3.org
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