Module: Rasem

Defined in:
lib/rasem.rb

Defined Under Namespace

Classes: Application, SVGGradient, SVGImage, SVGLinearGradient, SVGPath, SVGRadialGradient, SVGRaw, SVGTag, SVGTagWithParent

Constant Summary collapse

SVG_ALIAS =
{
  :group  => :g,
  :rectangle => :rect,
}
SVG_EXPANSION =
{
  :line   => [:x1,:y1,:x2,:y2],
  :circle => [:cx,:cy,:r],
  :image  => [:x,:y,:width,:height,:"xlink:href"],
  :ellipse => [:cx,:cy,:rx,:ry],
  :text   => [:x,:y],

  :rect   => lambda do |args|
  raise "Wrong unnamed argument count" unless args.size == 4 or args.size == 5 or args.size == 6
  result = {
    :x => args[0],
    :y => args[1],
    :width => args[2],
    :height => args[3],
  }
  if (args.size > 4)
    result[:rx] = args[4]
    result[:ry] = (args[5] or args[4])
  end
  return result
  end,

  :polygon => lambda do |args|
  args.flatten!
  raise "Illegal number of coordinates (should be even)" if args.length.odd?
  return {
    :points => args
  }
  end,

  :polyline => lambda do |args|
  args.flatten!
  raise "Illegal number of coordinates (should be even)" if args.length.odd?
  return {
    :points => args
  }
  end
}
SVG_DEFAULTS =
{
  :text => {:fill=>"black"},
  :line => {:stroke=>"black"},
  :rect => {:stroke=>"black"},
  :circle => {:stroke=>"black"},
  :ellipse => {:stroke=>"black"},
  :polygon => {:stroke=>"black"},
  :polyline => {:stroke=>"black"},
}
SVG_TRANSFORM =

TODO: move to documentation?

[
  :matrix,    # expects an array of 6 elements
  :translate, #[tx, ty?]
  :scale,     #[sx, sy?]
  :rotate,    #[angle, (cx, cy)?]
  :skewX,     # angle
  :skewY,     # angle
]
CSS_STYLE =
[
  :fill,
  :stroke_width,
  :stroke,
  :fill_opacity,
  :stroke_opacity,
  :opacity,
]
SVG_ELEMENTS =

Please do not modify this file manually, it is regenerated from w3 website. #

[:a,
:altGlyph,
:altGlyphDef,
:altGlyphItem,
:animate,
:animateColor,
:animateMotion,
:animateTransform,
:circle,
:clipPath,
:"color-profile",
:cursor,
:defs,
:desc,
:ellipse,
:feBlend,
:feColorMatrix,
:feComponentTransfer,
:feComposite,
:feConvolveMatrix,
:feDiffuseLighting,
:feDisplacementMap,
:feDistantLight,
: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,
:hkern,
:image,
:line,
:linearGradient,
:marker,
:mask,
:metadata,
:"missing-glyph",
:mpath,
:path,
:pattern,
:polygon,
:polyline,
:radialGradient,
:rect,
:script,
:set,
:stop,
:style,
:svg,
:switch,
:symbol,
:text,
:textPath,
:title,
:tref,
:tspan,
:use,
:view,
:vkern]
SVG_STRUCTURE =
{:a=>
  {:elements=>
[:a,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :target]},
 :altGlyph=>
  {:elements=>[:altGlyph],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :x,
 :y,
 :dx,
 :dy,
 :glyphRef,
 :format,
 :rotate,
 :"xlink:href"]},
 :altGlyphDef=>
  {:elements=>[:altGlyphDef, :glyphRef, :altGlyphItem],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :altGlyphItem=>
  {:elements=>[:altGlyphItem, :glyphRef],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :animate=>
  {:elements=>[:animate, :desc, :metadata, :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onbegin,
 :onend,
 :onrepeat,
 :onload,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :attributeType,
 :attributeName,
 :begin,
 :dur,
 :end,
 :min,
 :max,
 :restart,
 :repeatCount,
 :repeatDur,
 :fill,
 :calcMode,
 :values,
 :keyTimes,
 :keySplines,
 :from,
 :to,
 :by,
 :additive,
 :accumulate,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :externalResourcesRequired]},
 :animateColor=>
  {:elements=>[:animateColor, :desc, :metadata, :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onbegin,
 :onend,
 :onrepeat,
 :onload,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :attributeType,
 :attributeName,
 :begin,
 :dur,
 :end,
 :min,
 :max,
 :restart,
 :repeatCount,
 :repeatDur,
 :fill,
 :calcMode,
 :values,
 :keyTimes,
 :keySplines,
 :from,
 :to,
 :by,
 :additive,
 :accumulate,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :externalResourcesRequired]},
 :animateMotion=>
  {:elements=>[:animateMotion, :mpath],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onbegin,
 :onend,
 :onrepeat,
 :onload,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :begin,
 :dur,
 :end,
 :min,
 :max,
 :restart,
 :repeatCount,
 :repeatDur,
 :fill,
 :calcMode,
 :values,
 :keyTimes,
 :keySplines,
 :from,
 :to,
 :by,
 :additive,
 :accumulate,
 :externalResourcesRequired,
 :path,
 :keyPoints,
 :rotate,
 :origin]},
 :animateTransform=>
  {:elements=>[:animateTransform, :desc, :metadata, :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onbegin,
 :onend,
 :onrepeat,
 :onload,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :attributeType,
 :attributeName,
 :begin,
 :dur,
 :end,
 :min,
 :max,
 :restart,
 :repeatCount,
 :repeatDur,
 :fill,
 :calcMode,
 :values,
 :keyTimes,
 :keySplines,
 :from,
 :to,
 :by,
 :additive,
 :accumulate,
 :externalResourcesRequired,
 :type]},
 :circle=>
  {:elements=>
[:circle,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :cx,
 :cy,
 :r]},
 :clipPath=>
  {:elements=>
[:clipPath,
 :desc,
 :metadata,
 :title,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :text,
 :use],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :clipPathUnits]},
 :"color-profile"=>
  {:elements=>[:"color-profile", :desc, :metadata, :title],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :local,
 :name,
 :"rendering-intent",
 :"xlink:href"]},
 :cursor=>
  {:elements=>[:cursor, :desc, :metadata, :title],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :externalResourcesRequired,
 :x,
 :y,
 :"xlink:href"]},
 :defs=>
  {:elements=>
[:defs,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform]},
 :desc=>
  {:elements=>[:desc],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :class, :style]},
 :ellipse=>
  {:elements=>
[:ellipse,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :cx,
 :cy,
 :rx,
 :ry]},
 :feBlend=>
  {:elements=>[:feBlend, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :in2,
 :mode]},
 :feColorMatrix=>
  {:elements=>[:feColorMatrix, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :type,
 :values]},
 :feComponentTransfer=>
  {:elements=>[:feComponentTransfer, :feFuncA, :feFuncB, :feFuncG, :feFuncR],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in]},
 :feComposite=>
  {:elements=>[:feComposite, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :in2,
 :operator,
 :k1,
 :k2,
 :k3,
 :k4]},
 :feConvolveMatrix=>
  {:elements=>[:feConvolveMatrix, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :order,
 :kernelMatrix,
 :divisor,
 :bias,
 :targetX,
 :targetY,
 :edgeMode,
 :kernelUnitLength,
 :preserveAlpha]},
 :feDiffuseLighting=>
  {:elements=>[:feDiffuseLighting],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :surfaceScale,
 :diffuseConstant,
 :kernelUnitLength]},
 :feDisplacementMap=>
  {:elements=>[:feDisplacementMap, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :in2,
 :scale,
 :xChannelSelector,
 :yChannelSelector]},
 :feDistantLight=>
  {:elements=>[:feDistantLight, :animate, :set],
   :attributes=>
[:id, :"xml:base", :"xml:lang", :"xml:space", :azimuth, :elevation]},
 :feFlood=>
  {:elements=>[:feFlood, :animate, :animateColor, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style]},
 :feFuncA=>
  {:elements=>[:feFuncA, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :type,
 :tableValues,
 :slope,
 :intercept,
 :amplitude,
 :exponent,
 :offset]},
 :feFuncB=>
  {:elements=>[:feFuncB, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :type,
 :tableValues,
 :slope,
 :intercept,
 :amplitude,
 :exponent,
 :offset]},
 :feFuncG=>
  {:elements=>[:feFuncG, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :type,
 :tableValues,
 :slope,
 :intercept,
 :amplitude,
 :exponent,
 :offset]},
 :feFuncR=>
  {:elements=>[:feFuncR, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :type,
 :tableValues,
 :slope,
 :intercept,
 :amplitude,
 :exponent,
 :offset]},
 :feGaussianBlur=>
  {:elements=>[:feGaussianBlur, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :stdDeviation]},
 :feImage=>
  {:elements=>[:feImage, :animate, :animateTransform, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :preserveAspectRatio,
 :"xlink:href"]},
 :feMerge=>
  {:elements=>[:feMerge, :feMergeNode],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style]},
 :feMergeNode=>
  {:elements=>[:feMergeNode, :animate, :set],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :in]},
 :feMorphology=>
  {:elements=>[:feMorphology, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :operator,
 :radius]},
 :feOffset=>
  {:elements=>[:feOffset, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :dx,
 :dy]},
 :fePointLight=>
  {:elements=>[:fePointLight, :animate, :set],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :x, :y, :z]},
 :feSpecularLighting=>
  {:elements=>[:feSpecularLighting],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in,
 :surfaceScale,
 :specularConstant,
 :specularExponent,
 :kernelUnitLength]},
 :feSpotLight=>
  {:elements=>[:feSpotLight, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :x,
 :y,
 :z,
 :pointsAtX,
 :pointsAtY,
 :pointsAtZ,
 :specularExponent,
 :limitingConeAngle]},
 :feTile=>
  {:elements=>[:feTile, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :in]},
 :feTurbulence=>
  {:elements=>[:feTurbulence, :animate, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :x,
 :y,
 :width,
 :height,
 :result,
 :class,
 :style,
 :baseFrequency,
 :numOctaves,
 :seed,
 :stitchTiles,
 :type]},
 :filter=>
  {:elements=>
[:filter,
 :desc,
 :metadata,
 :title,
 :feBlend,
 :feColorMatrix,
 :feComponentTransfer,
 :feComposite,
 :feConvolveMatrix,
 :feDiffuseLighting,
 :feDisplacementMap,
 :feFlood,
 :feGaussianBlur,
 :feImage,
 :feMerge,
 :feMorphology,
 :feOffset,
 :feSpecularLighting,
 :feTile,
 :feTurbulence,
 :animate,
 :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :x,
 :y,
 :width,
 :height,
 :filterRes,
 :filterUnits,
 :primitiveUnits,
 :"xlink:href"]},
 :font=>
  {:elements=>
[:font,
 :desc,
 :metadata,
 :title,
 :"font-face",
 :glyph,
 :hkern,
 :"missing-glyph",
 :vkern],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :"horiz-origin-x",
 :"horiz-origin-y",
 :"horiz-adv-x",
 :"vert-origin-x",
 :"vert-origin-y",
 :"vert-adv-y"]},
 :"font-face"=>
  {:elements=>[:"font-face", :"font-face-src"],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"font-family",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"font-stretch",
 :"font-size",
 :"unicode-range",
 :"units-per-em",
 :"panose-1",
 :stemv,
 :stemh,
 :slope,
 :"cap-height",
 :"x-height",
 :"accent-height",
 :ascent,
 :descent,
 :widths,
 :bbox,
 :ideographic,
 :alphabetic,
 :mathematical,
 :hanging,
 :"v-ideographic",
 :"v-alphabetic",
 :"v-mathematical",
 :"v-hanging",
 :"underline-position",
 :"underline-thickness",
 :"strikethrough-position",
 :"strikethrough-thickness",
 :"overline-position",
 :"overline-thickness"]},
 :"font-face-format"=>
  {:elements=>[:"font-face-format"],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :string]},
 :"font-face-name"=>
  {:elements=>[:"font-face-name"],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :name]},
 :"font-face-src"=>
  {:elements=>[:"font-face-src", :"font-face-name", :"font-face-uri"],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :"font-face-uri"=>
  {:elements=>[:"font-face-uri", :"font-face-format"],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :"xlink:href"]},
 :foreignObject=>
  {:elements=>[:foreignObject],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :x,
 :y,
 :width,
 :height]},
 :g=>
  {:elements=>
[:g,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform]},
 :glyph=>
  {:elements=>
[:glyph,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :d,
 :"horiz-adv-x",
 :"vert-origin-x",
 :"vert-origin-y",
 :"vert-adv-y",
 :unicode,
 :"glyph-name",
 :orientation,
 :"arabic-form",
 :lang]},
 :glyphRef=>
  {:elements=>[:glyphRef],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :x,
 :y,
 :dx,
 :dy,
 :glyphRef,
 :format,
 :"xlink:href"]},
 :hkern=>
  {:elements=>[:hkern],
   :attributes=>
[:id, :"xml:base", :"xml:lang", :"xml:space", :u1, :g1, :u2, :g2, :k]},
 :image=>
  {:elements=>
[:image,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :preserveAspectRatio,
 :transform,
 :x,
 :y,
 :width,
 :height,
 :"xlink:href"]},
 :line=>
  {:elements=>
[:line,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :x1,
 :y1,
 :x2,
 :y2]},
 :linearGradient=>
  {:elements=>
[:linearGradient,
 :desc,
 :metadata,
 :title,
 :animate,
 :animateTransform,
 :set,
 :stop],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :x1,
 :y1,
 :x2,
 :y2,
 :gradientUnits,
 :gradientTransform,
 :spreadMethod,
 :"xlink:href"]},
 :marker=>
  {:elements=>
[:marker,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :viewBox,
 :preserveAspectRatio,
 :refX,
 :refY,
 :markerUnits,
 :markerWidth,
 :markerHeight,
 :orient]},
 :mask=>
  {:elements=>
[:mask,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :x,
 :y,
 :width,
 :height,
 :maskUnits,
 :maskContentUnits]},
 :metadata=>
  {:elements=>[:metadata],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space"]},
 :"missing-glyph"=>
  {:elements=>
[:"missing-glyph",
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :d,
 :"horiz-adv-x",
 :"vert-origin-x",
 :"vert-origin-y",
 :"vert-adv-y"]},
 :mpath=>
  {:elements=>[:mpath, :desc, :metadata, :title],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :externalResourcesRequired,
 :"xlink:href"]},
 :path=>
  {:elements=>
[:path,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :d,
 :pathLength]},
 :pattern=>
  {:elements=>
[:pattern,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :viewBox,
 :preserveAspectRatio,
 :x,
 :y,
 :width,
 :height,
 :patternUnits,
 :patternContentUnits,
 :patternTransform,
 :"xlink:href"]},
 :polygon=>
  {:elements=>
[:polygon,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :points]},
 :polyline=>
  {:elements=>
[:polyline,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :points]},
 :radialGradient=>
  {:elements=>
[:radialGradient,
 :desc,
 :metadata,
 :title,
 :animate,
 :animateTransform,
 :set,
 :stop],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :cx,
 :cy,
 :r,
 :fx,
 :fy,
 :gradientUnits,
 :gradientTransform,
 :spreadMethod,
 :"xlink:href"]},
 :rect=>
  {:elements=>
[:rect,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :x,
 :y,
 :width,
 :height,
 :rx,
 :ry]},
 :script=>
  {:elements=>[:script],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :externalResourcesRequired,
 :type,
 :"xlink:href"]},
 :set=>
  {:elements=>[:set, :desc, :metadata, :title],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onbegin,
 :onend,
 :onrepeat,
 :onload,
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :attributeType,
 :attributeName,
 :begin,
 :dur,
 :end,
 :min,
 :max,
 :restart,
 :repeatCount,
 :repeatDur,
 :fill,
 :externalResourcesRequired,
 :to]},
 :stop=>
  {:elements=>[:stop, :animate, :animateColor, :set],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :offset]},
 :style=>
  {:elements=>[:style],
   :attributes=>
[:id, :"xml:base", :"xml:lang", :"xml:space", :type, :media, :title]},
 :svg=>
  {:elements=>
[:svg,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onunload,
 :onabort,
 :onerror,
 :onresize,
 :onscroll,
 :onzoom,
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :x,
 :y,
 :width,
 :height,
 :viewBox,
 :preserveAspectRatio,
 :zoomAndPan,
 :version,
 :baseProfile,
 :contentScriptType,
 :contentStyleType,
 :x,
 :y,
 :width,
 :height,
 :version,
 :baseProfile,
 :xmlns,
 :"xmlns:svg",
 :"xmlns:cc",
 :"xmlns:dc",
 :"xmlns:rdf",
 :"xmlns:inkscape",
 :"xmlns:xlink"]},
 :switch=>
  {:elements=>
[:switch,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :a,
 :foreignObject,
 :g,
 :image,
 :svg,
 :switch,
 :text,
 :use],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform]},
 :symbol=>
  {:elements=>
[:symbol,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :circle,
 :ellipse,
 :line,
 :path,
 :polygon,
 :polyline,
 :rect,
 :defs,
 :g,
 :svg,
 :symbol,
 :use,
 :linearGradient,
 :radialGradient,
 :a,
 :altGlyphDef,
 :clipPath,
 :"color-profile",
 :cursor,
 :filter,
 :font,
 :"font-face",
 :foreignObject,
 :image,
 :marker,
 :mask,
 :pattern,
 :script,
 :style,
 :switch,
 :text,
 :view],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :preserveAspectRatio,
 :viewBox]},
 :text=>
  {:elements=>
[:text,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title,
 :altGlyph,
 :textPath,
 :tref,
 :tspan,
 :a],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :lengthAdjust,
 :x,
 :y,
 :dx,
 :dy,
 :rotate,
 :textLength]},
 :textPath=>
  {:elements=>
[:textPath,
 :desc,
 :metadata,
 :title,
 :a,
 :altGlyph,
 :animate,
 :animateColor,
 :set,
 :tref,
 :tspan],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :"xlink:href",
 :startOffset,
 :method,
 :spacing]},
 :title=>
  {:elements=>[:title],
   :attributes=>[:id, :"xml:base", :"xml:lang", :"xml:space", :class, :style]},
 :tref=>
  {:elements=>[:tref, :desc, :metadata, :title, :animate, :animateColor, :set],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :"xlink:href"]},
 :tspan=>
  {:elements=>
[:tspan,
 :desc,
 :metadata,
 :title,
 :a,
 :altGlyph,
 :animate,
 :animateColor,
 :set,
 :tref,
 :tspan],
   :attributes=>
[:requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :class,
 :style,
 :externalResourcesRequired,
 :x,
 :y,
 :dx,
 :dy,
 :rotate,
 :textLength,
 :lengthAdjust]},
 :use=>
  {:elements=>
[:use,
 :animate,
 :animateColor,
 :animateMotion,
 :animateTransform,
 :set,
 :desc,
 :metadata,
 :title],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :requiredFeatures,
 :requiredExtensions,
 :systemLanguage,
 :onfocusin,
 :onfocusout,
 :onactivate,
 :onclick,
 :onmousedown,
 :onmouseup,
 :onmouseover,
 :onmousemove,
 :onmouseout,
 :onload,
 :"alignment-baseline",
 :"baseline-shift",
 :clip,
 :"clip-path",
 :"clip-rule",
 :color,
 :"color-interpolation",
 :"color-interpolation-filters",
 :"color-profile",
 :"color-rendering",
 :cursor,
 :direction,
 :display,
 :"dominant-baseline",
 :"enable-background",
 :fill,
 :"fill-opacity",
 :"fill-rule",
 :filter,
 :"flood-color",
 :"flood-opacity",
 :"font-family",
 :"font-size",
 :"font-size-adjust",
 :"font-stretch",
 :"font-style",
 :"font-variant",
 :"font-weight",
 :"glyph-orientation-horizontal",
 :"glyph-orientation-vertical",
 :"image-rendering",
 :kerning,
 :"letter-spacing",
 :"lighting-color",
 :"marker-end",
 :"marker-mid",
 :"marker-start",
 :mask,
 :opacity,
 :overflow,
 :"pointer-events",
 :"shape-rendering",
 :"stop-color",
 :"stop-opacity",
 :stroke,
 :"stroke-dasharray",
 :"stroke-dashoffset",
 :"stroke-linecap",
 :"stroke-linejoin",
 :"stroke-miterlimit",
 :"stroke-opacity",
 :"stroke-width",
 :"text-anchor",
 :"text-decoration",
 :"text-rendering",
 :"unicode-bidi",
 :visibility,
 :"word-spacing",
 :"writing-mode",
 :"xlink:href",
 :"xlink:show",
 :"xlink:actuate",
 :"xlink:type",
 :"xlink:role",
 :"xlink:arcrole",
 :"xlink:title",
 :class,
 :style,
 :externalResourcesRequired,
 :transform,
 :x,
 :y,
 :width,
 :height,
 :"xlink:href"]},
 :view=>
  {:elements=>[:view, :desc, :metadata, :title],
   :attributes=>
[:id,
 :"xml:base",
 :"xml:lang",
 :"xml:space",
 :externalResourcesRequired,
 :viewBox,
 :preserveAspectRatio,
 :zoomAndPan,
 :viewTarget]},
 :vkern=>
  {:elements=>[:vkern],
   :attributes=>
[:id, :"xml:base", :"xml:lang", :"xml:space", :u1, :g1, :u2, :g2, :k]}}