why are the elements of an enumarated attribute type specified to be
name tokens rather than attribute values? to wit:
[52] AttlistDecl ::=3D '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef :=3D S Name S AttType S Default
[54] AttType ::=3D StringType | TokenizedType | EnumeratedType
[57] EnumeratedType ::=3D NotationType | Enumeration
[58] NotationType ::=3D 'NOTATION' S '(' S? Name (S? '|' Name)* S? ')'
[59] Enumeration ::=3D '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
[60] Default ::=3D '#REQUIRED' |=A0'#IMPLIED' | (('#FIXED' S)? AttValue)
? isn't their domain actually attribute values, as in the example:
<!ATTLIST list
type (bullets|ordered|glossary) "ordered">
? since name characters constitute a smaller domain than attribute value
characters don't you end up with attribute values which can't be
included in the enumeration constraint?
? even without the distinction in character range, isn't this conflating
two domains - that of interned tokens and that of string values - which
are better of kept distinct. either the constraints look like tokens,
but must be parsed as if they were strings, or the constraint evaluation
must permit tokens to be compared to strings.
? wouldn't
<!ATTLIST list
type ("bullets"|"ordered"|"glossary") "ordered">
be both clearer and easier to implement ?
thanks, bye,