- From: Peter B. West <pbwest@powerup.com.au>
- Date: Fri, 21 Sep 2001 03:35:18 -0400 (EDT)
- To: xsl-editors <xsl-editors@w3.org>
- CC: fop-dev <fop-dev@xml.apache.org>
Sirs, I find the definition of compound datatypes very confusing. Fom an implementation point of view, I find myself treating the compound types not as datatypes but as another form of shorthand, whose major difference from the existing shorthand properties is in the handling of inheritance. "Shorthand properties do not inherit from the shorthand on the parent. Instead the individual properties that the shorthand expands into may inherit." 5.2 On the other hand, 5.11 has: "Compound values of properties are inherited as a unit and not as individual components." In other respects, compounds parallel shorthands. "The compound datatypes, such as space, are represented in the result tree as multiple attributes." In other words, the compounds expand into individual properties, like the shorthands. It seems to me that when talking about a datatype, one expects to be specifying the kind of data that may be assigned to particular attributes/properties. Compounds are not datatypes in that sense. They partially specify the name of the attribute, and specify the type of data which may be assigned to those attributes. In my limited experience, I have never encountered such a datatype before, and I was very confused by them. <length-conditional> I have a few specific questions about this compound. It occurs in association with the relative edge width specifications for border and padding, and in a few other places. When the compounds are discussed, the examples of <space> and <keep> are used. In those cases, a single assignment to the compound implies a series of assignments to each of the component properties. So space-before="4.0pt" is equivalent to a specification of space-before.minimum="4.0pt" space-before.optimum="4.0pt" space-before.maximum="4.0pt" space-before.precedence="0" space-before.conditionality="discard" Similarly with <keep>. What about border-before-width? The legal values for border-before-width are specified as <border-width>|<length-conditional>|inherit <border-width> is defined in 7.7.21 "border-top-width" to have the possible values "thin", "medium", "thick" or <length>. <length-conditional>, as is explained in 7.7.9 "border-before-width", has .length and .conditionality components, with an initial value for .conditionality of "discard". However, according to Appendix C, the initial value for border-before-width is "medium". There is no mention of .conditionality. Given these definitions, what am I to make of an assignment like border-before-width="10pt"? Is this a <border-width> or a <length-conditional>? To what do I assign the "10pt"? border-before-width or border-before-width.length or both? Does any such assignment to border-before-width imply an assignment to border-before-width.length and border-before-width.conditionality as well? This question is more involved because of corresponding properties. In an lr-tb environment, border-top-width is a corresponding property. But <length-conditional> is not defined for border-top-width. Does the fact that computed values percolate to corresponding properties imply that border-top-width="10pt" will have the effect of setting computed values of border-top-width="10pt" border-before-width="10pt" border-before-width.length="10pt" border-before-width.conditionality="discard" ? Similar questions may well arise in respect of other compound "datatypes". Yours faithfully, Peter West -- Peter B. West pbwest@powerup.com.au http://powerup.com.au/~pbwest "Lord, to whom shall we go?"
Received on Friday, 21 September 2001 09:54:34 UTC