Hello, I reexamined the marker problematic again. There are a few issues not yet mentioned. First some odd wording: "The properties of the fo:retrieve-marker impose a hierarchy of preference on the areas of the area tree..." Unfortunately, they don't define this hierarchy directly but instead define how preferences are derived from this hierarchy. "Every area in the hierarchy is considered preferential to, or "better" than, any area below it in the hierarchy." I suppose the 'hierarchy' mentioned here is the marker preference hierarchy rather than the area tree hierarchy. Further: "When comparing two areas to determine which one is better, the terms "first" and "last" refer to the pre-order traversal order of the area tree." It's hard to see what purpose the marker preference hierarchy serves, as the real definition of the preferences is still done in terms of the area tree hierarchy.
The quote above shows another problem: I'm used to the term "pre-order" in context of binary trees, where it means that first the "first"/"left" subtree is visited, then the node itself, then the "last"/"right" subtree. Unfortunately, the area tree is hardly a binary tree. How should the term be interpreted in this context?
Let's take an example: <fo:block id="A"> <fo:marker marker-class="I" id="m1"/> <fo:block id="B"> <fo:marker marker-class="I" id="m2"/> ... </fo:block> </fo:block> Block B is, according to my interpretation of "pre-order" before block A, therefore retrieving class I with first-starting-within-page would get marker 2. Also, retrieving with either last-starting-within-page or last-ending-within-page should return marker m1.
A "common sense" approach should probably yield first-starting-within-page: m1 last-starting-within-page: m2 last-ending-within-page: m1 The last one is of course debatable, there are arguments (using a "glossary" example) in favor of resulting in m2.
If "hierarchy" in "Every area in the hierarchy is considered preferential to, or "better" than, any area below it in the hierarchy." is interpreted as "area tree hierarchy", always m1 would be retrieved, because the area generated by block A has both isFirst() and isLast() and is always "above" the area from block B. This interpretation is a bit better than the "to the letter" interpretation for first-starting-within-page and last-ending-within-page but doesn't really fit well for last-starting-within-page.
Another interesting example <fo:block id="A"> <fo:marker marker-class="I" id="m1"/> <fo:block id="B" break-after="page"> <fo:marker marker-class="I" id="m2"/> ... </fo:block> </fo:block> I interpret this that the area block A creates two areas, one of the first and one zero size area on the second page. Mind you, this is not at all clear from the spec, I more or less grabbed this out of the blue. The "common sense" result for the first page would mean last-ending-within-page returns m2. On the second page, every retrieve-position retrieves m1, of course.
J.Pietschmann
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]