Proposals/AttributeWhitespace

From SVG

This is for ISSUE-2447.

Based on SVG2 attribute appendix (snapshot @ Feb 27, 2014).

For reference, HTML5 attributes.

In the tables below, lightgreen row background means that leading and trailing whitespace is allowed.

Note: the attributes corresponding to the removed custom shaders in Filter Effects have been omitted.

Float values, type: <number>

Proposal:

  • For consumer UAs (browsers, viewers): strip leading whitespace and ignore trailing garbage, DOM getters must normalize the values to valid values.
  • For producer UAs (validators, editors): leading and trailing whitespace (and garbage) is invalid.

HTML testcase: [1] (drag the slider, first one being the reference. FF, Chrome, Opera(Presto): not allowed. IE: allowed) Note: html has just a few float attributes.

SVG testcase: [2] (FF: not allowed. Chrome: not allowed. IE: allowed, except for garbage. Opera(Presto): allowed.

Attribute On elements Value
accent-height font-face <number>
alphabetic font-face <number>
amplitude feFuncA, feFuncB, feFuncG, feFuncR <number>
aria-valuemax a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view <number>
aria-valuemin a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view <number>
aria-valuenow a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view <number>
ascent font-face <number>
azimuth feDistantLight <number>
baseFrequency feTurbulence <number-optional-number>
bias feConvolveMatrix <number>
cap-height font-face <number>
descent font-face <number>
diffuseConstant feDiffuseLighting <number>
divisor feConvolveMatrix <number>
elevation feDistantLight <number>
exponent feFuncA, feFuncB, feFuncG, feFuncR <number>
filterRes filter <number-optional-number>
hanging font-face <number>
horiz-adv-x font, glyph, missing-glyph <number>
horiz-origin-x font <number>
horiz-origin-y font <number>
ideographic font-face <number>
intercept feFuncA, feFuncB, feFuncG, feFuncR <number>
k hkern, vkern <number>
k1 feComposite <number>
k2 feComposite <number>
k3 feComposite <number>
k4 feComposite <number>
kernelMatrix feConvolveMatrix <list of numbers>
kernelUnitLength feConvolveMatrix, feDiffuseLighting, feSpecularLighting <number-optional-number>
keyPoints animateMotion <list-of-numbers>
keySplines animate, animateMotion, animateTransform <list> (doesn't say of what except in prose, but are 4 control points per spline, so essentially <list-of-number>)
keyTimes animate, animateMotion, animateTransform <list> (essentially <list-of-number> with additional restrictions on the number of items in the list and the number range)
limitingConeAngle feSpotLight <number>
mathematical font-face <number>
offset feFuncA, feFuncB, feFuncG, feFuncR <number>
offset stop <percentage>
order feConvolveMatrix <number-optional-number>
overline-position font-face <number>
overline-thickness font-face <number>
pathLength path <number>
pointsAtX feSpotLight <number>
pointsAtY feSpotLight <number>
pointsAtZ feSpotLight <number>
radius feMorphology <number-optional-number>
repeatCount animate, animateMotion, animateTransform, set <number> | indefinite
rotate altGlyph, text, tspan, tref <list-of-numbers>
rotate animateMotion <number> | auto | auto-reverse
scale feDisplacementMap <number>
seed feTurbulence <number>
slope feFuncA, feFuncB, feFuncG, feFuncR, font-face <number>
specularConstant feSpecularLighting <number>
specularExponent feSpecularLighting, feSpotLight <number>
stdDeviation feDropShadow, feGaussianBlur <number-optional-number>
stemh font-face <number>
stemv font-face <number>
strikethrough-position font-face <number>
strikethrough-thickness font-face <number>
surfaceScale feDiffuseLighting, feSpecularLighting <number>
tabindex a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, source, svg, switch, symbol, text, textPath, track, tref, tspan, use, video, view <number> (ISSUE: should be <integer>, html5: valid integer strips leading and trailing WS)
tableValues feFuncA, feFuncB, feFuncG, feFuncR <list-of-numbers>
underline-position font-face <number>
underline-thickness font-face <number>
units-per-em font-face <number>
v-alphabetic font-face <number>
v-hanging font-face <number>
v-ideographic font-face <number>
v-mathematical font-face <number>
values feColorMatrix <list-of-numbers>
version svg <number>
vert-adv-y font, glyph, missing-glyph <number>
vert-origin-x font, glyph, missing-glyph <number>
vert-origin-y font, glyph, missing-glyph <number>
viewBox marker, pattern, svg, symbol, view a list of four numbers <min-x>, <min-y>, <width> and <height>, separated by whitespace and/or a comma
x fePointLight, feSpotLight, glyphRef <number>
x-height font-face <number>
y fePointLight, feSpotLight, glyphRef <number>
z fePointLight, feSpotLight <number>

Angle values

Proposal: Treat the same as the <length> values.

Attribute On elements Value
rotate hatch <angle>

Integer values, type: <integer>

Proposal:

  • For consumer UAs (browsers, viewers): strip leading whitespace and ignore trailing garbage, DOM getters must normalize the values to valid values.
  • For producer UAs (validators, editors): leading and trailing whitespace (and garbage) is invalid.

HTML testcase: [3] (All: allowed, garbage is ignored)

SVG testcase: [4] (FF: not allowed. IE: allowed, except for garbage => default. Chrome: allowed, except for garbage => no output)

Attribute On elements Value
aria-level a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view integer
aria-posinset a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view integer
aria-setsize a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view integer
numOctaves feTurbulence <integer>
panose-1 font-face [<integer>]{10}
targetX feConvolveMatrix <integer>
targetY feConvolveMatrix <integer>

Length values, type: <length>

Proposal:

  • For consumer UAs (browsers, viewers): strip leading whitespace and ignore trailing garbage, DOM getters must normalize the values to valid values.
  • For producer UAs (validators, editors): leading and trailing whitespace (and garbage) is invalid.

SVG testcase: [5] (FF, Chrome: not allowed. Opera(Presto), IE: allowed, except garbage.)

Attribute On elements Value
canvasHeight canvas <length>
canvasWidth canvas <length>
cx circle, ellipse, radialGradient <length>
cy circle, ellipse, radialGradient <length>
dx feDropShadow, feOffset <length>
dx altGlyph, glyphRef, text, tref, tspan <list-of-lengths>
dy feDropShadow, feOffset <length>
dy altGlyph, glyphRef, text, tref, tspan <list-of-lengths>
fr radialGradient <length>
frameHeight iframe <length>
frameWidth iframe <length>
fx radialGradient <length>
fy radialGradient <length>
height canvas, iframe, image, video auto
height feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence, filter, foreignObject, pattern, rect, text, use <length>
height mask, svg <length> | <percentage> (Presumably related to the issue about percentages in [6])
markerHeight marker <length>
markerWidth marker <length>
offset hatchPath <length>
pitch hatchPath currently undefined (but should probably be either <length> or <number>)
position marker <length> | <percentage>
r circle, radialGradient <length>
refX marker <length>
refY marker <length>
rx ellipse, rect <length>
ry ellipse, rect <length>
startOffset textPath <length>
textLength text, textPath, tref, tspan <length>
width canvas, iframe, image, video auto
width foreignObject, rect, pattern, text, use, filter, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence <length>
width mask, svg <length> | <percentage>
x altGlyph, text, tref, tspan <list-of-coordinates> (ISSUE: not linked to a definition of <coordinate>, seems to be missing in SVG2, in SVG 1.1 it was the same as <length>)
x audio, canvas, cursor, foreignObject, hatch, iframe, image, pattern, rect, svg, use, video <length>
x filter, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence <coordinate>
x mask <length> | <percentage>
x meshGradient ISSUE: currently undefined (but should probably be <length>)
x1 line, linearGradient <length>
x2 line, linearGradient <length>
y altGlyph, text, tref, tspan <list-of-coordinates> (ISSUE: not linked to a definition of <coordinate>, seems to be missing in SVG2, in SVG 1.1 it was the same as <length>)
y audio, canvas, cursor, foreignObject, hatch, iframe, image, pattern, rect, svg, use, video <length>
y filter, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence <coordinate>
y mask <length> | <percentage>
y meshGradient ISSUE: currently undefined (but should probably be <length>)
y1 line, linearGradient <length>
y2 line, linearGradient <length>

Enumerated values

Proposal: Don't allow leading or trailing whitespace.

HTML testcase: [7] (all: not allowed)

SVG testcase: [8] (tweak the clipPathUnits attribute, all: not allowed)

Attribute On elements Value
accumulate animate, animateMotion, animateTransform none | sum
additive animate, animateMotion, animateTransform replace | sum
arabic-form glyph initial | medial | terminal | isolated
aria-atomic a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-autocomplete a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view inline | list | both | none
aria-busy a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-checked a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false | mixed | undefined
aria-disabled a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-dropeffect a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view copy | move | link | execute | popup | none
aria-expanded a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false | undefined
aria-grabbed a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false | undefined
aria-haspopup a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-hidden a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-invalid a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false | grammar | spelling
aria-live a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view off | polite | assertive
aria-multiline a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-multiselectable a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-orientation a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view horizontal | vertical
aria-pressed a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false | mixed | undefined
aria-readonly a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-relevant a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view additions | removals | text | all
aria-required a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false
aria-selected a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view true | false | undefined
aria-sort a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view ascending | descending | none | other
attributeType animate, animateTransform, set CSS | XML | auto
calcMode animate, animateMotion, animateTransform discrete | linear | paced | spline
clipPathUnits clipPath userSpaceOnUse | objectBoundingBox
crossorigin audio, video anonymous | use-credentials (Note, in html5 this is a CORS settings attribute)
edgeMode feConvolveMatrix duplicate | wrap | none
fill animate, animateMotion, animateTransform, set freeze | remove
filterUnits filter userSpaceOnUse | objectBoundingBox
font-stretch font-face all | [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] [, [ normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded] ]*
font-style font-face all | [ normal | italic | oblique] [, [normal | italic | oblique]]*
font-variant font-face [normal | small-caps] [,[normal | small-caps]]*
font-weight font-face all | [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900] [, [normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900]]*
gradientUnits linearGradient, meshGradient, radialGradient userSpaceOnUse | objectBoundingBox
hatchContentUnits hatch userSpaceOnUse | objectBoundingBox
hatchUnits hatch userSpaceOnUse | objectBoundingBox
kind track subtitles | captions | descriptions | chapters | metadata
lengthAdjust text, textPath, tref, tspan spacing | spacingAndGlyphs
markerUnits marker strokeWidth | userSpaceOnUse
maskContentUnits mask userSpaceOnUse | objectBoundingBox
maskUnits mask userSpaceOnUse | objectBoundingBox
method textPath align | stretch
mode feBlend normal | multiply | screen | darken | lighten
operator feComposite over | in | out | atop | xor | arithmetic
operator feMorphology erode | dilate
orientation glyph h | v
origin animateMotion default (the attribute "has no effect in SVG" according to spec, do we need to keep it at all?)
patternContentUnits pattern userSpaceOnUse | objectBoundingBox
patternUnits pattern userSpaceOnUse | objectBoundingBox
playbackOrder svg forwardOnly | all
preload audio, video none | metadata | auto
preserveAlpha feConvolveMatrix true | false
preserveAspectRatio canvas, feImage, iframe, image, marker, pattern, svg, symbol, video, view [defer] <align> [<meetOrSlice>]
primitiveUnits filter userSpaceOnUse | objectBoundingBox
requiredFeatures a, altGlyph, animate, animateMotion, animateTransform, audio, canvas, circle, clipPath, discard, ellipse, foreignObject, g, iframe, image, line, mask, path, polygon, polyline, rect, set, svg, switch, text, textPath, tref, tspan, use, video (should be any element) list-of-features (whitespace separated feature strings)
restart animate, animateMotion, animateTransform, set always | whenNotActive | never
role a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view white-space space separated tokens having values defined in Definition of Roles ([ARIA, section 5.4)]
spacing textPath auto | exact
spreadMethod linearGradient, radialGradient pad | reflect | repeat
stitchTiles feTurbulence stitch | noStitch
timelineBegin svg onLoad | onStart
type animateTransform translate | scale | rotate | skewX | skewY
type feColorMatrix matrix | saturate | hueRotate | luminanceToAlpha
type feFuncA, feFuncB, feFuncG, feFuncR identity | table | discrete | linear | gamma
type feTurbulence fractalNoise | turbulence
xChannelSelector feDisplacementMap R | G | B | A
xlink:actuate a onRequest
xlink:show a, altGlyph, animate, animateMotion, animateTransform, cursor, feImage, filter, font-face-uri, glyphRef, hatch, image, linearGradient, meshGradient, mpath, pattern, radialGradient, script, set, textPath, tref, use new | replace | embed | other | none
xlink:type a, altGlyph, animate, animateMotion, animateTransform, cursor, feImage, filter, font-face-uri, glyphRef, hatch, image, linearGradient, meshGradient, mpath, pattern, radialGradient, script, set, textPath, tref, use simple
xml:space a, altGlyph, altGlyphDef, altGlyphItem, animate, animateMotion, animateTransform, audio, canvas, circle, clipPath, cursor, defs, desc, discard, ellipse, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDistantLight, feDropShadow, feFlood, feFuncA, feFuncB, feFuncG, feFuncR, feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset, fePointLight, feSpecularLighting, feSpotLight, feTile, feTurbulence, filter, font, font-face, font-face-format, font-face-name, font-face-src, font-face-uri, foreignObject, g, glyph, glyphRef, hatch, hatchPath, hkern, iframe, image, line, linearGradient, marker, mask, meshGradient, meshPatch, meshRow, metadata, missing-glyph, mpath, path, pattern, polygon, polyline, radialGradient, rect, script, set, solidColor, source, stop, style, svg, switch, symbol, text, textPath, title, track, tref, tspan, use, video, view, vkern default | preserve
yChannelSelector feDisplacementMap R | G | B | A
zoomAndPan svg, view disable | magnify

Boolean values

Boolean attributes in HTML5 are empty, or have the attribute name as the value. Whitespace is not allowed. Neither are the values "true" and "false".

HTML testcase: [9] (all: not allowed)

Attribute On elements Value
autoplay audio, video
controls audio, video
default track
loop audio, video
muted audio, video
seamless iframe

ID values

Attribute On elements Value
aria-activedescendant a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view ID
aria-controls a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view list of whitespace separated IDs
aria-describedby a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view list of whitespace separated IDs
aria-flowto a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view list of whitespace separated IDs
aria-labelledby a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view list of whitespace separated IDs
aria-owns a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view list of whitespace separated IDs
id all elements name (Issue in spec to define the term 'name' [10])

Text values

HTML/SVG testcase: [11] (all: allowed)

Attribute On elements Value
aria-label a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view string
aria-valuetext a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view string
attributeName animate, animateTransform, set <XMLName>
baseProfile svg <anything>
bbox font-face <string>
by animate, animateMotion, animateTransform <value> (defined in SMIL, strips leading and trailing whitespace, value should be parsed in the context it's used in)
class a, altGlyph, audio, canvas, circle, clipPath, defs, desc, ellipse, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence, filter, font, foreignObject, g, glyph, glyphRef, hatch, hatchPath, iframe, image, line, linearGradient, marker, mask, meshGradient, meshPatch, meshRow, missing-glyph, path, pattern, polygon, polyline, radialGradient, rect, solidColor, source, stop, svg, switch, symbol, text, textPath, title, track, tref, tspan, use, video whitespace separated list - HTML5 allows leading and trailing whitespace [12].
font-family font-face <string>
font-size font-face <string>
format altGlyph, glyphRef <string>
from animate, animateMotion, animateTransform <value> (defined in SMIL, strips leading and trailing whitespace, value should be parsed in the context it's used in)
g1 hkern, vkern <author-ident> [, <author-ident> ]* (Note, <author-ident> is undefined, and doesn't link to anywhere in the spec)
g2 hkern, vkern <author-ident> [, <author-ident> ]* (Note, <author-ident> is undefined, and doesn't link to anywhere in the spec)
glyph-name hkern, vkern <author-ident> [, <author-ident> ]* (Note, <author-ident> is undefined, and doesn't link to anywhere in the spec)
glyphRef altGlyph, glyphRef <string>
in feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feGaussianBlur, feMorphology, feOffset, feSpecularLighting, feTile SourceGraphic | SourceAlpha | BackgroundImage | BackgroundAlpha | FillPaint | StrokePaint | <filter-primitive-reference> (mix of enumerated and string)
in2 feBlend, feComposite, feDisplacementMap SourceGraphic | SourceAlpha | BackgroundImage | BackgroundAlpha | FillPaint | StrokePaint | <filter-primitive-reference> (mix of enumerated and string)
label track Text (cannot be the empty string)
mediagroup audio, video Text
name font-face-name <anything>
result eBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence <filter-primitive-reference> (unclear if leading & trailing whitespace is stripped or not)
sandbox iframe Unordered set of unique space-separated tokens, ASCII case-insensitive, consisting of "allow-forms", "allow-pointer-lock", "allow-popups", "allow-same-origin", "allow-scripts and "allow-top-navigation"
string font-face-name <anything>
target a _replace | _self | _parent | _top | _blank | <XML-Name>
title audio, iframe, track, video <anything> (in html5: Text)
title style advisory-title (in html5: Text)
to animate, animateMotion, animateTransform <value> (defined in SMIL, strips leading and trailing whitespace, value should be parsed in the context it's used in)
to set <value> (svg doesn't state that leading and trailing whitespace is ignored)
type script, style content-type (in HTML5: valid MIME type)
type source valid MIME type
u1 hkern, vkern [<character> | <urange> ] [, [<character> | <urange>] ]*
u2 hkern, vkern [<character> | <urange> ] [, [<character> | <urange>] ]*
unicode glyph <string>
unicode-range font-face <urange> [, <urange>]*
values animate, animateMotion, animateTransform <list> (defined in SMIL, strips leading and trailing whitespace, value should be parsed in the context it's used in)
viewTarget view <XML-Name>
widths font-face <string>
xlink:title a, altGlyph, animate, animateMotion, animateTransform, cursor, feImage, filter, font-face-uri, glyphRef, hatch, image, linearGradient, meshGradient, mpath, pattern, radialGradient, script, set, textPath, tref, use <anything>
xlink:title source <anything>

Event handler content attribute values

The event attributes should be defined to be event handler content attributes to match html.

Attribute On elements Value
onabort svg <anything>
onbegin animate, animateMotion, animateTransform, set <anything>
onclick a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onend animate, animateMotion, animateTransform, set <anything>
onerror svg (should be any element, or alternatively the 'structurally external' elements) <anything>
onfocusin , altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onfocusout , altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onload animate, animateMotion, animateTransform, set, a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element, or alternatively the 'structurally external' elements) <anything>
onmousedown a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onmousemove a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onmouseout a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onmouseover a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onmouseup a, altGlyph, audio, canvas, circle, defs, ellipse, foreignObject, g, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video (should be any element) <anything>
onrepeat animate, animateMotion, animateTransform, set <anything>
onresize svg <anything>
onscroll svg <anything>
onunload svg <anything>
onzoom svg <anything>

Lang values

Attribute On elements Value
lang desc, glyph, title %LanguageCodes; (a comma-separated list of language codes, in html it's a single language code or empty)
srclang track Valid BCP 47 language tag
systemLanguage a, altGlyph, animate, animateMotion, animateTransform, audio, canvas, circle, clipPath, discard, ellipse, foreignObject, g, iframe, image, line, mask, path, polygon, polyline, rect, set, svg, switch, text, textPath, tref, tspan, use, video a comma-separated list of language names as defined in BCP 47
xml:lang a, altGlyph, altGlyphDef, altGlyphItem, animate, animateMotion, animateTransform, audio, canvas, circle, clipPath, cursor, defs, desc, discard, ellipse, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDistantLight, feDropShadow, feFlood, feFuncA, feFuncB, feFuncG, feFuncR, feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset, fePointLight, feSpecularLighting, feSpotLight, feTile, feTurbulence, filter, font, font-face, font-face-format, font-face-name, font-face-src, font-face-uri, foreignObject, g, glyph, glyphRef, hatch, hatchPath, hkern, iframe, image, line, linearGradient, marker, mask, meshGradient, meshPatch, meshRow, metadata, missing-glyph, mpath, path, pattern, polygon, polyline, radialGradient, rect, script, set, solidColor, source, stop, style, svg, switch, symbol, text, textPath, title, track, tref, tspan, use, video, view, vkern languageID (undefined what it means)

Valid browsing context values

Attribute On elements Value
name iframe A valid browsing context name or keyword

Media query values

Attribute On elements Value
media source A valid media query (in other words: leading and trailing WS allowed)
media style media (ISSUE: should be the same as for the source element, and the style element in html5)

URL values

Proposal: Reference the html5 definition "Valid non-empty URL potentially surrounded by spaces" and use that instead of <iri>, same for validators and viewers, but perhaps with a recommendation to not add leading and trailing whitespace.

SVG testcase: [13] (all: allowed, stripped away. IE: also allows unprefixed href)

Attribute On elements Value
aria-describedat a, altGlyph, altGlyphItem, audio, canvas, circle, cursor, discard, ellipse, foreignObject, g, hkern, iframe, image, line, path, polygon, polyline, rect, svg, switch, symbol, text, textPath, tref, tspan, use, video, view URI
poster video Valid non-empty URL potentially surrounded by spaces
requiredExtensions a, altGlyph, animate, animateMotion, animateTransform, audio, canvas, circle, clipPath, discard, ellipse, foreignObject, g, iframe, image, line, mask, path, polygon, polyline, rect, set, svg, switch, text, textPath, tref, tspan, use, video (should be any element) list-of-extensions (whitespace separated IRIs)
src audio, video, iframe, source, track Valid non-empty URL potentially surrounded by spaces
xlink:href a, altGlyph, animate, animateMotion, animateTransform, cursor, feImage, filter, font-face-uri, glyphRef, hatch, image, linearGradient, mpath, pattern, radialGradient, script, set, textPath, tref, use <iri> (doesn't allow leading or trailing whitespace)
xlink:href meshGradient ISSUE: currently undefined
xlink:role a, altGlyph, animate, animateMotion, animateTransform, cursor, feImage, filter, font-face-uri, glyphRef, hatch, image, linearGradient, meshGradient, mpath, pattern, radialGradient, script, set, textPath, tref, use <iri>
xml:base a, altGlyph, altGlyphDef, altGlyphItem, animate, animateMotion, animateTransform, audio, canvas, circle, clipPath, cursor, defs, desc, discard, ellipse, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDistantLight, feDropShadow, feFlood, feFuncA, feFuncB, feFuncG, feFuncR, feGaussianBlur, feImage, feMerge, feMergeNode, feMorphology, feOffset, fePointLight, feSpecularLighting, feSpotLight, feTile, feTurbulence, filter, font, font-face, font-face-format, font-face-name, font-face-src, font-face-uri, foreignObject, g, glyph, glyphRef, hatch, hatchPath, hkern, iframe, image, line, linearGradient, marker, mask, meshGradient, meshPatch, meshRow, metadata, missing-glyph, mpath, path, pattern, polygon, polyline, radialGradient, rect, script, set, solidColor, source, stop, style, svg, switch, symbol, text, textPath, title, track, tref, tspan, use, video, view, vkern <iri>

The source of an iframe srcdoc document

Attribute On elements Value
srcdoc iframe The source of an iframe srcdoc document* (allows whitespace in html, in xml it depends on the xml spec)

Path data values

Attribute On elements Value
d glyph, missing-glyph, hatchPath, path, textPath <path-data> (grammar allows leading and trailing whitespace)
path animateMotion <path-data>
path stop "mesh path data" (undefined term, but if the normal path data allows whitespace this probably should too)

Points values

Attribute On elements Value
points polyline, polygon <list-of-points> (allows leading and trailing whitespace)

Style values

Attribute On elements Value
style a, altGlyph, audio, canvas, circle, clipPath, defs, desc, ellipse, feBlend, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feCustom, feDiffuseLighting, feDisplacementMap, feDropShadow, feFlood, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence, filter, font, foreignObject, g, glyph, glyphRef, hatch, hatchPath, iframe, image, line, linearGradient, marker, mask, meshGradient, meshPatch, meshRow, missing-glyph, path, pattern, polygon, polyline, radialGradient, rect, solidColor, source, stop, svg, switch, symbol, text, textPath, title, track, tref, tspan, use, video (should be any element) style (should reference CSS Style Attributes instead for the syntax definition, in any case CSS allows whitespace)

Transform list values

SVG testcase: [14] (Opera(Presto): allowed, garbage ignored. IE, FF, Chrome: allowed, except for garbage.

Attribute On elements Value
gradientTransform linearGradient, meshGradient, radialGradient <transform-list> (which is equivalent to "list of <transform-function>". Should this reference http://www.w3.org/TR/css3-transforms/#svg-syntax? It's not clear if leading and trailing whitespace is allowed.)
hatchTransform hatch <transform-list>
patternTransform pattern <transform-list>

"It's complicated" values

Attribute On elements Value
begin animate, animateMotion, animateTransform, set, discard <begin-value-list> (allows whitespace in some but not all cases)
dur animate, animateMotion, animateTransform, set <Clock-value> | media | indefinite (allows whitespace for the clockvalue)
end animate, animateMotion, animateTransform, set <end-value-list> (allows whitespace in some but not all cases)
max animate, animateMotion, animateTransform, set <Clock-value> | media (allows whitespace for the clockvalue)
min animate, animateMotion, animateTransform, set <Clock-value> | media (allows whitespace for the clockvalue)
orient marker auto | auto-start-reverse | <angle> | <number>
repeatDur animate, animateMotion, animateTransform, set <Clock-value> | indefinite (allows whitespace for the clockvalue)