<!--
    This is the DTD for Scalable Vector Graphics (SVG) 1.0 (draft 20000202).
    The specification for SVG that corresponds to this DTD is available at:

        http://www.w3.org/2000/01/WD-SVG-20000202/

-->


<!--=================== 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?))?))?)" >

<!-- All elements have an ID. -->
<!ENTITY % stdAttrs
 "id ID #IMPLIED" >

<!-- Common attributes for elements that might contain character data content. -->
<!ENTITY % langSpaceAttrs
 "xml:lang NMTOKEN #IMPLIED
  xml:space (default|preserve) #IMPLIED" >

<!-- Common attributes for elements that can be styled. -->
<!ENTITY % stylingAttrs
 "class NMTOKENS #IMPLIED
  style CDATA #IMPLIED" >

<!-- Common attributes to check for system capabilities. -->
<!ENTITY % testAttrs
 "system-required NMTOKEN #IMPLIED
  system-language CDATA #IMPLIED" >

<!-- For most uses of URI referencing:
        standard XLink attributes other than xlink:href. -->
<!ENTITY % xlinkRefAttrs
 "xmlns:xlink CDATA #FIXED 'http://www.w3.org/2000/xlink/namespace/'
  xlink:type (simple|extended|locator|arc) 'simple' 
  xlink:role CDATA #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (new|embed|replace) 'embed'
  xlink:actuate (onRequest|onLoad) 'onLoad'" >

<!ENTITY % graphicsElementEvents
  "onfocusin CDATA #IMPLIED
   onfocusout 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|view|switch|a|altGlyphDef|
                   script|style|symbol|marker|clipPath|mask|
                   linearGradient|radialGradient|pattern|filter|cursor|font|
                   animate|set|animateMotion|animateColor|animateTransform
                   %ceExt;%svgExt;)*) >
<!ATTLIST svg
  xmlns CDATA #FIXED 'http://www.w3.org/Graphics/SVG/SVG-20000202.dtd'
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  %graphicsElementEvents;
  %documentEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED 
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  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|view|switch|a|altGlyphDef|
                   script|style|symbol|marker|clipPath|mask|
                   linearGradient|radialGradient|pattern|filter|cursor|font|
                   animate|set|animateMotion|animateColor|animateTransform
                   %ceExt;%gExt;)*) >
<!ATTLIST g
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED >

<!ENTITY % defsExt "" >
<!ELEMENT defs (
                   path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|view|switch|a|altGlyphDef|
                   script|style|symbol|marker|clipPath|mask|
                   linearGradient|radialGradient|pattern|filter|cursor|font|
                   animate|set|animateMotion|animateColor|animateTransform
                   %ceExt;%defsExt;)* >
<!ATTLIST defs
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  externalResourcesRequired CDATA #IMPLIED >


<!--=================== Shapes ===================-->

<!ENTITY % pathExt "" >
<!ELEMENT path (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%pathExt;)*) >
<!ATTLIST path
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  d CDATA #REQUIRED
  nominalLength CDATA #IMPLIED >

<!ENTITY % rectExt "" >
<!ELEMENT rect (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%rectExt;)*) >
<!ATTLIST rect
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
 transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  points CDATA #REQUIRED >

<!ENTITY % polygonExt "" >
<!ELEMENT polygon (%descTitle;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%polygonExt;)*) >
<!ATTLIST polygon
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  points CDATA #REQUIRED >


<!--=================== Text ===================-->

<!ENTITY % textExt "" >
<!ELEMENT text (#PCDATA|desc|title|
                tspan|tref|textPath|altGlyph|a|animate|set|
                animateMotion|animateColor|animateTransform
                %geExt;%textExt;)* >
<!ATTLIST text
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED >

<!ENTITY % tspanExt "" >
<!ELEMENT tspan (#PCDATA|tspan|tref|altGlyph|a|animate|set|animateColor
                %tspanExt;)* >
<!ATTLIST tspan
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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|a|animate|set|animateColor
                %textPathExt;)* >
<!ATTLIST textPath
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  startOffset CDATA "0"
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >

<!ENTITY % altGlyphExt "" >
<!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
<!ATTLIST altGlyph
  %stdAttrs;
  %langSpaceAttrs;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED >

<!ENTITY % altGlyphDefExt "" >
<!ELEMENT altGlyphDef (glyphSub %altGlyphDefExt;)* >
<!ATTLIST altGlyphDef
  %stdAttrs; >

<!ELEMENT glyphSub EMPTY >
<!ATTLIST glyphSub
  %stdAttrs;
  font CDATA #REQUIRED
  glyphRef CDATA #REQUIRED
  format CDATA #REQUIRED >

<!--=================== SVG Fonts ===================-->

<!ENTITY % fontExt "" >
<!ELEMENT font (%descTitle;,missing-glyph,(glyph|hkern|vkern
                   %fontExt;)*) >
<!ATTLIST font
  %stdAttrs;
  externalResourcesRequired CDATA #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
  %stdAttrs;
  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
  %stdAttrs;
  horiz-adv-x CDATA #IMPLIED
  vert-adv-y CDATA #IMPLIED >

<!ELEMENT hkern EMPTY >
<!ATTLIST hkern
  %stdAttrs;
  u1 CDATA #IMPLIED
  g1 CDATA #IMPLIED
  u2 CDATA #IMPLIED
  g2 CDATA #IMPLIED
  k CDATA #REQUIRED >

<!ELEMENT vkern EMPTY >
<!ATTLIST vkern
  %stdAttrs;
  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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  externalResourcesRequired CDATA #IMPLIED
  refX CDATA #IMPLIED
  refY CDATA #IMPLIED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  markerUnits (strokeWidth | userSpace | userSpaceOnUse) "strokeWidth"
  markerWidth  CDATA "3"
  markerHeight CDATA "3"
  orient CDATA "0" >


<!--========== Descriptions and Titles ==========-->

<!ELEMENT desc (#PCDATA)* >
<!ATTLIST desc
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  %structured_text; >

<!ELEMENT title (#PCDATA)* >
<!ATTLIST title
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  %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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  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
  externalResourcesRequired CDATA #IMPLIED >


<!ENTITY % radialGradientExt "" >
<!ELEMENT radialGradient (stop|animate|set|animateTransform
                   %radialGradientExt;)* >
<!ATTLIST radialGradient
  %stdAttrs;
  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
  externalResourcesRequired CDATA #IMPLIED >


<!ENTITY % stopExt "" >
<!ELEMENT stop (animate|set|animateColor
                   %stopExt;)* >
<!ATTLIST stop
  %stdAttrs;
  %stylingAttrs;
  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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  patternUnits (userSpace | userSpaceOnUse | objectBoundingBox) 'userSpace'
  patternTransform CDATA #IMPLIED
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED
  externalResourcesRequired CDATA #IMPLIED >



<!--=================== Linking ===================-->

<!ENTITY % aExt "" >
<!ELEMENT a       (#PCDATA|desc|title|defs|
                   path|text|rect|circle|ellipse|line|polyline|polygon|
                   use|image|svg|g|switch|a|
                   tspan|tref|textPath|altGlyph
                   %ceExt;%aExt;)* >
<!ATTLIST a
  %stdAttrs;
  xmlns:xlink CDATA #FIXED "http://www.w3.org/2000/xlink/namespace/"
  xlink:type (simple|extended|locator|arc) #FIXED "simple" 
  xlink:role CDATA #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (new|embed|replace) 'replace'
  xlink:actuate (onRequest|onLoad) #FIXED 'onRequest'
  xlink:href CDATA #REQUIRED
  target CDATA #IMPLIED >

<!ENTITY % viewExt "" >
<!ELEMENT view (%descTitle;%viewExt;) >
<!ATTLIST view
  %stdAttrs;
  viewBox CDATA #IMPLIED
  preserveAspectRatio CDATA 'xMidYMid meet'
  enableZoomAndPanControls (true | false) "true" 
  viewTarget CDATA #IMPLIED
  externalResourcesRequired CDATA #IMPLIED >


<!--=================== Animation ===================-->

<!ENTITY % animTargetAttrs
 "%xlinkRefAttrs;
  xlink:href CDATA #IMPLIED
  attributeName  CDATA  #REQUIRED
  attributeType  CDATA  #IMPLIED" >

<!ENTITY % animTimingAttrs
 "begin CDATA #IMPLIED 
  dur CDATA #IMPLIED
  restart (always | never | whenNotActive) 'always'
  repeatCount CDATA #IMPLIED 
  repeatDur CDATA #IMPLIED
  end 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
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs; >

<!ENTITY % setExt "" >
<!ELEMENT set (%descTitle;%setExt;) >
<!ATTLIST set
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  to CDATA #IMPLIED >

<!ENTITY % animateMotionExt "" >
<!ELEMENT animateMotion (%descTitle;%animateMotionExt;) >
<!ATTLIST animateMotion
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired 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
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs; >

<!ENTITY % animateTransformExt "" >
<!ELEMENT animateTransform (%descTitle;%animateTransformExt;) >
<!ATTLIST animateTransform
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED
  %animTargetAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs;
  type (translate | scale | rotate | skewX | skewY) "translate" >


<!--========== Defining Scripts and Declaring Styles ==========-->

<!ELEMENT script (#PCDATA)* >
<!ATTLIST script
  %stdAttrs;
  language CDATA #IMPLIED
  %xlinkRefAttrs;
  xlink:href CDATA #IMPLIED
  externalResourcesRequired CDATA #IMPLIED >

<!ELEMENT style (#PCDATA)* >
<!ATTLIST style 
  %stdAttrs;
  type CDATA "text/css" >



<!--=================== Custom cursors ===================-->

<!ELEMENT cursor (%descTitle;) >
<!ATTLIST cursor
  %stdAttrs;
  %testAttrs;
  x CDATA "0"
  y CDATA "0"
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED
  externalResourcesRequired CDATA #IMPLIED >


<!--=================== 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
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  externalResourcesRequired CDATA #IMPLIED >

<!ENTITY % foreignObjectExt "" >
<!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
<!ATTLIST foreignObject
  %stdAttrs;
  %langSpaceAttrs;
  %stylingAttrs;
  transform CDATA #IMPLIED
  %graphicsElementEvents;
  %testAttrs;
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  width CDATA #REQUIRED
  height CDATA #REQUIRED
  %structured_text; >



<!--=================== Metadata ===================-->

<!ENTITY % metadataExt "" >
<!ELEMENT metadata (#PCDATA %metadataExt;)* >
<!ATTLIST metadata
  %stdAttrs; >


<!--============== 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|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|
  feGaussianBlur|feImage|feMerge|
  feMorphology|feOffset|feSpecularLighting|
  feTile|feTurbulence|
  animate|set
  %filterExt;)* >
<!ATTLIST filter
  %stdAttrs;
  %langSpaceAttrs;
  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
  externalResourcesRequired CDATA #IMPLIED >


<!ELEMENT feBlend EMPTY >
<!ATTLIST feBlend
  %stdAttrs;
  %filter_node_attributes_with_in;
  mode (normal | multiply | screen | darken | lighten) "normal"
  in2 CDATA #REQUIRED >

<!ELEMENT feColorMatrix (animate|set)* >
<!ATTLIST feColorMatrix
  %stdAttrs;
  %filter_node_attributes_with_in;
  type (matrix | saturate | hueRotate | luminanceToAlpha) "matrix"
  values CDATA #IMPLIED >

<!ELEMENT feComponentTransfer (feFuncR?,feFuncG?,feFuncB?,feFuncA?) >
<!ATTLIST feComponentTransfer
  %stdAttrs;
  %filter_node_attributes_with_in; >

<!ELEMENT feFuncR (animate|set)* >
<!ATTLIST feFuncR
  %stdAttrs;
  %component_transfer_function_attributes; >

<!ELEMENT feFuncG (animate|set)* >
<!ATTLIST feFuncG
  %stdAttrs;
  %component_transfer_function_attributes; >

<!ELEMENT feFuncB (animate|set)* >
<!ATTLIST feFuncB
  %stdAttrs;
  %component_transfer_function_attributes; >

<!ELEMENT feFuncA (animate|set)* >
<!ATTLIST feFuncA
  %stdAttrs;
  %component_transfer_function_attributes; >

<!ELEMENT feComposite EMPTY >
<!ATTLIST feComposite
  %stdAttrs;
  %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 feConvolveMatrix (animate|set)* >
<!ATTLIST feConvolveMatrix
            %filter_node_attributes_with_in;
            order CDATA #REQUIRED
            kernelMatrix CDATA #REQUIRED
            divisor CDATA #IMPLIED
            targetX CDATA #IMPLIED
            targetY CDATA #IMPLIED
            edgeMode (duplicate|wrap|none) "duplicate" 
            kernelUnitLength CDATA #IMPLIED >

<!ELEMENT feDiffuseLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
<!ATTLIST feDiffuseLighting
  %stdAttrs;
  %filter_node_attributes_with_in;
  resultScale CDATA #IMPLIED
  surfaceScale CDATA #IMPLIED
  diffuseConstant CDATA #IMPLIED
  lightColor CDATA #IMPLIED >

<!ELEMENT feDistantLight (animate|set)* >
<!ATTLIST feDistantLight
  %stdAttrs;
  azimuth CDATA #IMPLIED
  elevation CDATA #IMPLIED >

<!ELEMENT fePointLight (animate|set)* >
<!ATTLIST fePointLight
  %stdAttrs;
  x CDATA #IMPLIED
  y CDATA #IMPLIED
  z CDATA #IMPLIED >

<!ELEMENT feSpotLight (animate|set)* >
<!ATTLIST feSpotLight
  %stdAttrs;
  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
  %stdAttrs;
  %filter_node_attributes_with_in;
  scale CDATA #IMPLIED
  xChannelSelector (R | G | B | A) "A"
  yChannelSelector (R | G | B | A) "A"
  in2 CDATA #REQUIRED >

<!ELEMENT feFlood (animate|set|animateColor)* >
<!ATTLIST feFlood
  %stdAttrs;
  %filter_node_attributes_with_in;
  style CDATA #IMPLIED >

<!ELEMENT feGaussianBlur (animate|set)* >
<!ATTLIST feGaussianBlur
  %stdAttrs;
  %filter_node_attributes_with_in;
  stdDeviation CDATA #IMPLIED >

<!ELEMENT feImage (animate|set|animateTransform)* >
<!ATTLIST feImage
  %stdAttrs;
  %filter_node_attributes;
  %xlinkRefAttrs;
  xlink:href CDATA #REQUIRED
  transform CDATA #IMPLIED
  externalResourcesRequired CDATA #IMPLIED >

<!ELEMENT feMerge (feMergeNode)* >
<!ATTLIST feMerge
  %stdAttrs;
  %filter_node_attributes; >

<!ELEMENT feMergeNode EMPTY >
<!ATTLIST feMergeNode
  %stdAttrs;
  in CDATA #IMPLIED >

<!ELEMENT feMorphology (animate|set)* >
<!ATTLIST feMorphology
  %stdAttrs;
  %filter_node_attributes_with_in;
  operator (erode | dilate) "erode"
  radius CDATA #IMPLIED >

<!ELEMENT feOffset (animate|set)* >
<!ATTLIST feOffset
  %stdAttrs;
  %filter_node_attributes_with_in;
  dx CDATA #IMPLIED
  dy CDATA #IMPLIED >

<!ELEMENT feSpecularLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
<!ATTLIST feSpecularLighting
  %stdAttrs;
  %filter_node_attributes_with_in;
  surfaceScale CDATA #IMPLIED
  specularConstant CDATA #IMPLIED
  specularExponent CDATA #IMPLIED
  lightColor CDATA #IMPLIED >

<!ELEMENT feTile EMPTY >
<!ATTLIST feTile
  %stdAttrs;
  %filter_node_attributes_with_in; >

<!ELEMENT feTurbulence (animate|set)* >
<!ATTLIST feTurbulence
  %stdAttrs;
  %filter_node_attributes_with_in;
  baseFrequencyX CDATA #IMPLIED
  baseFrequencyY CDATA #IMPLIED
  numOctaves CDATA #IMPLIED
  seed CDATA #IMPLIED
  stitchTiles (stitch | noStitch) "noStitch"
  type (fractalNoise | turbulence) "turbulence" >

