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 19990812).
    The specification for SVG that corresponds to this DTD is available at:

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

-->


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

<!ENTITY % graphicsElementEvents
  "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
  "onunload CDATA #IMPLIED
   onzoom CDATA #IMPLIED ">

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


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

<!ELEMENT svg (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a)*)>
<!ATTLIST svg
  xmlns CDATA #FIXED 'http://www.w3.org/Graphics/SVG/SVG-19990812.dtd'
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %graphicsElementEvents;
  %documentEvents;
  system-required 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'
  allowZoomAndPan (true | false) "true" 
  contentScriptType CDATA #IMPLIED >

<!ELEMENT g (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|
                   animate|animateTransform|animateColor)*)>
<!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 CDATA #IMPLIED>

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


<!--=================== Shapes ===================-->
<!ELEMENT path (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  d CDATA #REQUIRED
  flatness CDATA #IMPLIED
  nominalLength CDATA #IMPLIED >

<!ELEMENT rect (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  rx CDATA #IMPLIED
  ry CDATA #IMPLIED >

<!ELEMENT circle (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  cx CDATA "0"
  cy CDATA "0"
  r CDATA #REQUIRED >

<!ELEMENT ellipse (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  cx CDATA "0"
  cy CDATA "0"
  rx CDATA #REQUIRED
  ry CDATA #REQUIRED >

<!ELEMENT line (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  x1 CDATA "0"
  y1 CDATA "0"
  x2 CDATA "0"
  y2 CDATA "0" >

<!ELEMENT polyline (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  points CDATA #REQUIRED >

<!ELEMENT polygon (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  points CDATA #REQUIRED >


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

<!ELEMENT text (#PCDATA|tspan|textPath|animate|animateTransform|animateColor)* >
<!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 CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED >

<!ELEMENT tspan (#PCDATA|animate|animateColor)* >
<!ATTLIST tspan
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  %graphicsElementEvents;
  system-required CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  dx CDATA #IMPLIED
  dy CDATA #IMPLIED
  dCoordUnits CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >

<!ELEMENT textPath (#PCDATA|tspan)* >
<!ATTLIST textPath
  startOffset CDATA "0"
  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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >


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

<!ELEMENT font (desc?,title?,missingGlyph,(glyph|kern)*) >
<!ATTLIST font
  id ID #IMPLIED
  fontStyle CDATA #IMPLIED
  fontVariant CDATA #IMPLIED
  fontWeight CDATA #IMPLIED
  fontStretch CDATA #IMPLIED
  unicodeRange CDATA #IMPLIED
  unitsPerEm CDATA #REQUIRED
  panose1 CDATA #IMPLIED
  slope CDATA #IMPLIED
  capHeight CDATA #REQUIRED
  xHeight CDATA #REQUIRED
  accentHeight CDATA #IMPLIED
  ascent CDATA #REQUIRED
  descent CDATA #REQUIRED
  horizOriginX CDATA #IMPLIED
  horizOriginY CDATA #IMPLIED
  horizAdvX CDATA #IMPLIED
  vertOriginX CDATA #IMPLIED
  vertOriginY CDATA #IMPLIED
  vertAdvY CDATA #IMPLIED
  bbox CDATA #REQUIRED
  baseline CDATA #REQUIRED
  centerline CDATA #REQUIRED
  mathline CDATA #REQUIRED
  topline CDATA #REQUIRED
  fullFontName CDATA #IMPLIED
  underlinePosition CDATA #IMPLIED
  underlineThickness CDATA #IMPLIED
  strikethroughPosition CDATA #IMPLIED
  strikethroughThickness CDATA #IMPLIED
  overlinePosition CDATA #IMPLIED
  overlineThickness CDATA #IMPLIED >

<!ELEMENT glyph (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|g|switch)*)>
<!ATTLIST glyph
  unicode CDATA #REQUIRED
  glyphName CDATA #IMPLIED
  vertTextOrient CDATA #IMPLIED
  arabic CDATA #IMPLIED
  han CDATA #IMPLIED
  horizAdvX CDATA #IMPLIED
  vertAdvY CDATA #IMPLIED
  bbox CDATA #IMPLIED >

<!ELEMENT missingGlyph (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|g|switch)*)>
<!ATTLIST missingGlyph
  horizAdvX CDATA #IMPLIED
  vertAdvY CDATA #IMPLIED
  bbox CDATA #IMPLIED >

<!ELEMENT kern EMPTY >
<!ATTLIST kern
  u1 CDATA #IMPLIED
  g1 CDATA #IMPLIED
  u2 CDATA #IMPLIED
  g2 CDATA #IMPLIED
  k CDATA #REQUIRED >


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

<!ELEMENT use (desc?,title?,(animate|animateTransform|animateColor)*) >
<!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 CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #IMPLIED
  height CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >

<!ELEMENT image (desc?,title?,(animate|animateTransform)*) >
<!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 CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >


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

<!ELEMENT symbol (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|
                   animate|animateTransform|animateColor)*)>
<!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' >

<!ELEMENT marker (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|
                   animate|animateTransform|animateColor)*)>
<!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) "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
  %graphicsElementEvents;
  system-required 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 ===================-->

<!ELEMENT clipPath (desc?,title?,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use)*) >
<!ATTLIST clipPath
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED >

<!ELEMENT mask (defs?,desc?,title?,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|switch|a|
                     animate)*)>
<!ATTLIST mask
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  maskUnits (userSpace | objectBoundingBox) "userSpace"
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #IMPLIED
  height CDATA #IMPLIED >


<!--=================== Built-in Types of Paint ===================-->

<!ELEMENT linearGradient (stop|animate|animateTransform)* >
<!ATTLIST linearGradient
  id ID #IMPLIED
  gradientUnits (userSpace | objectBoundingBox) 'userSpace'
  gradientTransform CDATA #IMPLIED
  x1 CDATA #IMPLIED
  y1 CDATA #IMPLIED
  x2 CDATA #IMPLIED
  y2 CDATA #IMPLIED
  spreadMethod (pad | reflect | repeat) "pad">

<!ELEMENT radialGradient (stop|animate|animateTransform)* >
<!ATTLIST radialGradient
  id ID #IMPLIED
  gradientUnits (userSpace | objectBoundingBox) 'userSpace'
  gradientTransform CDATA #IMPLIED
  cx CDATA #IMPLIED
  cy CDATA #IMPLIED
  r CDATA #IMPLIED
  fx CDATA #IMPLIED
  fy CDATA #IMPLIED>

<!ELEMENT stop (animate|animateColor)* >
<!ATTLIST stop
  id ID #IMPLIED
  style CDATA #IMPLIED
  offset CDATA #REQUIRED >

<!ELEMENT pattern (defs?,desc?,title?,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|image|svg|g|switch|a|
                     animate|animateTransform)*)>
<!ATTLIST pattern
  id ID #IMPLIED
  xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED
  class NMTOKENS #IMPLIED
  style CDATA #IMPLIED
  patternUnits (userSpace | 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' >


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

<!ELEMENT a (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a)*)>
<!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|parsed|replace) #FIXED 'replace'
  xlink:actuate (user|auto) #FIXED 'user'
  xlink:href CDATA #REQUIRED >


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

<!ELEMENT animate (desc?,title?) >
<!ATTLIST animate
  id ID #IMPLIED
  system-required CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #IMPLIED
  attribute CDATA #REQUIRED
  attributeType (xml|css) 'xml'
  begin CDATA #IMPLIED
  end CDATA #IMPLIED
  dur CDATA #IMPLIED
  repeatCount CDATA "1"
  repeatDur CDATA #IMPLIED
  beginEvent CDATA #IMPLIED
  endEvent CDATA #IMPLIED
  additive (true | false) "false"
  accumulate (true | false) "false"
  fill (remove | freeze) "remove"
  values CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  by CDATA #IMPLIED
  calcMode (discrete | linear | spline) "discrete"
  vtimes CDATA #IMPLIED
  interpSpline CDATA #IMPLIED >

<!ELEMENT animateMotion (desc?,title?) >
<!ATTLIST animateMotion
  id ID #IMPLIED
  system-required CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #IMPLIED
  motionPath CDATA #IMPLIED
  rotate CDATA #IMPLIED
  begin CDATA #IMPLIED
  end CDATA #IMPLIED
  dur CDATA #IMPLIED
  repeatCount CDATA "1"
  repeatDur CDATA #IMPLIED
  beginEvent CDATA #IMPLIED
  endEvent CDATA #IMPLIED
  fill (remove | freeze) "remove"
  values CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  by CDATA #IMPLIED
  calcMode (discrete | linear | spline) "discrete"
  vtimes CDATA #IMPLIED
  interpSpline CDATA #IMPLIED >

<!ELEMENT animateTransform (desc?,title?) >
<!ATTLIST animateTransform
  id ID #IMPLIED
  system-required CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #IMPLIED
  begin CDATA #IMPLIED
  end CDATA #IMPLIED
  dur CDATA #IMPLIED
  repeatCount CDATA "1"
  repeatDur CDATA #IMPLIED
  beginEvent CDATA #IMPLIED
  endEvent CDATA #IMPLIED
  additive (true | false) "false"
  accumulate (true | false) "false"
  fill (remove | freeze) "remove"
  values CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  by CDATA #IMPLIED
  calcMode (discrete | linear | spline) "discrete"
  vtimes CDATA #IMPLIED
  interpSpline CDATA #IMPLIED >

<!ELEMENT animateColor (desc?,title?) >
<!ATTLIST animateColor
  id ID #IMPLIED
  system-required CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #IMPLIED
  attribute CDATA #REQUIRED
  attributeType (xml|css) 'xml'
  begin CDATA #IMPLIED
  end CDATA #IMPLIED
  dur CDATA #IMPLIED
  repeatCount CDATA "1"
  repeatDur CDATA #IMPLIED
  beginEvent CDATA #IMPLIED
  endEvent CDATA #IMPLIED
  additive (true | false) "false"
  accumulate (true | false) "false"
  fill (remove | freeze) "remove"
  values CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  by CDATA #IMPLIED
  calcMode (discrete | linear | spline) "discrete"
  vtimes CDATA #IMPLIED
  interpSpline CDATA #IMPLIED >

<!ELEMENT animateFlipbook (desc?,title?,(animateFlipbookValue)*) >
<!ATTLIST animateFlipbook
  id ID #IMPLIED
  system-required CDATA #IMPLIED
  begin CDATA #IMPLIED
  end CDATA #IMPLIED
  dur CDATA #IMPLIED
  repeatCount CDATA "1"
  repeatDur CDATA #IMPLIED
  beginEvent CDATA #IMPLIED
  endEvent CDATA #IMPLIED
  fill (remove | freeze) "remove"
  vtimes CDATA #IMPLIED >

<!ELEMENT animateFlipbookValue EMPTY >
<!ATTLIST animateFlipbookValue
  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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >


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

<!ELEMENT script (#PCDATA)* >
<!ATTLIST script
  language CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >

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



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

<!ELEMENT cursor (desc?,title?) >
<!ATTLIST cursor
  id ID #IMPLIED
  system-required CDATA #IMPLIED
  x CDATA "0"
  y CDATA "0"
  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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED >


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

<!ELEMENT switch (defs?,desc?,title?,
                  (path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|foreignObject)*)>
<!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 CDATA #IMPLIED>

<!ELEMENT foreignObject (#PCDATA)* >
<!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 CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  %structured_text; >


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

<!ENTITY % filter_node_attributes
  "in CDATA #IMPLIED
  nodeId 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">

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

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

<!ELEMENT feFlood (animateColor)* >
<!ATTLIST feFlood
  %filter_node_attributes;
  style CDATA #IMPLIED>

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

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

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

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

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

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

<!ELEMENT feComposite EMPTY >
<!ATTLIST feComposite
  %filter_node_attributes;
  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|animateColor)*) >
<!ATTLIST feDiffuseLighting
  %filter_node_attributes;
  resultScale CDATA #IMPLIED
  surfaceScale CDATA #IMPLIED
  diffuseConstant CDATA #IMPLIED
  lightColor CDATA #IMPLIED>

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

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

<!ELEMENT feSpotLight (animate)* >
<!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)* >
<!ATTLIST feDisplacementMap
  %filter_node_attributes;
  scale CDATA #IMPLIED
  xChannelSelector (R | G | B | A) "A"
  yChannelSelector (R | G | B | A) "A"
  in2 CDATA #REQUIRED>

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

<!ELEMENT feImage (animateTransform)* >
<!ATTLIST feImage
  nodeId CDATA #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|parsed|replace) #FIXED 'parsed'
  xlink:actuate (user|auto) #FIXED 'auto'
  xlink:href CDATA #REQUIRED
  transform CDATA #IMPLIED>

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

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

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

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

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

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

<!ELEMENT feTurbulence (animate)* >
<!ATTLIST feTurbulence
  %filter_node_attributes;
  baseFrequency CDATA #IMPLIED
  numOctaves CDATA #IMPLIED
  type (fractalNoise | turbulence) "turbulence">