@samitouri / QOS-React / commits / 35859df941

Add missing single-word attributes to property warning list (#10495)

* Add missing single-word attributes to property warning list * Alphabetize svg and html configs in possible names * Add basic test coverage for known single word attributes * Add note about including whitelist properites in `possibleStandardNames * Also add attribute sync comment to possibleStandardNames

Nathan Hunzaker committed Aug 21, 2017 at 12:27 UTC 35859df9418e3161130d267a27602fc263979a1f
4 files changed +297 -90
src/renderers/dom/shared/HTMLDOMPropertyConfig.js
+3
@@ -22,6 +22,9 @@ var HAS_OVERLOADED_BOOLEAN_VALUE =
22 DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
23
24 var HTMLDOMPropertyConfig = {
25 + // When adding attributes to this list, be sure to also add them to
26 + // the `possibleStandardNames` module to ensure casing and incorrect
27 + // name warnings.
28 Properties: {
29 allowFullScreen: HAS_BOOLEAN_VALUE,
30 // specifies target context for links with `preload` type
src/renderers/dom/shared/SVGDOMPropertyConfig.js
+6 -2
@@ -17,8 +17,12 @@ var NS = {
17 };
18
19 /**
20 - * This is a list of all SVG attributes that need special
21 - * casing, namespacing, or boolean value assignment.
20 + * This is a list of all SVG attributes that need special casing,
21 + * namespacing, or boolean value assignment.
22 + *
23 + * When adding attributes to this list, be sure to also add them to
24 + * the `possibleStandardNames` module to ensure casing and incorrect
25 + * name warnings.
26 *
27 * SVG Attributes List:
28 * https://www.w3.org/TR/SVG/attindex.html
src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js
+12
@@ -2080,6 +2080,18 @@ describe('ReactDOMComponent', () => {
2080 'Warning: Invalid prop `whatever` on <div> tag.',
2081 );
2082 });
2083 +
2084 + it('warns on bad casing of known HTML attributes', function() {
2085 + spyOn(console, 'error');
2086 +
2087 + var el = ReactTestUtils.renderIntoDocument(<div SiZe="30" />);
2088 +
2089 + expect(el.getAttribute('size')).toBe('30');
2090 +
2091 + expectDev(console.error.calls.argsFor(0)[0]).toContain(
2092 + 'Warning: Invalid DOM property `SiZe`. Did you mean `size`?',
2093 + );
2094 + });
2095 });
2096
2097 describe('Object stringification', function() {
src/renderers/dom/shared/hooks/possibleStandardNames.js
+276 -88
@@ -9,49 +9,82 @@
9 * @providesModule possibleStandardNames
10 */
11
12 +// When adding attributes to the HTML or SVG whitelist, be sure to
13 +// also add them to this module to ensure casing and incorrect name
14 +// warnings.
15 var possibleStandardNames = {
16 // HTML
17 + accept: 'accept',
18 acceptcharset: 'acceptCharset',
19 'accept-charset': 'acceptCharset',
20 accesskey: 'accessKey',
21 + action: 'action',
22 allowfullscreen: 'allowFullScreen',
23 allowtransparency: 'allowTransparency',
24 + alt: 'alt',
25 + as: 'as',
26 + async: 'async',
27 autocapitalize: 'autoCapitalize',
28 autocomplete: 'autoComplete',
29 autocorrect: 'autoCorrect',
30 autofocus: 'autoFocus',
31 autoplay: 'autoPlay',
32 autosave: 'autoSave',
33 + capture: 'capture',
34 cellpadding: 'cellPadding',
35 cellspacing: 'cellSpacing',
36 + challenge: 'challenge',
37 charset: 'charSet',
38 + checked: 'checked',
39 + children: 'children',
40 + cite: 'cite',
41 class: 'className',
42 classid: 'classID',
43 classname: 'className',
31 - children: 'children',
44 + cols: 'cols',
45 colspan: 'colSpan',
46 + content: 'content',
47 contenteditable: 'contentEditable',
48 contextmenu: 'contextMenu',
49 + controls: 'controls',
50 controlslist: 'controlsList',
51 + coords: 'coords',
52 crossorigin: 'crossOrigin',
53 dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',
54 + data: 'data',
55 datetime: 'dateTime',
39 - defaultvalue: 'defaultValue',
56 + default: 'default',
57 defaultchecked: 'defaultChecked',
58 + defaultvalue: 'defaultValue',
59 + defer: 'defer',
60 + dir: 'dir',
61 + disabled: 'disabled',
62 + download: 'download',
63 + draggable: 'draggable',
64 enctype: 'encType',
65 for: 'htmlFor',
66 + form: 'form',
67 formMethod: 'formMethod',
68 formaction: 'formAction',
69 formenctype: 'formEncType',
70 formnovalidate: 'formNoValidate',
71 formtarget: 'formTarget',
72 frameborder: 'frameBorder',
73 + headers: 'headers',
74 + height: 'height',
75 + hidden: 'hidden',
76 + high: 'high',
77 + href: 'href',
78 hreflang: 'hrefLang',
79 htmlfor: 'htmlFor',
80 httpequiv: 'httpEquiv',
81 'http-equiv': 'httpEquiv',
82 + icon: 'icon',
83 + id: 'id',
84 innerhtml: 'innerHTML',
85 inputmode: 'inputMode',
86 + integrity: 'integrity',
87 + is: 'is',
88 itemid: 'itemID',
89 itemprop: 'itemProp',
90 itemref: 'itemRef',
@@ -59,253 +92,408 @@ var possibleStandardNames = {
92 itemtype: 'itemType',
93 keyparams: 'keyParams',
94 keytype: 'keyType',
95 + kind: 'kind',
96 + label: 'label',
97 + lang: 'lang',
98 + list: 'list',
99 + loop: 'loop',
100 + low: 'low',
101 + manifest: 'manifest',
102 marginWidth: 'marginWidth',
103 marginheight: 'marginHeight',
104 + max: 'max',
105 maxlength: 'maxLength',
106 + media: 'media',
107 mediagroup: 'mediaGroup',
108 + method: 'method',
109 + min: 'min',
110 minLength: 'minlength',
111 + multiple: 'multiple',
112 + muted: 'muted',
113 + name: 'name',
114 + nonce: 'nonce',
115 novalidate: 'noValidate',
116 + open: 'open',
117 + optimum: 'optimum',
118 + pattern: 'pattern',
119 + placeholder: 'placeholder',
120 playsinline: 'playsInline',
121 + poster: 'poster',
122 + preload: 'preload',
123 + profile: 'profile',
124 radiogroup: 'radioGroup',
125 readonly: 'readOnly',
126 referrerpolicy: 'referrerPolicy',
127 + rel: 'rel',
128 + required: 'required',
129 + reversed: 'reversed',
130 + role: 'role',
131 + rows: 'rows',
132 rowspan: 'rowSpan',
133 + sandbox: 'sandbox',
134 + scope: 'scope',
135 + scoped: 'scoped',
136 + scrolling: 'scrolling',
137 + seamless: 'seamless',
138 + selected: 'selected',
139 + shape: 'shape',
140 + size: 'size',
141 + sizes: 'sizes',
142 + span: 'span',
143 spellcheck: 'spellCheck',
144 + src: 'src',
145 srcdoc: 'srcDoc',
146 srclang: 'srcLang',
147 srcset: 'srcSet',
148 + start: 'start',
149 + step: 'step',
150 + style: 'style',
151 + summary: 'summary',
152 tabindex: 'tabIndex',
153 + target: 'target',
154 + title: 'title',
155 + type: 'type',
156 usemap: 'useMap',
157 + value: 'value',
158 + width: 'width',
159 + wmode: 'wmode',
160 + wrap: 'wrap',
161
162 // SVG
163 + about: 'about',
164 accentheight: 'accentHeight',
165 'accent-height': 'accentHeight',
166 + accumulate: 'accumulate',
167 + additive: 'additive',
168 alignmentbaseline: 'alignmentBaseline',
169 'alignment-baseline': 'alignmentBaseline',
170 allowreorder: 'allowReorder',
86 - 'arabic-form': 'arabicForm',
171 + alphabetic: 'alphabetic',
172 + amplitude: 'amplitude',
173 arabicform: 'arabicForm',
174 + 'arabic-form': 'arabicForm',
175 + ascent: 'ascent',
176 attributename: 'attributeName',
177 attributetype: 'attributeType',
178 autoreverse: 'autoReverse',
179 + azimuth: 'azimuth',
180 basefrequency: 'baseFrequency',
92 - baseprofile: 'baseProfile',
93 - 'baseline-shift': 'baselineShift',
181 baselineshift: 'baselineShift',
182 + 'baseline-shift': 'baselineShift',
183 + baseprofile: 'baseProfile',
184 + bbox: 'bbox',
185 + begin: 'begin',
186 + bias: 'bias',
187 + by: 'by',
188 calcmode: 'calcMode',
96 - 'cap-height': 'capHeight',
189 capheight: 'capHeight',
98 - 'clip-path': 'clipPath',
190 + 'cap-height': 'capHeight',
191 + clip: 'clip',
192 clippath: 'clipPath',
100 - 'clip-rule': 'clipRule',
101 - cliprule: 'clipRule',
193 + 'clip-path': 'clipPath',
194 clippathunits: 'clipPathUnits',
103 - 'color-interpolation': 'colorInterpolation',
195 + cliprule: 'clipRule',
196 + 'clip-rule': 'clipRule',
197 + color: 'color',
198 colorinterpolation: 'colorInterpolation',
105 - 'color-interpolation-filters': 'colorInterpolationFilters',
199 + 'color-interpolation': 'colorInterpolation',
200 colorinterpolationfilters: 'colorInterpolationFilters',
107 - 'color-profile': 'colorProfile',
201 + 'color-interpolation-filters': 'colorInterpolationFilters',
202 colorprofile: 'colorProfile',
109 - 'color-rendering': 'colorRendering',
203 + 'color-profile': 'colorProfile',
204 colorrendering: 'colorRendering',
205 + 'color-rendering': 'colorRendering',
206 contentscripttype: 'contentScriptType',
207 contentstyletype: 'contentStyleType',
208 + cursor: 'cursor',
209 + cx: 'cx',
210 + cy: 'cy',
211 + d: 'd',
212 + datatype: 'datatype',
213 + decelerate: 'decelerate',
214 + descent: 'descent',
215 diffuseconstant: 'diffuseConstant',
114 - 'dominant-baseline': 'dominantBaseline',
216 + direction: 'direction',
217 + display: 'display',
218 + divisor: 'divisor',
219 dominantbaseline: 'dominantBaseline',
220 + 'dominant-baseline': 'dominantBaseline',
221 + dur: 'dur',
222 + dx: 'dx',
223 + dy: 'dy',
224 edgemode: 'edgeMode',
117 - 'enable-background': 'enableBackground',
225 + elevation: 'elevation',
226 enablebackground: 'enableBackground',
227 + 'enable-background': 'enableBackground',
228 + end: 'end',
229 + exponent: 'exponent',
230 externalresourcesrequired: 'externalResourcesRequired',
120 - 'fill-opacity': 'fillOpacity',
231 + fill: 'fill',
232 fillopacity: 'fillOpacity',
122 - 'fill-rule': 'fillRule',
233 + 'fill-opacity': 'fillOpacity',
234 fillrule: 'fillRule',
235 + 'fill-rule': 'fillRule',
236 + filter: 'filter',
237 filterres: 'filterRes',
238 filterunits: 'filterUnits',
239 + floodOpacity: 'floodOpacity',
240 + 'flood-opacity': 'floodOpacity',
241 floodcolor: 'floodColor',
242 'flood-color': 'floodColor',
128 - 'flood-opacity': 'floodOpacity',
129 - floodOpacity: 'floodOpacity',
130 - 'font-family': 'fontFamily',
243 + focusable: 'focusable',
244 fontfamily: 'fontFamily',
132 - 'font-size': 'fontSize',
245 + 'font-family': 'fontFamily',
246 fontsize: 'fontSize',
134 - 'font-size-adjust': 'fontSizeAdjust',
247 + 'font-size': 'fontSize',
248 fontsizeadjust: 'fontSizeAdjust',
136 - 'font-stretch': 'fontStretch',
249 + 'font-size-adjust': 'fontSizeAdjust',
250 fontstretch: 'fontStretch',
138 - 'font-style': 'fontStyle',
251 + 'font-stretch': 'fontStretch',
252 fontstyle: 'fontStyle',
140 - 'font-variant': 'fontVariant',
253 + 'font-style': 'fontStyle',
254 fontvariant: 'fontVariant',
142 - 'font-weight': 'fontWeight',
255 + 'font-variant': 'fontVariant',
256 fontweight: 'fontWeight',
144 - 'glyph-name': 'glyphName',
257 + 'font-weight': 'fontWeight',
258 + format: 'format',
259 + from: 'from',
260 + fx: 'fx',
261 + fy: 'fy',
262 + g1: 'g1',
263 + g2: 'g2',
264 glyphname: 'glyphName',
146 - 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
265 + 'glyph-name': 'glyphName',
266 glyphorientationhorizontal: 'glyphOrientationHorizontal',
148 - 'glyph-orientation-vertical': 'glyphOrientationVertical',
267 + 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
268 glyphorientationvertical: 'glyphOrientationVertical',
269 + 'glyph-orientation-vertical': 'glyphOrientationVertical',
270 glyphref: 'glyphRef',
271 gradienttransform: 'gradientTransform',
272 gradientunits: 'gradientUnits',
153 - 'horiz-adv-x': 'horizAdvX',
273 + hanging: 'hanging',
274 horizadvx: 'horizAdvX',
155 - 'horiz-origin-x': 'horizOriginX',
275 + 'horiz-adv-x': 'horizAdvX',
276 horizoriginx: 'horizOriginX',
157 - 'image-rendering': 'imageRendering',
277 + 'horiz-origin-x': 'horizOriginX',
278 + ideographic: 'ideographic',
279 imagerendering: 'imageRendering',
280 + 'image-rendering': 'imageRendering',
281 + in2: 'in2',
282 + in: 'in',
283 + inlist: 'inlist',
284 + intercept: 'intercept',
285 + k1: 'k1',
286 + k2: 'k2',
287 + k3: 'k3',
288 + k4: 'k4',
289 + k: 'k',
290 kernelmatrix: 'kernelMatrix',
291 kernelunitlength: 'kernelUnitLength',
292 + kerning: 'kerning',
293 keypoints: 'keyPoints',
294 keysplines: 'keySplines',
295 keytimes: 'keyTimes',
296 lengthadjust: 'lengthAdjust',
165 - 'letter-spacing': 'letterSpacing',
297 letterspacing: 'letterSpacing',
167 - 'lighting-color': 'lightingColor',
298 + 'letter-spacing': 'letterSpacing',
299 lightingcolor: 'lightingColor',
300 + 'lighting-color': 'lightingColor',
301 limitingconeangle: 'limitingConeAngle',
170 - 'marker-end': 'markerEnd',
302 + local: 'local',
303 markerend: 'markerEnd',
172 - 'marker-mid': 'markerMid',
304 + 'marker-end': 'markerEnd',
305 + markerheight: 'markerHeight',
306 markermid: 'markerMid',
174 - 'marker-start': 'markerStart',
307 + 'marker-mid': 'markerMid',
308 markerstart: 'markerStart',
176 - markerheight: 'markerHeight',
309 + 'marker-start': 'markerStart',
310 markerunits: 'markerUnits',
311 markerwidth: 'markerWidth',
312 + mask: 'mask',
313 maskcontentunits: 'maskContentUnits',
314 maskunits: 'maskUnits',
315 + mathematical: 'mathematical',
316 + mode: 'mode',
317 numoctaves: 'numOctaves',
182 - 'overline-position': 'overlinePosition',
318 + offset: 'offset',
319 + opacity: 'opacity',
320 + operator: 'operator',
321 + order: 'order',
322 + orient: 'orient',
323 + orientation: 'orientation',
324 + origin: 'origin',
325 + overflow: 'overflow',
326 overlineposition: 'overlinePosition',
184 - 'overline-thickness': 'overlineThickness',
327 + 'overline-position': 'overlinePosition',
328 overlinethickness: 'overlineThickness',
186 - 'paint-order': 'paintOrder',
329 + 'overline-thickness': 'overlineThickness',
330 paintorder: 'paintOrder',
331 + 'paint-order': 'paintOrder',
332 + panose1: 'panose1',
333 'panose-1': 'panose1',
334 pathlength: 'pathLength',
335 patterncontentunits: 'patternContentUnits',
336 patterntransform: 'patternTransform',
337 patternunits: 'patternUnits',
193 - 'pointer-events': 'pointerEvents',
338 pointerevents: 'pointerEvents',
339 + 'pointer-events': 'pointerEvents',
340 + points: 'points',
341 pointsatx: 'pointsAtX',
342 pointsaty: 'pointsAtY',
343 pointsatz: 'pointsAtZ',
344 + prefix: 'prefix',
345 preservealpha: 'preserveAlpha',
346 preserveaspectratio: 'preserveAspectRatio',
347 primitiveunits: 'primitiveUnits',
348 + property: 'property',
349 + r: 'r',
350 + radius: 'radius',
351 refx: 'refX',
352 refy: 'refY',
203 - 'rendering-intent': 'renderingIntent',
353 renderingintent: 'renderingIntent',
354 + 'rendering-intent': 'renderingIntent',
355 repeatcount: 'repeatCount',
356 repeatdur: 'repeatDur',
357 requiredextensions: 'requiredExtensions',
358 requiredfeatures: 'requiredFeatures',
209 - 'shape-rendering': 'shapeRendering',
359 + resource: 'resource',
360 + restart: 'restart',
361 + result: 'result',
362 + results: 'results',
363 + rotate: 'rotate',
364 + rx: 'rx',
365 + ry: 'ry',
366 + scale: 'scale',
367 + security: 'security',
368 + seed: 'seed',
369 shaperendering: 'shapeRendering',
370 + 'shape-rendering': 'shapeRendering',
371 + slope: 'slope',
372 + spacing: 'spacing',
373 specularconstant: 'specularConstant',
374 specularexponent: 'specularExponent',
375 + speed: 'speed',
376 spreadmethod: 'spreadMethod',
377 startoffset: 'startOffset',
378 stddeviation: 'stdDeviation',
379 + stemh: 'stemh',
380 + stemv: 'stemv',
381 stitchtiles: 'stitchTiles',
217 - 'stop-color': 'stopColor',
382 stopcolor: 'stopColor',
383 + 'stop-color': 'stopColor',
384 stopopacity: 'stopOpacity',
385 'stop-opacity': 'stopOpacity',
221 - 'strikethrough-position': 'strikethroughPosition',
386 strikethroughposition: 'strikethroughPosition',
387 + 'strikethrough-position': 'strikethroughPosition',
388 strikethroughthickness: 'strikethroughThickness',
389 'strikethrough-thickness': 'strikethroughThickness',
225 - 'stroke-dasharray': 'strokeDasharray',
390 + string: 'string',
391 + stroke: 'stroke',
392 strokedasharray: 'strokeDasharray',
227 - 'stroke-dashoffset': 'strokeDashoffset',
393 + 'stroke-dasharray': 'strokeDasharray',
394 strokedashoffset: 'strokeDashoffset',
229 - 'stroke-linecap': 'strokeLinecap',
395 + 'stroke-dashoffset': 'strokeDashoffset',
396 strokelinecap: 'strokeLinecap',
231 - 'stroke-linejoin': 'strokeLinejoin',
397 + 'stroke-linecap': 'strokeLinecap',
398 strokelinejoin: 'strokeLinejoin',
233 - 'stroke-miterlimit': 'strokeMiterlimit',
399 + 'stroke-linejoin': 'strokeLinejoin',
400 strokemiterlimit: 'strokeMiterlimit',
235 - 'stroke-opacity': 'strokeOpacity',
236 - strokeopacity: 'strokeOpacity',
401 + 'stroke-miterlimit': 'strokeMiterlimit',
402 + strokewidth: 'strokeWidth',
403 'stroke-width': 'strokeWidth',
404 + strokeopacity: 'strokeOpacity',
405 + 'stroke-opacity': 'strokeOpacity',
406 suppresscontenteditablewarning: 'suppressContentEditableWarning',
407 surfacescale: 'surfaceScale',
408 systemlanguage: 'systemLanguage',
409 tablevalues: 'tableValues',
410 targetx: 'targetX',
411 targety: 'targetY',
244 - 'text-anchor': 'textAnchor',
412 textanchor: 'textAnchor',
246 - 'text-decoration': 'textDecoration',
413 + 'text-anchor': 'textAnchor',
414 textdecoration: 'textDecoration',
248 - 'text-rendering': 'textRendering',
249 - textrendering: 'textRendering',
415 + 'text-decoration': 'textDecoration',
416 textlength: 'textLength',
251 - 'underline-position': 'underlinePosition',
417 + textrendering: 'textRendering',
418 + 'text-rendering': 'textRendering',
419 + to: 'to',
420 + transform: 'transform',
421 + typeof: 'typeof',
422 + u1: 'u1',
423 + u2: 'u2',
424 underlineposition: 'underlinePosition',
253 - 'underline-thickness': 'underlineThickness',
425 + 'underline-position': 'underlinePosition',
426 underlinethickness: 'underlineThickness',
255 - 'unicode-bidi': 'unicodeBidi',
427 + 'underline-thickness': 'underlineThickness',
428 + unicode: 'unicode',
429 unicodebidi: 'unicodeBidi',
257 - 'unicode-range': 'unicodeRange',
430 + 'unicode-bidi': 'unicodeBidi',
431 unicoderange: 'unicodeRange',
259 - 'units-per-em': 'unitsPerEm',
432 + 'unicode-range': 'unicodeRange',
433 unitsperem: 'unitsPerEm',
261 - 'v-alphabetic': 'vAlphabetic',
434 + 'units-per-em': 'unitsPerEm',
435 + unselectable: 'unselectable',
436 valphabetic: 'vAlphabetic',
263 - 'v-hanging': 'vHanging',
264 - vhanging: 'vHanging',
265 - 'v-ideographic': 'vIdeographic',
266 - videographic: 'vIdeographic',
267 - 'v-mathematical': 'vMathematical',
268 - vmathematical: 'vMathematical',
269 - 'vector-effect': 'vectorEffect',
437 + 'v-alphabetic': 'vAlphabetic',
438 + values: 'values',
439 vectoreffect: 'vectorEffect',
271 - 'vert-adv-y': 'vertAdvY',
440 + 'vector-effect': 'vectorEffect',
441 + version: 'version',
442 vertadvy: 'vertAdvY',
273 - 'vert-origin-x': 'vertOriginX',
443 + 'vert-adv-y': 'vertAdvY',
444 vertoriginx: 'vertOriginX',
275 - 'vert-origin-y': 'vertOriginY',
445 + 'vert-origin-x': 'vertOriginX',
446 vertoriginy: 'vertOriginY',
447 + 'vert-origin-y': 'vertOriginY',
448 + vhanging: 'vHanging',
449 + 'v-hanging': 'vHanging',
450 + videographic: 'vIdeographic',
451 + 'v-ideographic': 'vIdeographic',
452 viewbox: 'viewBox',
453 viewtarget: 'viewTarget',
279 - 'word-spacing': 'wordSpacing',
454 + visibility: 'visibility',
455 + vmathematical: 'vMathematical',
456 + 'v-mathematical': 'vMathematical',
457 + vocab: 'vocab',
458 + widths: 'widths',
459 wordspacing: 'wordSpacing',
281 - 'writing-mode': 'writingMode',
460 + 'word-spacing': 'wordSpacing',
461 writingmode: 'writingMode',
283 - 'x-height': 'xHeight',
284 - xheight: 'xHeight',
462 + 'writing-mode': 'writingMode',
463 + x1: 'x1',
464 + x2: 'x2',
465 + x: 'x',
466 xchannelselector: 'xChannelSelector',
286 - 'xlink:actuate': 'xlinkActuate',
467 + xheight: 'xHeight',
468 + 'x-height': 'xHeight',
469 xlinkactuate: 'xlinkActuate',
288 - 'xlink:arcrole': 'xlinkArcrole',
470 + 'xlink:actuate': 'xlinkActuate',
471 xlinkarcrole: 'xlinkArcrole',
290 - 'xlink:href': 'xlinkHref',
472 + 'xlink:arcrole': 'xlinkArcrole',
473 xlinkhref: 'xlinkHref',
292 - 'xlink:role': 'xlinkRole',
474 + 'xlink:href': 'xlinkHref',
475 xlinkrole: 'xlinkRole',
294 - 'xlink:show': 'xlinkShow',
476 + 'xlink:role': 'xlinkRole',
477 xlinkshow: 'xlinkShow',
296 - 'xlink:title': 'xlinkTitle',
478 + 'xlink:show': 'xlinkShow',
479 xlinktitle: 'xlinkTitle',
298 - 'xlink:type': 'xlinkType',
480 + 'xlink:title': 'xlinkTitle',
481 xlinktype: 'xlinkType',
300 - 'xml:base': 'xmlBase',
482 + 'xlink:type': 'xlinkType',
483 xmlbase: 'xmlBase',
302 - 'xmlns:xlink': 'xmlnsXlink',
303 - xmlnsxlink: 'xmlnsXlink',
304 - 'xml:lang': 'xmlLang',
484 + 'xml:base': 'xmlBase',
485 xmllang: 'xmlLang',
486 + 'xml:lang': 'xmlLang',
487 + xmlns: 'xmlns',
488 'xml:space': 'xmlSpace',
489 + xmlnsxlink: 'xmlnsXlink',
490 + 'xmlns:xlink': 'xmlnsXlink',
491 xmlspace: 'xmlSpace',
492 + y1: 'y1',
493 + y2: 'y2',
494 + y: 'y',
495 ychannelselector: 'yChannelSelector',
496 + z: 'z',
497 zoomandpan: 'zoomAndPan',
498 };
499