Appendix A: Document Type Definition

This appendix is normative.

The DTD is also available for download.

 

<!--
    This is the DTD for Scalable Vector Graphics (SVG) 1.0 (draft 19991203).
    The specification for SVG that corresponds to this DTD is available at:

        http://www.w3.org/1999/12/WD-SVG-19991203/

-->


<!--=================== Generic Attributes ===================-->


<!-- This entity allows for at most one of desc and title,
     supplied in any order -->
<!ENTITY % descTitle
          "((desc,title?)|(title,desc?)?)" >

<!-- This entity allows for at most one of desc, title and defs,
     supplied in any order -->
<!ENTITY % descTitleDefs
          "(((desc,((title,defs?)|(defs,title?))?)|
              (title,((desc,defs?)|(defs,desc?))?)|
              (defs,((desc,title?)|(title,desc?))?))?)" >
     
<!-- Supplemental attributes to xlink:href for all elements
     which reference to other elements using XLink -->
<!ENTITY % xlinkRefAttrs
 "xmlns:xlink CDATA #FIXED 'http://www.w3.org/XML/XLink/0.9'
  xlink:type (simple|extended|locator|arc) #FIXED 'simple' 
  xlink:role CDATA #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (new|embed|replace) #FIXED 'embed'
  xlink:actuate (user|auto) #FIXED 'auto'" >

<!ENTITY % graphicsElementEvents
  "onfocusin CDATA #IMPLIED
   onfocusout CDATA #IMPLIED
   ongainselection CDATA #IMPLIED
   onloseselection CDATA #IMPLIED
   onactivate CDATA #IMPLIED
   onmousedown CDATA #IMPLIED
   onmouseup CDATA #IMPLIED
   onclick CDATA #IMPLIED
   ondblclick CDATA #IMPLIED
   onmouseover CDATA #IMPLIED
   onmousemove CDATA #IMPLIED
   onmouseout CDATA #IMPLIED
   onkeydown CDATA #IMPLIED
   onkeypress CDATA #IMPLIED
   onkeyup CDATA #IMPLIED
   onload CDATA #IMPLIED
   onselect CDATA #IMPLIED" >

<!ENTITY % documentEvents
  "onresize CDATA #IMPLIED
   onscroll CDATA #IMPLIED
   onunload CDATA #IMPLIED
   onzoom CDATA #IMPLIED
   onerror CDATA #IMPLIED
   onabort CDATA #IMPLIED " >

<!ENTITY % structured_text
  "content CDATA #FIXED 'structured text'" >

<!-- Allow for extending the DTD with internal subset for 
     container and graphics elements -->
<!ENTITY % ceExt "" >
<!ENTITY % geExt "" >


<!--========== Document Structure and Grouping ==========-->

<!ENTITY % svgExt "" >
<!ELEMENT svg (%descTitleDefs;,metadata?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a
                   %ceExt;%svgExt;)*) >
<!ATTLIST svg
  xmlns CDATA #FIXED 'http://www.w3.org/Graphics/SVG/SVG-19991203.dtd'
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %graphicsElementEvents;
  %documentEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  refX CDATA #IMPLIED
  refY CDATA #IMPLIED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  enableZoomAndPanControls (true | false) "true" 
  contentScriptType CDATA #IMPLIED >

<!ENTITY % gExt "" >
<!ELEMENT g (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|
                   animate|set|animateMotion|animateColor|animateTransform
                   %ceExt;%gExt;)*) >
<!ATTLIST g
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED 
  system-language CDATA #IMPLIED >

<!ENTITY % defsExt "" >
<!ELEMENT defs (script|style|symbol|marker|clipPath|mask|
                linearGradient|radialGradient|pattern|filter|cursor|font|
                animate|set|animateMotion|animateColor|animateTransform|
                path|text|rect|circle|ellipse|line|polyline|polygon|
                use|image|svg|g|view|switch|altGlyphDef
                %ceExt;%defsExt;)* >
<!ATTLIST defs
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED >


<!--=================== Shapes ===================-->

<!ENTITY % pathExt "" >
<!ELEMENT path (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%pathExt;)*) >
<!ATTLIST path
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  d CDATA #REQUIRED
  nominalLength CDATA #IMPLIED >

<!ENTITY % rectExt "" >
<!ELEMENT rect (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%rectExt;)*) >
<!ATTLIST rect
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  rx CDATA #IMPLIED
  ry CDATA #IMPLIED >

<!ENTITY % circleExt "" >
<!ELEMENT circle (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%circleExt;)*) >
<!ATTLIST circle
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  cx CDATA "0"
  cy CDATA "0"
  r CDATA #REQUIRED >

<!ENTITY % ellipseExt "" >
<!ELEMENT ellipse (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%ellipseExt;)*) >
<!ATTLIST ellipse
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  cx CDATA "0"
  cy CDATA "0"
  rx CDATA #REQUIRED
  ry CDATA #REQUIRED >

<!ENTITY % lineExt "" >
<!ELEMENT line (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%lineExt;)*) >
<!ATTLIST line
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x1 CDATA "0"
  y1 CDATA "0"
  x2 CDATA "0"
  y2 CDATA "0" >

<!ENTITY % polylineExt "" >
<!ELEMENT polyline (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%polylineExt;)*) >
<!ATTLIST polyline
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  points CDATA #REQUIRED >

<!ENTITY % polygonExt "" >
<!ELEMENT polygon (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%polygonExt;)*) >
<!ATTLIST polygon
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  points CDATA #REQUIRED >


<!--=================== Text ===================-->

<!ENTITY % textExt "" >
<!ELEMENT text (#PCDATA|tspan|tref|textPath|altglyph|use|animate|set|animateMotion|animateColor|animateTransform
                %geExt;%textExt;)* >
<!ATTLIST text
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED >

<!ENTITY % tspanExt "" >
<!ELEMENT tspan (#PCDATA|tspan|tref|altglyph|animate|set|animateColor
                %tspanExt;)* >
<!ATTLIST tspan
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  dx CDATA #IMPLIED
  dy CDATA #IMPLIED
  rotate CDATA #IMPLIED >

<!ENTITY % trefExt "" >
<!ELEMENT tref (animate|set|animateColor
                %trefExt;)* >
<!ATTLIST tref
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  dx CDATA #IMPLIED
  dy CDATA #IMPLIED
  rotate CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >

<!ENTITY % textPathExt "" >
<!ELEMENT textPath (#PCDATA|tspan|tref|altglyph|animate|set|animateColor
                %textPathExt;)* >
<!ATTLIST textPath
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  startOffset CDATA "0"
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >

<!ENTITY % altGlyphExt "" >
<!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
<!ATTLIST altGlyph
  id ID #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >

<!ENTITY % altGlyphDefExt "" >
<!ELEMENT altGlyphDef (glyphSub %altGlyphDefExt;)* >
<!ATTLIST altglyphDef
  id ID #IMPLIED >

<!ELEMENT glyphSub EMPTY >
<!ATTLIST glyphSub
  id ID #IMPLIED 
  font CDATA #REQUIRED
  glyphRef CDATA #REQUIRED
  format CDATA #REQUIRED >

<!--=================== SVG Fonts ===================-->

<!ENTITY % fontExt "" >
<!ELEMENT font (%descTitle;,missing-glyph,(glyph|hkern|vkern
                   %fontExt;)*) >
<!ATTLIST font
  id ID #IMPLIED
  font-style CDATA #IMPLIED
  font-variant CDATA #IMPLIED
  font-weight CDATA #IMPLIED
  font-stretch CDATA #IMPLIED
  unicode-range CDATA #IMPLIED
  units-per-em CDATA #REQUIRED
  panose-1 CDATA #IMPLIED
  slope CDATA #IMPLIED
  cap-height CDATA #REQUIRED
  x-height CDATA #REQUIRED
  accent-height CDATA #IMPLIED
  ascent CDATA #REQUIRED
  descent CDATA #REQUIRED
  horiz-origin-x CDATA #IMPLIED
  horiz-origin-y CDATA #IMPLIED
  horiz-adv-x CDATA #REQUIRED
  vert-origin-x CDATA #IMPLIED
  vert-origin-y CDATA #IMPLIED
  vert-adv-y CDATA #IMPLIED
  text-bottom CDATA #REQUIRED
  baseline CDATA #REQUIRED
  centerline CDATA #REQUIRED
  mathline CDATA #REQUIRED
  ideographic CDATA #REQUIRED
  hanging CDATA #REQUIRED
  topline CDATA #REQUIRED
  text-top CDATA #REQUIRED
  font-face-name CDATA #IMPLIED
  underline-position CDATA #IMPLIED
  underline-thickness CDATA #IMPLIED
  strikethrough-position CDATA #IMPLIED
  strikethrough-thickness CDATA #IMPLIED
  overline-position CDATA #IMPLIED
  overline-thickness CDATA #IMPLIED >

<!ENTITY % glyphExt "" >
<!ELEMENT glyph (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|g|switch
                   %glyphExt;)*) >
<!ATTLIST glyph
  id ID #IMPLIED
  unicode CDATA #REQUIRED
  glyph-name CDATA #IMPLIED
  vert-text-orient CDATA #IMPLIED
  arabic CDATA #IMPLIED
  han CDATA #IMPLIED
  horiz-adv-x CDATA #IMPLIED
  vert-adv-y CDATA #IMPLIED >

<!ENTITY % missing-glyphExt "" >
<!ELEMENT missing-glyph (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|g|switch
                   %missing-glyphExt;)*) >
<!ATTLIST missing-glyph
  id ID #IMPLIED
  horiz-adv-x CDATA #IMPLIED
  vert-adv-y CDATA #IMPLIED >

<!ELEMENT hkern EMPTY >
<!ATTLIST hkern
  id ID #IMPLIED
  u1 CDATA #IMPLIED
  g1 CDATA #IMPLIED
  u2 CDATA #IMPLIED
  g2 CDATA #IMPLIED
  k CDATA #REQUIRED >

<!ELEMENT vkern EMPTY >
<!ATTLIST vkern
  id ID #IMPLIED
  u1 CDATA #IMPLIED
  g1 CDATA #IMPLIED
  u2 CDATA #IMPLIED
  g2 CDATA #IMPLIED
  k CDATA #REQUIRED >


<!--=================== Graphics Referencing Elements ===================-->

<!ENTITY % useExt "" >
<!ELEMENT use (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                   %geExt;%useExt;)*) >
<!ATTLIST use
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #IMPLIED
  height CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >

<!ENTITY % imageExt "" >
<!ELEMENT image (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                   %geExt;%imageExt;)*) >
<!ATTLIST image
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >


<!--=================== Symbols and Markers ===================-->

<!ENTITY % symbolExt "" >
<!ELEMENT symbol (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a
                   %ceExt;%symbolExt;)*) >
<!ATTLIST symbol
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  refX CDATA #IMPLIED
  refY CDATA #IMPLIED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet' >

<!ENTITY % markerExt "" >
<!ELEMENT marker (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a
                   %ceExt;%markerExt;)*) >
<!ATTLIST marker
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  refX CDATA #IMPLIED
  refY CDATA #IMPLIED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  markerUnits (stroke-width | userSpace | userSpaceOnUse) "stroke-width"
  markerWidth  CDATA "3"
  markerHeight CDATA "3"
  orient CDATA "0" >


<!--========== Descriptions and Titles ==========-->

<!ELEMENT desc (#PCDATA)* >
<!ATTLIST desc
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %structured_text; >

<!ELEMENT title (#PCDATA)* >
<!ATTLIST title
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %structured_text; >


<!--=================== Clipping and Masking ===================-->

<!ENTITY % clipPathExt "" >
<!ELEMENT clipPath (%descTitle;,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|animate|set|animateMotion|animateColor|animateTransform
                     %ceExt;%clipPathExt;)*) >
<!ATTLIST clipPath
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED 
  clipPathUnits (userSpace | userSpaceOnUse | objectBoundingBox) "userSpace" >

<!ENTITY % maskExt "" >
<!ELEMENT mask (%descTitleDefs;,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|switch|a|
                     animate|set|animateMotion|animateColor|animateTransform
                     %ceExt;%maskExt;)*) >
<!ATTLIST mask
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  maskUnits (userSpace | userSpaceOnUse | objectBoundingBox) "userSpace"
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #IMPLIED
  height CDATA #IMPLIED >


<!--=================== Gradients and Patterns ===================-->

<!ENTITY % linearGradientExt "" >
<!ELEMENT linearGradient (stop|animate|set|animateTransform
                   %linearGradientExt;)* >
<!ATTLIST linearGradient
  id ID #IMPLIED
  gradientUnits (userSpace | userSpaceOnUse | objectBoundingBox) 'userSpace'
  gradientTransform CDATA #IMPLIED
  x1 CDATA #IMPLIED
  y1 CDATA #IMPLIED
  x2 CDATA #IMPLIED
  y2 CDATA #IMPLIED
  spreadMethod (pad | reflect | repeat) "pad"
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED >


<!ENTITY % radialGradientExt "" >
<!ELEMENT radialGradient (stop|animate|set|animateTransform
                   %radialGradientExt;)* >
<!ATTLIST radialGradient
  id ID #IMPLIED
  gradientUnits (userSpace | userSpaceOnUse | objectBoundingBox) 'userSpace'
  gradientTransform CDATA #IMPLIED
  cx CDATA #IMPLIED
  cy CDATA #IMPLIED
  r CDATA #IMPLIED
  fx CDATA #IMPLIED
  fy CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED >


<!ENTITY % stopExt "" >
<!ELEMENT stop (animate|set|animateColor
                   %stopExt;)* >
<!ATTLIST stop
  id ID #IMPLIED
  style CDATA #IMPLIED
  offset CDATA #REQUIRED >

<!ENTITY % patternExt "" >
<!ELEMENT pattern (%descTitleDefs;,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|switch|a
                     %ceExt;%patternExt;)*) >
<!ATTLIST pattern
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  patternUnits (userSpace | userSpaceOnUse | objectBoundingBox) 'userSpace'
  patternTransform CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  refX CDATA #IMPLIED
  refY CDATA #IMPLIED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED >



<!--=================== Linking ===================-->

<!ENTITY % aExt "" >
<!ELEMENT a (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a
                   %ceExt;%aExt;)*) >
<!ATTLIST a
  id ID #IMPLIED
  xmlns:xlink CDATA #FIXED "http://www.w3.org/XML/XLink/0.9"
  xlink:type (simple|extended|locator|arc) #FIXED "simple" 
  xlink:role CDATA #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (new|embed|replace) 'replace'
  xlink:actuate (user|auto) #FIXED 'user'
  xlink:href CDATA #REQUIRED
  target CDATA #IMPLIED >

<!ENTITY % viewExt "" >
<!ELEMENT view (%descTitle;%viewExt;) >
<!ATTLIST view
  id ID #IMPLIED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  enableZoomAndPanControls (true | false) "true" 
  viewTarget CDATA #IMPLIED >


<!--=================== Animation ===================-->

<!ENTITY % animTargetAttrs
 "%xlinkRefAttrs;
  xlink:href CDATA #IMPLIED
  attributeName  CDATA  #REQUIRED
  attributeType  CDATA  #IMPLIED" >

<!ENTITY % animTimingAttrs
 "begin CDATA #IMPLIED 
  end CDATA #IMPLIED
  dur CDATA #IMPLIED
  endActive CDATA #IMPLIED
  restart (always | never | whenNotActive) 'always'
  repeatCount CDATA #IMPLIED 
  repeatDur CDATA #IMPLIED
  fill (remove | freeze) 'remove'" >

<!ENTITY % animValueAttrs
 "calcMode (discrete | linear | evenPace | spline) 'linear'
  values CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  by CDATA #IMPLIED
  keyTimes CDATA #IMPLIED
  keySplines CDATA #IMPLIED" >

<!ENTITY % animAdditionAttrs
 "additive       (true | false) 'false'
  accumulate     (true | false) 'false'" >

<!ENTITY % animateExt "" >
<!ELEMENT animate (%descTitle;%animateExt;) >
<!ATTLIST animate
  id ID #IMPLIED
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs; >

<!ENTITY % setExt "" >
<!ELEMENT set (%descTitle;%setExt;) >
<!ATTLIST set
  id ID #IMPLIED
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  to CDATA #IMPLIED >

<!ENTITY % animateMotionExt "" >
<!ELEMENT animateMotion (%descTitle;%animateMotionExt;) >
<!ATTLIST animateMotion
  id ID #IMPLIED
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs;
  path CDATA #IMPLIED
  rotate CDATA #IMPLIED
  origin CDATA #IMPLIED >

<!ENTITY % animateColorExt "" >
<!ELEMENT animateColor (%descTitle;%animateColorExt;) >
<!ATTLIST animateColor
  id ID #IMPLIED
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs; >

<!ENTITY % animateTransformExt "" >
<!ELEMENT animateTransform (%descTitle;%animateTransformExt;) >
<!ATTLIST animateTransform
  id ID #IMPLIED
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs;
  type (translate | scale | rotate | skewX | skewY) "translate" >


<!--========== Defining Scripts and Declaring Styles ==========-->

<!ELEMENT script (#PCDATA)* >
<!ATTLIST script
  language CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED >

<!ELEMENT style (#PCDATA)* >
<!ATTLIST style type CDATA "text/css" >



<!--=================== Custom cursors ===================-->

<!ELEMENT cursor (%descTitle;) >
<!ATTLIST cursor
  id ID #IMPLIED
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA "0"
  y CDATA "0"
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >


<!--=================== Extensibility ===================-->

<!ENTITY % switchExt "" >
<!ELEMENT switch (%descTitleDefs;,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|foreignObject|
                   animate|set|animateMotion|animateColor|animateTransform
                   %ceExt;%switchExt;)*) >
<!ATTLIST switch
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED 
  system-language CDATA #IMPLIED >

<!ENTITY % foreignObjectExt "" >
<!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
<!ATTLIST foreignObject
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  %structured_text; >



<!--=================== Metadata ===================-->

<!ENTITY % metadataExt "" >
<!ELEMENT metadata (#PCDATA %metadataExt;)* >
<!ATTLIST metadata
  id ID #IMPLIED >


<!--============== Filter Effects ==============-->

<!ENTITY % filter_node_attributes
  "result CDATA #IMPLIED
   x CDATA #IMPLIED
   y CDATA #IMPLIED
   width CDATA #IMPLIED
   height CDATA #IMPLIED">

<!ENTITY % filter_node_attributes_with_in
  "%filter_node_attributes;
   in CDATA #IMPLIED">

<!ENTITY % component_transfer_function_attributes
  "type CDATA #REQUIRED
   tableValues CDATA #IMPLIED
   slope CDATA #IMPLIED
   intercept CDATA #IMPLIED
   amplitude CDATA #IMPLIED
   exponent CDATA #IMPLIED
   offset CDATA #IMPLIED" >

<!ENTITY % filterExt "" >
<!ELEMENT filter (feBlend|feFlood|
  feColorMatrix|feComponentTransfer|
  feComposite|feDiffuseLighting|feDisplacementMap|
  feGaussianBlur|feImage|feMerge|
  feMorphology|feOffset|feSpecularLighting|
  feTile|feTurbulence|
  animate|set
  %filterExt;)* >
<!ATTLIST filter
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  filterUnits (userSpace | userSpaceOnUse | objectBoundingBox) "userSpace"
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #IMPLIED
  height CDATA #IMPLIED
  filterRes CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED >


<!ELEMENT feBlend EMPTY >
<!ATTLIST feBlend
  %filter_node_attributes_with_in;
  mode (normal | multiple | screen | darken | lighten) "normal"
  in2 CDATA #REQUIRED >

<!ELEMENT feFlood (animate|set|animateColor)* >
<!ATTLIST feFlood
  %filter_node_attributes_with_in;
  style CDATA #IMPLIED >

<!ELEMENT feColorMatrix (animate|set)* >
<!ATTLIST feColorMatrix
  %filter_node_attributes_with_in;
  type CDATA #REQUIRED
  values CDATA #IMPLIED >

<!ELEMENT feComponentTransfer (feFuncR?,feFuncG?,feFuncB?,feFuncA?) >
<!ATTLIST feComponentTransfer
  %filter_node_attributes_with_in; >

<!ELEMENT feFuncR (animate|set)* >
<!ATTLIST feFuncR
  %component_transfer_function_attributes; >

<!ELEMENT feFuncG (animate|set)* >
<!ATTLIST feFuncG
  %component_transfer_function_attributes; >

<!ELEMENT feFuncB (animate|set)* >
<!ATTLIST feFuncB
  %component_transfer_function_attributes; >

<!ELEMENT feFuncA (animate|set)* >
<!ATTLIST feFuncA
  %component_transfer_function_attributes; >

<!ELEMENT feComposite EMPTY >
<!ATTLIST feComposite
  %filter_node_attributes_with_in;
  operator (over | in | out | atop | xor | arithmetic) "over"
  k1 CDATA #IMPLIED
  k2 CDATA #IMPLIED
  k3 CDATA #IMPLIED
  k4 CDATA #IMPLIED
  in2 CDATA #REQUIRED >

<!ELEMENT feDiffuseLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
<!ATTLIST feDiffuseLighting
  %filter_node_attributes_with_in;
  resultScale CDATA #IMPLIED
  surfaceScale CDATA #IMPLIED
  diffuseConstant CDATA #IMPLIED
  lightColor CDATA #IMPLIED >

<!ELEMENT feDistantLight (animate|set)* >
<!ATTLIST feDistantLight
  azimuth CDATA #IMPLIED
  elevation CDATA #IMPLIED >

<!ELEMENT fePointLight (animate|set)* >
<!ATTLIST fePointLight
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  z CDATA #IMPLIED >

<!ELEMENT feSpotLight (animate|set)* >
<!ATTLIST feSpotLight
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  z CDATA #IMPLIED
  pointsAtX CDATA #IMPLIED
  pointsAtY CDATA #IMPLIED
  pointsAtZ CDATA #IMPLIED
  specularExponent CDATA #IMPLIED >

<!ELEMENT feDisplacementMap (animate|set)* >
<!ATTLIST feDisplacementMap
  %filter_node_attributes_with_in;
  scale CDATA #IMPLIED
  xChannelSelector (R | G | B | A) "A"
  yChannelSelector (R | G | B | A) "A"
  in2 CDATA #REQUIRED >

<!ELEMENT feGaussianBlur (animate|set)* >
<!ATTLIST feGaussianBlur
  %filter_node_attributes_with_in;
  stdDeviation CDATA #IMPLIED >

<!ELEMENT feImage (animate|set|animateTransform)* >
<!ATTLIST feImage
  %filter_node_attributes;
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED
  transform CDATA #IMPLIED >

<!ELEMENT feMerge (feMergeNode)* >
<!ATTLIST feMerge
  %filter_node_attributes_with_in; >

<!ELEMENT feMergeNode EMPTY >
<!ATTLIST feMergeNode
  in CDATA #IMPLIED >

<!ELEMENT feMorphology (animate|set)* >
<!ATTLIST feMorphology
  %filter_node_attributes_with_in;
  operator (erode | dilate) "erode"
  radius CDATA #IMPLIED >

<!ELEMENT feOffset (animate|set)* >
<!ATTLIST feOffset
  %filter_node_attributes_with_in;
  dx CDATA #IMPLIED
  dy CDATA #IMPLIED >

<!ELEMENT feSpecularLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
<!ATTLIST feSpecularLighting
  %filter_node_attributes_with_in;
  surfaceScale CDATA #IMPLIED
  specularConstant CDATA #IMPLIED
  specularExponent CDATA #IMPLIED
  lightColor CDATA #IMPLIED >

<!ELEMENT feTile EMPTY >
<!ATTLIST feTile
  %filter_node_attributes_with_in; >

<!ELEMENT feTurbulence (animate|set)* >
<!ATTLIST feTurbulence
  %filter_node_attributes_with_in;
  baseFrequencyX CDATA #IMPLIED
  baseFrequencyY CDATA #IMPLIED
  numOctaves CDATA #IMPLIED
  stitchTiles (stitch | noStitch) "noStitch"
  type (fractalNoise | turbulence) "turbulence" >