The actual definition is baseline | sub | super | <percentage> | <length> | inherit not sure that union can do this Space-separated list of classes <shape> | auto | inherit <uri> | none | inherit 'clip-rule' or fill-rule property/attribute value media type, as per [RFC2045] media type, as per [RFC2045] a <co-ordinate> a coordinate, which is a number optionally followed immediately by a unit identifier. Perhaps it is possible to represent this as a union by declaring unit idenifiers as a type? a space separated list of CoordinateType. Punt to 'string' for now a CSS2 Color Color as defined in CSS2 and XSL 1.0 plus additional recognised color keyword names (the 'X11 colors') Value is an optional comma-separated list orf uri references followed by one token from an enumerated list. [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize| text | wait | help ] ] | inherit accumulate | new [ <x> <y> <width> <height> ] | inherit extension list specification feature list specification <uri> | none | inherit [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit 'font-family' property/attribute value (i.e., list of fonts) 'font-size' property/attribute value <absolute-size> | <relative-size> | <length> | <percentage> | inherit 'font-size-adjust' property/attribute value <number> | none | inherit 'glyph-orientation-horizontal' property/attribute value (e.g., <angle>) <angle> | inherit 'glyph-orientation-vertical' property/attribute value (e.g., 'auto', <angle>) auto | <angle> | inherit 'kerning' property/attribute value (e.g., auto | <length>) auto | <length> | inherit a language code, as per [RFC3066] a comma-separated list of language codes, as per [RFC3066] a <length> a list of <length>s link to this target 'marker' property/attribute value (e.g., 'none', %URI;) 'mask' property/attribute value (e.g., 'none', %URI;) <uri> | none | inherit comma-separated list of media descriptors. list of <number>s, but at least one and at most two a <number> or a <percentage> list of <number>s opacity value (e.g., <number>) <alphavalue> | inherit a 'fill' or 'stroke' property/attribute value a path data specification Yes, of course this was generated by a program! a list of points 'preserveAspectRatio' attribute specification script expression 'letter-spacing' or 'word-spacing' property/attribute value (e.g., normal | <length>) 'stroke-dasharray' property/attribute value (e.g., 'none', list of <number>s) 'stroke-dashoffset' property/attribute value (e.g., 'none', >length>) 'stroke-miterlimit' property/attribute value (e.g., <number>) 'stroke-width' property/attribute value (e.g., <length>) style sheet data An SVG color value (sRGB plus optional ICC) 'text-decoration' property/attribute value (e.g., 'none', 'underline') Yes, of course this was generated by a program! list of transforms 'viewBox' attribute specification All elements have an ID Common attributes for elements that might contain character data content Common attributes to check for system capabilities For most uses of URI referencing: standard XLink attributes other than xlink:href Standard XLink attributes for uses of URI referencing where xlink:show is 'embed' The following presentation attributes have to do with specifying color. The following presentation attributes apply to container elements The following presentation attributes apply to 'feFlood' elements The following presentation attributes apply to filter primitives The following presentation attributes apply to filling and stroking operations The following presentation attributes have to do with selecting a font to use The following presentation attributes apply to gradient 'stop' elements The following presentation attributes apply to graphics elements The following presentation attributes apply to 'image' elements The following presentation attributes apply to 'feDiffuseLighting' and 'feSpecularLighting' elements The following presentation attributes apply to marker operations The following presentation attributes apply to text content elements The following presentation attributes apply to 'text' elements The following presentation attributes apply to elements that establish viewports The following represents the complete list of presentation attributes A bit simpler than the DTD, but see commented-out alternative