Why must data.enumerated attributes have values that are legal XML names?

I can see why the name of something should follow naming rules, but why 

"2D" and "3D" couldn't be used as @type values in, say, <measure>.

For @type of abbreviation or bibliographic id, you can use "NASA" or 
"IBM" but not "3M".

The spec for lbl/@type in the dictionaries module says the value can be 
"any string of characters, such as usage, sense_restriction, etc.," but 
the datatype is data.enumerated, so "3rdWebster" or "1911Britannica" 
can't be used.

Seems weird.

-- JPM