...--I believe, we do (frequently?) have more than one datatype per property, correct?
I remember two cases, but I can only find one at the moment: In Title.setup():
Formally, there are a few more, for example initial-page-number. The code treats them as Java String. This prevents, for example, writing initial-page-number="1+1".
prop = this.propertyList.get(PR_BASELINE_SHIFT);
Some other properties which can have an enum or something numeric as value: alignment-adjust writing-mode (the "auto" enum) content-height and -width ("auto" and "scale-to-fit") height, width and related stuff ("auto", "none") leader-pattern-width ("use-font-metrics") page-heigth ("auto", "indefinite") table border precedences ("force"), 7.26.1 glyph-orientation text-altitude z-index letter-spacing ("normal") word-spacing ("normal") line-height ("normal") Does anybody know what "<space>" means for line-height??? I'm also missing the fformal definition of <name> for markers (7.23.1 ff).
The text-align has a string as the second type beside enum tokens. The text-shadow may be an enum ("none"), or a list of color values with an optional triple of numerical values.
I should have added the latter as well as the text-decoration list to the list of exceptions in the other post a few minutes ago.
Not to mention that nearly all properties may have the value "inherit", which is both defined as a keyword in the grammar and quite often explicitely enumerated in the property description. And the "clip" property (7.20.1) is yet another challenge to parse.