- From: Peter B. West <pbwest@powerup.com.au>
- Date: Fri, 07 Feb 2003 02:11:16 +1000
- To: xsl-editors <xsl-editors@w3.org>
Background: Processing of large FO documents is both cpu and memory intensive. The volume of property information is partly responsible for the memory requirement. In order to minimise this demand, I want to be able to divide the property construction into two phases with different requirements. 1. The construction of individual branches of the FO tree. During this phase, as tree building proceeds down a particular branch towards a leaf node, the ancestor nodes of that leaf are constructed without knowledge of the requirements of descendants. Therefore, no optimisaton is possible of the set of properties which must be maintained at each ancestor node. Whether a particular specified or inherited property is required by an individual ancestor node, a full set of properties must be developed and maintained (at least conceptually) until the inheritance and functional reference requirements of the last descendant have been determined. These sets are constructed as control descends down the tree, making the set available to each child and its descendants. 2. As control retreats back up the tree, having constructed the property sets of each of its descendants, there is no further need for any but the actual properties pertaining to each individual node. This allows for considerable space (and subsequent performance) optimisations, by, e.g., reducing the applicable property set to the minimum required by the FO, and maintaining that set in an array of predetermined length, whose elements can be accessed by a mapping array, whose length and contents are predetermined. This neat and compact arrangement may be disturbed by the presence of markers. Markers do not inherit from their FO tree ancestors, but from their ancestors determined in the Area tree. The properties of retrieved marker subtrees are necessarily resolved in the context of the Area tree; the marker retrieved at a certain point is determined by the status of the Area tree construction. Given this close connection with the Area tree, I wish to have clarified the environment of expression resolution for markers, in particular as it affects inheritance and the from-nearest-specified-value() function. Questions: Is this environment conceptually akin to that which would obtain were the fo:marker subtree transposed to the position in the FO tree occupied by the fo:retrieve-marker during phase 1 of FO tree construction? In this case, all properties specified and inherited are available to "normal" inheritance and to the core functions. Is it akin to that which would obtain were the fo:marker subtree transposed to the same position in the FO tree following phase 2, as described above? In this case, only properties which were relevant to particular FOs would be retained. The point at which a property was specified would be lost if it were not relevant at the point of specification. Is it rather the environment which derives from the traits of the Area tree at the point of attachment? This case is similar to the one above, in that information about properties which had no prior point of application would be lost before the fo:marker subtree properties were resolved. Peter -- Peter B. West pbwest@powerup.com.au http://www.powerup.com.au/~pbwest/ "Lord, to whom shall we go?"
Received on Thursday, 6 February 2003 11:12:52 UTC