04 September 2001

Appendix A: DTD

Contents

This appendix is normative.

<!-- =====================================================================
  This is the DTD for SVG 1.0.

  The specification for SVG that corresponds to this DTD is available at:

    http://www.w3.org/TR/2001/REC-SVG-20010904/

  Copyright (c) 2000 W3C (MIT, INRIA, Keio), All Rights Reserved.

  For SVG 1.0:

    Namespace:
      http://www.w3.org/2000/svg  

    Public identifier:
      PUBLIC "-//W3C//DTD SVG 1.0//EN"

    URI for the DTD:
      http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd
============================================================================= -->


<!-- ==============================================================
     ENTITY DECLARATIONS: Data types 
     ============================================================== -->

<!ENTITY % BaselineShiftValue "CDATA">
    <!-- 'baseline-shift' property/attribute value (e.g., 'baseline', 'sub', etc.) -->

<!ENTITY % Boolean "(false | true)">
    <!-- feature specification -->

<!ENTITY % ClassList "CDATA">
    <!-- list of classes -->

<!ENTITY % ClipValue "CDATA">
    <!-- 'clip' property/attribute value (e.g., 'auto', rect(...)) -->

<!ENTITY % ClipPathValue "CDATA">
    <!-- 'clip-path' property/attribute value (e.g., 'none', %URI;) -->

<!ENTITY % ClipFillRule "(nonzero | evenodd | inherit)">
    <!-- 'clip-rule' or fill-rule property/attribute value -->

<!ENTITY % ContentType "CDATA">
    <!-- media type, as per [RFC2045] -->

<!ENTITY % Coordinate "CDATA">
    <!-- a <coordinate> -->

<!ENTITY % Coordinates "CDATA">
    <!-- a list of <coordinate>s -->

<!ENTITY % Color "CDATA">
    <!-- a <color> value -->

<!ENTITY % CursorValue "CDATA">
    <!-- 'cursor' property/attribute value (e.g., 'crosshair', %URI;) -->

<!ENTITY % EnableBackgroundValue "CDATA">
    <!-- 'enable-background' property/attribute value (e.g., 'new', 'accumulate') -->

<!ENTITY % ExtensionList "CDATA">
    <!-- extension list specification -->

<!ENTITY % FeatureList "CDATA">
    <!-- feature list specification -->

<!ENTITY % FilterValue "CDATA">
    <!-- 'filter' property/attribute value (e.g., 'none', %URI;) -->

<!ENTITY % FontFamilyValue "CDATA">
    <!-- 'font-family' property/attribute value (i.e., list of fonts) -->

<!ENTITY % FontSizeValue "CDATA">
    <!-- 'font-size' property/attribute value -->

<!ENTITY % FontSizeAdjustValue "CDATA">
    <!-- 'font-size-adjust' property/attribute value -->

<!ENTITY % GlyphOrientationHorizontalValue "CDATA">
    <!-- 'glyph-orientation-horizontal' property/attribute value (e.g., <angle>) -->

<!ENTITY % GlyphOrientationVerticalValue "CDATA">
    <!-- 'glyph-orientation-vertical' property/attribute value (e.g., 'auto', <angle>) -->

<!ENTITY % Integer "CDATA">
    <!-- a <integer> -->

<!ENTITY % KerningValue "CDATA">
    <!-- 'kerning' property/attribute value (e.g., auto | <length>) -->

<!ENTITY % LanguageCode "NMTOKEN">
    <!-- a language code, as per [RFC3066] -->

<!ENTITY % LanguageCodes "CDATA">
    <!-- comma-separated list of language codes, as per [RFC3066] -->

<!ENTITY % Length "CDATA">
    <!-- a <length> -->

<!ENTITY % Lengths "CDATA">
    <!-- a list of <length>s -->

<!ENTITY % LinkTarget "NMTOKEN">
    <!-- link to this target -->

<!ENTITY % MarkerValue "CDATA">
    <!-- 'marker' property/attribute value (e.g., 'none', %URI;) -->

<!ENTITY % MaskValue "CDATA">
    <!-- 'mask' property/attribute value (e.g., 'none', %URI;) -->

<!ENTITY % MediaDesc "CDATA">
    <!-- comma-separated list of media descriptors. -->

<!ENTITY % Number "CDATA">
    <!-- a <number> -->

<!ENTITY % NumberOptionalNumber "CDATA">
    <!-- list of <number>s, but at least one and at most two -->

<!ENTITY % NumberOrPercentage "CDATA">
    <!-- a <number> or a  <percentage> -->

<!ENTITY % Numbers "CDATA">
    <!-- a list of <number>s -->

<!ENTITY % OpacityValue "CDATA">
    <!-- opacity value (e.g., <number>) -->

<!ENTITY % Paint "CDATA">
    <!-- a 'fill' or 'stroke' property/attribute value: <paint> -->

<!ENTITY % PathData "CDATA">
    <!-- a path data specification -->

<!ENTITY % Points "CDATA">
    <!-- a list of points -->

<!ENTITY % PreserveAspectRatioSpec "CDATA">
    <!-- 'preserveAspectRatio' attribute specification -->

<!ENTITY % Script "CDATA">
    <!-- script expression -->

<!ENTITY % SpacingValue "CDATA">
    <!-- 'letter-spacing' or 'word-spacing' property/attribute value (e.g., normal | <length>) -->

<!ENTITY % StrokeDashArrayValue "CDATA">
    <!-- 'stroke-dasharray' property/attribute value (e.g., 'none', list of <number>s) -->

<!ENTITY % StrokeDashOffsetValue "CDATA">
    <!-- 'stroke-dashoffset' property/attribute value (e.g., 'none', <legnth>) -->

<!ENTITY % StrokeMiterLimitValue "CDATA">
    <!-- 'stroke-miterlimit' property/attribute value (e.g., <number>) -->

<!ENTITY % StrokeWidthValue "CDATA">
    <!-- 'stroke-width' property/attribute value (e.g., <length>) -->

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

<!ENTITY % StyleSheet "CDATA">
    <!-- style sheet data -->

<!ENTITY % SVGColor "CDATA">
    <!-- An SVG color value (RGB plus optional ICC) -->

<!ENTITY % Text "CDATA">
    <!-- arbitrary text string -->

<!ENTITY % TextDecorationValue "CDATA">
    <!-- 'text-decoration' property/attribute value (e.g., 'none', 'underline') -->

<!ENTITY % TransformList "CDATA">
    <!-- list of transforms -->

<!ENTITY % URI "CDATA">
    <!-- a Uniform Resource Identifier, see [URI] -->

<!ENTITY % ViewBoxSpec "CDATA">
    <!-- 'viewBox' attribute specification -->


<!-- ==============================================================
     ENTITY DECLARATIONS: Collections of common attributes 
     ============================================================== -->

<!-- All elements have an ID. -->
<!ENTITY % stdAttrs
 "id ID #IMPLIED
  xml:base %URI; #IMPLIED" >

<!-- Common attributes for elements that might contain character data content. -->
<!ENTITY % langSpaceAttrs
 "xml:lang %LanguageCode; #IMPLIED
  xml:space (default|preserve) #IMPLIED" >

<!-- Common attributes to check for system capabilities. -->
<!ENTITY % testAttrs
 "requiredFeatures %FeatureList; #IMPLIED
  requiredExtensions %ExtensionList; #IMPLIED
  systemLanguage %LanguageCodes; #IMPLIED" >

<!-- For most uses of URI referencing:
        standard XLink attributes other than xlink:href. -->
<!ENTITY % xlinkRefAttrs
 "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
  xlink:type (simple) #FIXED 'simple' 
  xlink:role %URI; #IMPLIED
  xlink:arcrole %URI; #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (other) 'other'
  xlink:actuate (onLoad) #FIXED 'onLoad'" >

<!-- Standard XLink attributes for uses of URI referencing where xlink:show is 'embed' -->
<!ENTITY % xlinkRefAttrsEmbed
 "xmlns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'
  xlink:type (simple) #FIXED 'simple' 
  xlink:role %URI; #IMPLIED
  xlink:arcrole %URI; #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (embed) 'embed'
  xlink:actuate (onLoad) #FIXED 'onLoad'" >

<!ENTITY % graphicsElementEvents
  "onfocusin %Script; #IMPLIED
   onfocusout %Script; #IMPLIED
   onactivate %Script; #IMPLIED
   onclick %Script; #IMPLIED
   onmousedown %Script; #IMPLIED
   onmouseup %Script; #IMPLIED
   onmouseover %Script; #IMPLIED
   onmousemove %Script; #IMPLIED
   onmouseout %Script; #IMPLIED
   onload %Script; #IMPLIED" >

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

<!ENTITY % animationEvents
  "onbegin %Script; #IMPLIED
   onend %Script; #IMPLIED
   onrepeat %Script; #IMPLIED" >

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


<!-- ==============================================================
     ENTITY DECLARATIONS: Collections of presentation attributes 
     ============================================================== -->

<!-- The following presentation attributes have to do with specifying color. -->
<!ENTITY % PresentationAttributes-Color
  "color %Color; #IMPLIED
   color-interpolation (auto | sRGB | linearRGB | inherit) #IMPLIED
   color-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED " >

<!-- The following presentation attributes apply to container elements. -->
<!ENTITY % PresentationAttributes-Containers
  "enable-background %EnableBackgroundValue; #IMPLIED " >

<!-- The following presentation attributes apply to 'feFlood' elements. -->
<!ENTITY % PresentationAttributes-feFlood
  "flood-color %SVGColor; #IMPLIED
   flood-opacity %OpacityValue; #IMPLIED " >

<!-- The following presentation attributes apply to filling and stroking operations. -->
<!ENTITY % PresentationAttributes-FillStroke
  "fill %Paint; #IMPLIED
   fill-opacity %OpacityValue; #IMPLIED
   fill-rule %ClipFillRule; #IMPLIED
   stroke %Paint; #IMPLIED
   stroke-dasharray %StrokeDashArrayValue; #IMPLIED
   stroke-dashoffset %StrokeDashOffsetValue; #IMPLIED
   stroke-linecap (butt | round | square | inherit) #IMPLIED
   stroke-linejoin (miter | round | bevel | inherit) #IMPLIED
   stroke-miterlimit %StrokeMiterLimitValue; #IMPLIED
   stroke-opacity %OpacityValue; #IMPLIED
   stroke-width %StrokeWidthValue; #IMPLIED " >

<!-- The following presentation attributes apply to filter primitives. -->
<!ENTITY % PresentationAttributes-FilterPrimitives
  "color-interpolation-filters (auto | sRGB | linearRGB | inherit) #IMPLIED " >

<!-- The following presentation attributes have to do with selecting a font to use. -->
<!ENTITY % PresentationAttributes-FontSpecification
  "font-family %FontFamilyValue; #IMPLIED
   font-size %FontSizeValue; #IMPLIED
   font-size-adjust %FontSizeAdjustValue; #IMPLIED
   font-stretch (normal | wider | narrower | ultra-condensed | extra-condensed |
                 condensed | semi-condensed | semi-expanded | expanded |
                 extra-expanded | ultra-expanded | inherit) #IMPLIED
   font-style (normal | italic | oblique | inherit) #IMPLIED
   font-variant (normal | small-caps | inherit) #IMPLIED
   font-weight (normal | bold | bolder | lighter | 100 | 200 | 300 |
               400 | 500 | 600 | 700 | 800 | 900 | inherit) #IMPLIED " >

<!-- The following presentation attributes apply to gradient 'stop' elements. -->
<!ENTITY % PresentationAttributes-Gradients
  "stop-color %SVGColor; #IMPLIED
   stop-opacity %OpacityValue; #IMPLIED " >

<!-- The following presentation attributes apply to graphics elements. -->
<!ENTITY % PresentationAttributes-Graphics
  "clip-path %ClipPathValue; #IMPLIED
   clip-rule %ClipFillRule; #IMPLIED
   cursor %CursorValue; #IMPLIED
   display (inline | block | list-item | run-in | compact | marker |
            table | inline-table | table-row-group | table-header-group |
            table-footer-group | table-row | table-column-group | table-column |
            table-cell | table-caption | none | inherit) #IMPLIED
   filter %FilterValue; #IMPLIED
   image-rendering (auto | optimizeSpeed | optimizeQuality | inherit) #IMPLIED
   mask %MaskValue; #IMPLIED
   opacity %OpacityValue; #IMPLIED
   pointer-events (visiblePainted | visibleFill | visibleStroke | visible |
                   painted | fill | stroke | all | none | inherit) #IMPLIED
   shape-rendering (auto | optimizeSpeed | crispEdges | geometricPrecision | inherit) #IMPLIED
   text-rendering (auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit) #IMPLIED
   visibility (visible | hidden | inherit) #IMPLIED " >

<!-- The following presentation attributes apply to 'image' elements. -->
<!ENTITY % PresentationAttributes-Images
  "color-profile CDATA #IMPLIED " >

<!--The following presentation attributes apply to 'feDiffuseLighting' and 'feSpecularLighting' elements. -->
<!ENTITY % PresentationAttributes-LightingEffects
  "lighting-color %SVGColor; #IMPLIED " >

<!-- The following presentation attributes apply to marker operations. -->
<!ENTITY % PresentationAttributes-Markers
  "marker-start %MarkerValue; #IMPLIED
   marker-mid %MarkerValue; #IMPLIED
   marker-end %MarkerValue; #IMPLIED " >

<!-- The following presentation attributes apply to text content elements. -->
<!ENTITY % PresentationAttributes-TextContentElements
  "alignment-baseline (baseline | top | before-edge | text-top | text-before-edge |
                        middle | bottom | after-edge | text-bottom | text-after-edge |
                        ideographic | lower | hanging | mathematical | inherit) #IMPLIED
   baseline-shift %BaselineShiftValue; #IMPLIED
   direction (ltr | rtl | inherit) #IMPLIED
   dominant-baseline (auto | autosense-script | no-change | reset|
                      ideographic | lower | hanging | mathematical | inherit ) #IMPLIED
   glyph-orientation-horizontal %GlyphOrientationHorizontalValue; #IMPLIED
   glyph-orientation-vertical %GlyphOrientationVerticalValue; #IMPLIED
   kerning %KerningValue; #IMPLIED
   letter-spacing %SpacingValue; #IMPLIED
   text-anchor (start | middle | end | inherit) #IMPLIED
   text-decoration %TextDecorationValue; #IMPLIED
   unicode-bidi (normal | embed | bidi-override | inherit) #IMPLIED
   word-spacing %SpacingValue; #IMPLIED " >

<!-- The following presentation attributes apply to 'text' elements. -->
<!ENTITY % PresentationAttributes-TextElements
  "writing-mode (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit) #IMPLIED " >

<!-- The following presentation attributes apply to elements that establish viewports. -->
<!ENTITY % PresentationAttributes-Viewports
  "clip %ClipValue; #IMPLIED
   overflow (visible | hidden | scroll | auto | inherit) #IMPLIED " >

<!--The following represents the complete list of presentation attributes. -->
<!ENTITY % PresentationAttributes-All
  "%PresentationAttributes-Color;
   %PresentationAttributes-Containers;
   %PresentationAttributes-feFlood;
   %PresentationAttributes-FillStroke;
   %PresentationAttributes-FilterPrimitives;
   %PresentationAttributes-FontSpecification;
   %PresentationAttributes-Gradients;
   %PresentationAttributes-Graphics;
   %PresentationAttributes-Images;
   %PresentationAttributes-LightingEffects;
   %PresentationAttributes-Markers;
   %PresentationAttributes-TextContentElements;
   %PresentationAttributes-TextElements;
   %PresentationAttributes-Viewports;" >



<!-- ==============================================================
     ENTITY DECLARATIONS: DTD extensions 
     ============================================================== -->

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


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Document Structure 
     ============================================================== -->

<!ENTITY % svgExt "" >
<!ELEMENT svg (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%svgExt;)* >
<!ATTLIST svg
  xmlns CDATA #FIXED "http://www.w3.org/2000/svg"
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED 
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  viewBox %ViewBoxSpec; #IMPLIED
  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
  zoomAndPan (disable | magnify) 'magnify'
  %graphicsElementEvents;
  %documentEvents;
  version %Number; #FIXED "1.0"
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #IMPLIED
  height %Length; #IMPLIED
  contentScriptType %ContentType; "text/ecmascript"
  contentStyleType %ContentType; "text/css" >

<!ENTITY % gExt "" >
<!ELEMENT g (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%gExt;)* >
<!ATTLIST g
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;  >

<!ENTITY % defsExt "" >
<!ELEMENT defs (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%defsExt;)* >
<!ATTLIST defs
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;  >

<!ENTITY % descExt "" >
<!ELEMENT desc (#PCDATA %descExt;)* >
<!ATTLIST desc
  %stdAttrs;
  %langSpaceAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %StructuredText; >

<!ENTITY % titleExt "" >
<!ELEMENT title (#PCDATA %titleExt;)* >
<!ATTLIST title
  %stdAttrs;
  %langSpaceAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %StructuredText; >

<!ENTITY % symbolExt "" >
<!ELEMENT symbol (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%symbolExt;)* >
<!ATTLIST symbol
  %stdAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  viewBox %ViewBoxSpec; #IMPLIED
  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
  %graphicsElementEvents; >

<!ENTITY % useExt "" >
<!ELEMENT use (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                   %geExt;%useExt;)*) >
<!ATTLIST use
  %stdAttrs;
  %xlinkRefAttrsEmbed;
  xlink:href %URI; #REQUIRED
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #IMPLIED
  height %Length; #IMPLIED >

<!ENTITY % imageExt "" >
<!ELEMENT image (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                   %geExt;%imageExt;)*) >
<!ATTLIST image
  %stdAttrs;
  %xlinkRefAttrsEmbed;
  xlink:href %URI; #REQUIRED
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-Images;
  %PresentationAttributes-Viewports;
  transform %TransformList; #IMPLIED
  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
  %graphicsElementEvents;
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #REQUIRED
  height %Length; #REQUIRED >

<!ENTITY % switchExt "" >
<!ELEMENT switch (%descTitleMetadata;,
                  (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;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents; >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Styling 
     ============================================================== -->

<!ELEMENT style (#PCDATA) >
<!ATTLIST style 
  %stdAttrs;
  xml:space (preserve) #FIXED "preserve"
  type %ContentType; #REQUIRED
  media %MediaDesc; #IMPLIED
  title %Text; #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Paths
     ============================================================== -->

<!ENTITY % pathExt "" >
<!ELEMENT path (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%pathExt;)*) >
<!ATTLIST path
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-Markers;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  d %PathData; #REQUIRED
  pathLength %Number; #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Basic Shapes
     ============================================================== -->

<!ENTITY % rectExt "" >
<!ELEMENT rect (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%rectExt;)*) >
<!ATTLIST rect
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #REQUIRED
  height %Length; #REQUIRED
  rx %Length; #IMPLIED
  ry %Length; #IMPLIED >

<!ENTITY % circleExt "" >
<!ELEMENT circle (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%circleExt;)*) >
<!ATTLIST circle
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  cx %Coordinate; #IMPLIED
  cy %Coordinate; #IMPLIED
  r %Length; #REQUIRED >

<!ENTITY % ellipseExt "" >
<!ELEMENT ellipse (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%ellipseExt;)*) >
<!ATTLIST ellipse
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  cx %Coordinate; #IMPLIED
  cy %Coordinate; #IMPLIED
  rx %Length; #REQUIRED
  ry %Length; #REQUIRED >

<!ENTITY % lineExt "" >
<!ELEMENT line (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%lineExt;)*) >
<!ATTLIST line
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-Markers;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  x1 %Coordinate; #IMPLIED
  y1 %Coordinate; #IMPLIED
  x2 %Coordinate; #IMPLIED
  y2 %Coordinate; #IMPLIED >

<!ENTITY % polylineExt "" >
<!ELEMENT polyline (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%polylineExt;)*) >
<!ATTLIST polyline
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-Markers;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  points %Points; #REQUIRED >

<!ENTITY % polygonExt "" >
<!ELEMENT polygon (%descTitleMetadata;,(animate|set|animateMotion|animateColor|animateTransform
                %geExt;%polygonExt;)*) >
<!ATTLIST polygon
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-Markers;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  points %Points; #REQUIRED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Text
     ============================================================== -->

<!ENTITY % textExt "" >
<!ELEMENT text (#PCDATA|desc|title|metadata|
                tspan|tref|textPath|altGlyph|a|animate|set|
                animateMotion|animateColor|animateTransform
                %geExt;%textExt;)* >
<!ATTLIST text
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-FontSpecification;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-TextContentElements;
  %PresentationAttributes-TextElements;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  x %Coordinates; #IMPLIED
  y %Coordinates; #IMPLIED
  dx %Lengths; #IMPLIED
  dy %Lengths; #IMPLIED
  rotate %Numbers; #IMPLIED
  textLength %Length; #IMPLIED
  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >

<!ENTITY % tspanExt "" >
<!ELEMENT tspan (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
                %tspanExt;)* >
<!ATTLIST tspan
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-FontSpecification;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-TextContentElements;
  %graphicsElementEvents;
  x %Coordinates; #IMPLIED
  y %Coordinates; #IMPLIED
  dx %Lengths; #IMPLIED
  dy %Lengths; #IMPLIED
  rotate %Numbers; #IMPLIED
  textLength %Length; #IMPLIED
  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >

<!ENTITY % trefExt "" >
<!ELEMENT tref (desc|title|metadata|animate|set|animateColor
                %trefExt;)* >
<!ATTLIST tref
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #REQUIRED
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-FontSpecification;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-TextContentElements;
  %graphicsElementEvents;
  x %Coordinates; #IMPLIED
  y %Coordinates; #IMPLIED
  dx %Lengths; #IMPLIED
  dy %Lengths; #IMPLIED
  rotate %Numbers; #IMPLIED
  textLength %Length; #IMPLIED
  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED >

<!ENTITY % textPathExt "" >
<!ELEMENT textPath (#PCDATA|desc|title|metadata|tspan|tref|altGlyph|a|animate|set|animateColor
                %textPathExt;)* >
<!ATTLIST textPath
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #REQUIRED
  %langSpaceAttrs;
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-FontSpecification;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-TextContentElements;
  %graphicsElementEvents;
  startOffset %Length; #IMPLIED
  textLength %Length; #IMPLIED
  lengthAdjust (spacing|spacingAndGlyphs) #IMPLIED
  method (align|stretch) #IMPLIED
  spacing (auto|exact) #IMPLIED >

<!ENTITY % altGlyphExt "" >
<!ELEMENT altGlyph (#PCDATA %altGlyphExt;)* >
<!ATTLIST altGlyph
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED 
  glyphRef CDATA #IMPLIED
  format CDATA #IMPLIED
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-FontSpecification;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-TextContentElements;
  %graphicsElementEvents;
  x %Coordinates; #IMPLIED
  y %Coordinates; #IMPLIED
  dx %Lengths; #IMPLIED
  dy %Lengths; #IMPLIED
  rotate %Numbers; #IMPLIED >

<!ENTITY % altGlyphDefExt "" >
<!ELEMENT altGlyphDef ((glyphRef+|altGlyphItem+) %altGlyphDefExt;) >
<!ATTLIST altGlyphDef
  %stdAttrs; >

<!ENTITY % altGlyphItemExt "" >
<!ELEMENT altGlyphItem (glyphRef+ %altGlyphItemExt;) >
<!ATTLIST altGlyphItem
  %stdAttrs; >

<!ELEMENT glyphRef EMPTY >
<!ATTLIST glyphRef
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-FontSpecification;
  glyphRef CDATA #IMPLIED
  format CDATA #IMPLIED
  x %Number; #IMPLIED
  y %Number; #IMPLIED
  dx %Number; #IMPLIED
  dy %Number; #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Painting: Filling, Stroking and Marker Symbols 
     ============================================================== -->

<!ENTITY % markerExt "" >
<!ELEMENT marker (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%markerExt;)* >
<!ATTLIST marker
  %stdAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  viewBox %ViewBoxSpec; #IMPLIED
  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
  refX %Coordinate; #IMPLIED
  refY %Coordinate; #IMPLIED
  markerUnits (strokeWidth | userSpaceOnUse) #IMPLIED
  markerWidth  %Length; #IMPLIED
  markerHeight %Length; #IMPLIED
  orient CDATA #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Color 
     ============================================================== -->

<!ELEMENT color-profile (%descTitleMetadata;) >
<!ATTLIST color-profile 
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  local CDATA #IMPLIED  
  name CDATA #REQUIRED
  rendering-intent (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric) "auto" >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Gradients and Patterns 
     ============================================================== -->

<!ENTITY % linearGradientExt "" >
<!ELEMENT linearGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
                   %linearGradientExt;)*) >
<!ATTLIST linearGradient
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-Gradients;
  gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  gradientTransform %TransformList; #IMPLIED
  x1 %Coordinate; #IMPLIED
  y1 %Coordinate; #IMPLIED
  x2 %Coordinate; #IMPLIED
  y2 %Coordinate; #IMPLIED
  spreadMethod (pad | reflect | repeat) #IMPLIED >


<!ENTITY % radialGradientExt "" >
<!ELEMENT radialGradient (%descTitleMetadata;,(stop|animate|set|animateTransform
                   %radialGradientExt;)*) >
<!ATTLIST radialGradient
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-Gradients;
  gradientUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  gradientTransform %TransformList; #IMPLIED
  cx %Coordinate; #IMPLIED
  cy %Coordinate; #IMPLIED
  r %Length; #IMPLIED
  fx %Coordinate; #IMPLIED
  fy %Coordinate; #IMPLIED
  spreadMethod (pad | reflect | repeat) #IMPLIED >


<!ENTITY % stopExt "" >
<!ELEMENT stop (animate|set|animateColor
                   %stopExt;)* >
<!ATTLIST stop
  %stdAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-Gradients;
  offset %NumberOrPercentage; #REQUIRED >

<!ENTITY % patternExt "" >
<!ELEMENT pattern (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%patternExt;)* >
<!ATTLIST pattern
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  viewBox %ViewBoxSpec; #IMPLIED
  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
  patternUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  patternContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  patternTransform %TransformList; #IMPLIED
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #IMPLIED
  height %Length; #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Clipping, Masking and Compositing 
     ============================================================== -->

<!ENTITY % clipPathExt "" >
<!ELEMENT clipPath (%descTitleMetadata;,
                    (path|text|rect|circle|ellipse|line|polyline|polygon|
                     use|animate|set|animateMotion|animateColor|animateTransform
                     %ceExt;%clipPathExt;)*) >
<!ATTLIST clipPath
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FillStroke;
  %PresentationAttributes-FontSpecification;
  %PresentationAttributes-Graphics;
  %PresentationAttributes-TextContentElements;
  %PresentationAttributes-TextElements;
  transform %TransformList; #IMPLIED
  clipPathUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED >

<!ENTITY % maskExt "" >
<!ELEMENT mask (desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%maskExt;)*  >
<!ATTLIST mask
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  maskUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  maskContentUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #IMPLIED
  height %Length; #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Filter Effects
     ============================================================== -->

<!ENTITY % filterExt "" >
<!ELEMENT filter (%descTitleMetadata;,(feBlend|feFlood|
  feColorMatrix|feComponentTransfer|
  feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|
  feGaussianBlur|feImage|feMerge|
  feMorphology|feOffset|feSpecularLighting|
  feTile|feTurbulence|
  animate|set
  %filterExt;)*) >
<!ATTLIST filter
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  filterUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  primitiveUnits (userSpaceOnUse | objectBoundingBox) #IMPLIED
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #IMPLIED
  height %Length; #IMPLIED
  filterRes %NumberOptionalNumber; #IMPLIED >

<!ENTITY % filter_primitive_attributes
  "x %Coordinate; #IMPLIED
   y %Coordinate; #IMPLIED
   width %Length; #IMPLIED
   height %Length; #IMPLIED
   result CDATA #IMPLIED" >

<!ENTITY % filter_primitive_attributes_with_in
  "%filter_primitive_attributes;
   in CDATA #IMPLIED">

<!ELEMENT feDistantLight (animate|set)* >
<!ATTLIST feDistantLight
  %stdAttrs;
  azimuth %Number; #IMPLIED
  elevation %Number; #IMPLIED >

<!ELEMENT fePointLight (animate|set)* >
<!ATTLIST fePointLight
  %stdAttrs;
  x %Number; #IMPLIED
  y %Number; #IMPLIED
  z %Number; #IMPLIED >

<!ELEMENT feSpotLight (animate|set)* >
<!ATTLIST feSpotLight
  %stdAttrs;
  x %Number; #IMPLIED
  y %Number; #IMPLIED
  z %Number; #IMPLIED
  pointsAtX %Number; #IMPLIED
  pointsAtY %Number; #IMPLIED
  pointsAtZ %Number; #IMPLIED
  specularExponent %Number; #IMPLIED
  limitingConeAngle %Number; #IMPLIED >

<!ELEMENT feBlend (animate|set)* >
<!ATTLIST feBlend
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  in2 CDATA #REQUIRED
  mode (normal | multiply | screen | darken | lighten) "normal" >

<!ELEMENT feColorMatrix (animate|set)* >
<!ATTLIST feColorMatrix
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  type (matrix | saturate | hueRotate | luminanceToAlpha) "matrix"
  values CDATA #IMPLIED >

<!ELEMENT feComponentTransfer (feFuncR?,feFuncG?,feFuncB?,feFuncA?) >
<!ATTLIST feComponentTransfer
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in; >

<!ENTITY % component_transfer_function_attributes
  "type (identity | table | discrete | linear | gamma) #REQUIRED
   tableValues CDATA #IMPLIED
   slope %Number; #IMPLIED
   intercept %Number; #IMPLIED
   amplitude %Number; #IMPLIED
   exponent %Number; #IMPLIED
   offset %Number; #IMPLIED" >

<!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 (animate|set)* >
<!ATTLIST feComposite
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  in2 CDATA #REQUIRED
  operator (over | in | out | atop | xor | arithmetic) "over"
  k1 %Number; #IMPLIED
  k2 %Number; #IMPLIED
  k3 %Number; #IMPLIED
  k4 %Number; #IMPLIED >

<!ELEMENT feConvolveMatrix (animate|set)* >
<!ATTLIST feConvolveMatrix
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  order %NumberOptionalNumber; #REQUIRED
  kernelMatrix CDATA #REQUIRED
  divisor %Number; #IMPLIED
  bias %Number; #IMPLIED
  targetX %Integer; #IMPLIED
  targetY %Integer; #IMPLIED
  edgeMode (duplicate|wrap|none) "duplicate" 
  kernelUnitLength %NumberOptionalNumber; #IMPLIED 
  preserveAlpha %Boolean; #IMPLIED >

<!ELEMENT feDiffuseLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
<!ATTLIST feDiffuseLighting
  %stdAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FilterPrimitives;
  %PresentationAttributes-LightingEffects;
  %filter_primitive_attributes_with_in;
  surfaceScale %Number; #IMPLIED
  diffuseConstant %Number; #IMPLIED 
  kernelUnitLength %NumberOptionalNumber; #IMPLIED >

<!ELEMENT feDisplacementMap (animate|set)* >
<!ATTLIST feDisplacementMap
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  in2 CDATA #REQUIRED
  scale %Number; #IMPLIED
  xChannelSelector (R | G | B | A) "A"
  yChannelSelector (R | G | B | A) "A" >

<!ELEMENT feFlood (animate|set|animateColor)* >
<!ATTLIST feFlood
  %stdAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-feFlood;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in; >

<!ELEMENT feGaussianBlur (animate|set)* >
<!ATTLIST feGaussianBlur
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  stdDeviation %NumberOptionalNumber; #IMPLIED >

<!ELEMENT feImage (animate|set|animateTransform)* >
<!ATTLIST feImage
  %stdAttrs;
  %xlinkRefAttrsEmbed;
  xlink:href %URI; #REQUIRED
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All; >

<!ELEMENT feMerge (feMergeNode)* >
<!ATTLIST feMerge
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes; >

<!ELEMENT feMergeNode (animate|set)* >
<!ATTLIST feMergeNode
  %stdAttrs;
  in CDATA #IMPLIED >

<!ELEMENT feMorphology (animate|set)* >
<!ATTLIST feMorphology
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  operator (erode | dilate) "erode"
  radius %NumberOptionalNumber; #IMPLIED >

<!ELEMENT feOffset (animate|set)* >
<!ATTLIST feOffset
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in;
  dx %Number; #IMPLIED
  dy %Number; #IMPLIED >

<!ELEMENT feSpecularLighting ((feDistantLight|fePointLight|feSpotLight),(animate|set|animateColor)*) >
<!ATTLIST feSpecularLighting
  %stdAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-Color;
  %PresentationAttributes-FilterPrimitives;
  %PresentationAttributes-LightingEffects;
  %filter_primitive_attributes_with_in;
  surfaceScale %Number; #IMPLIED
  specularConstant %Number; #IMPLIED
  specularExponent %Number; #IMPLIED 
  kernelUnitLength %NumberOptionalNumber; #IMPLIED >

<!ELEMENT feTile (animate|set)* >
<!ATTLIST feTile
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes_with_in; >

<!ELEMENT feTurbulence (animate|set)* >
<!ATTLIST feTurbulence
  %stdAttrs;
  %PresentationAttributes-FilterPrimitives;
  %filter_primitive_attributes;
  baseFrequency %NumberOptionalNumber; #IMPLIED
  numOctaves %Integer; #IMPLIED
  seed %Number; #IMPLIED
  stitchTiles (stitch | noStitch) "noStitch"
  type (fractalNoise | turbulence) "turbulence" >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Interactivity 
     ============================================================== -->

<!ELEMENT cursor (%descTitleMetadata;) >
<!ATTLIST cursor
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #REQUIRED
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Linking
     ============================================================== -->

<!ENTITY % aExt "" >
<!ELEMENT a       (#PCDATA|desc|title|metadata|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|
                   color-profile|font-face
                   %ceExt;%aExt;)* >
<!ATTLIST a
  %stdAttrs;
  xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
  xlink:type (simple) #FIXED "simple" 
  xlink:role %URI; #IMPLIED
  xlink:arcrole %URI; #IMPLIED
  xlink:title CDATA #IMPLIED
  xlink:show (new|replace) 'replace'
  xlink:actuate (onRequest) #FIXED 'onRequest'
  xlink:href %URI; #REQUIRED
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  target %LinkTarget; #IMPLIED >

<!ENTITY % viewExt "" >
<!ELEMENT view (%descTitleMetadata;%viewExt;) >
<!ATTLIST view
  %stdAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  viewBox %ViewBoxSpec; #IMPLIED
  preserveAspectRatio %PreserveAspectRatioSpec; 'xMidYMid meet'
  zoomAndPan (disable | magnify) 'magnify' 
  viewTarget CDATA #IMPLIED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Scripting 
     ============================================================== -->

<!ELEMENT script (#PCDATA) >
<!ATTLIST script
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  externalResourcesRequired %Boolean; #IMPLIED
  type %ContentType; #REQUIRED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Animation 
     ============================================================== -->

<!ENTITY % animElementAttrs
 "%xlinkRefAttrs;
  xlink:href %URI; #IMPLIED" >

<!ENTITY % animAttributeAttrs
 "attributeName  CDATA  #REQUIRED
  attributeType  CDATA  #IMPLIED" >

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

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

<!ENTITY % animAdditionAttrs
 "additive       (replace | sum) 'replace'
  accumulate     (none | sum) 'none'" >

<!ENTITY % animateExt "" >
<!ELEMENT animate (%descTitleMetadata;%animateExt;) >
<!ATTLIST animate
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  %animationEvents;
  %animElementAttrs;
  %animAttributeAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs; >

<!ENTITY % setExt "" >
<!ELEMENT set (%descTitleMetadata;%setExt;) >
<!ATTLIST set
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  %animationEvents;
  %animElementAttrs;
  %animAttributeAttrs;
  %animTimingAttrs;
  to CDATA #IMPLIED >

<!ENTITY % animateMotionExt "" >
<!ELEMENT animateMotion (%descTitleMetadata;,mpath? %animateMotionExt;) >
<!ATTLIST animateMotion
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  %animationEvents;
  %animElementAttrs;
  %animTimingAttrs;
  calcMode (discrete | linear | paced | spline) 'paced'
  values CDATA #IMPLIED
  keyTimes CDATA #IMPLIED
  keySplines CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  by CDATA #IMPLIED
  %animAdditionAttrs;
  path CDATA #IMPLIED
  keyPoints CDATA #IMPLIED
  rotate CDATA #IMPLIED
  origin CDATA #IMPLIED >

<!ENTITY % mpathExt "" >
<!ELEMENT mpath (%descTitleMetadata;%mpathExt;) >
<!ATTLIST mpath
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #REQUIRED
  externalResourcesRequired %Boolean; #IMPLIED >

<!ENTITY % animateColorExt "" >
<!ELEMENT animateColor (%descTitleMetadata;%animateColorExt;) >
<!ATTLIST animateColor
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  %animationEvents;
  %animElementAttrs;
  %animAttributeAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs; >

<!ENTITY % animateTransformExt "" >
<!ELEMENT animateTransform (%descTitleMetadata;%animateTransformExt;) >
<!ATTLIST animateTransform
  %stdAttrs;
  %testAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  %animationEvents;
  %animElementAttrs;
  %animAttributeAttrs;
  %animTimingAttrs;
  %animValueAttrs;
  %animAdditionAttrs;
  type (translate | scale | rotate | skewX | skewY) "translate" >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Fonts 
     ============================================================== -->

<!ENTITY % fontExt "" >
<!ELEMENT font (%descTitleMetadata;,font-face,
                   missing-glyph,(glyph|hkern|vkern %fontExt;)*) >
<!ATTLIST font
  %stdAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  horiz-origin-x %Number; #IMPLIED
  horiz-origin-y %Number; #IMPLIED
  horiz-adv-x %Number; #REQUIRED
  vert-origin-x %Number; #IMPLIED
  vert-origin-y %Number; #IMPLIED
  vert-adv-y %Number; #IMPLIED >

<!ENTITY % glyphExt "" >
<!ELEMENT glyph (desc|title|metadata|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|
                   color-profile|font-face
                   %glyphExt;)* >
<!ATTLIST glyph
  %stdAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  unicode CDATA #IMPLIED
  glyph-name CDATA #IMPLIED
  d %PathData; #IMPLIED
  orientation CDATA #IMPLIED
  arabic-form CDATA #IMPLIED
  lang %LanguageCodes; #IMPLIED
  horiz-adv-x %Number; #IMPLIED
  vert-origin-x %Number; #IMPLIED
  vert-origin-y %Number; #IMPLIED
  vert-adv-y %Number; #IMPLIED >

<!ENTITY % missing-glyphExt "" >
<!ELEMENT missing-glyph (desc|title|metadata|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|
                   color-profile|font-face
                   %missing-glyphExt;)* >
<!ATTLIST missing-glyph
  %stdAttrs;
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  d %PathData; #IMPLIED
  horiz-adv-x %Number; #IMPLIED
  vert-origin-x %Number; #IMPLIED
  vert-origin-y %Number; #IMPLIED
  vert-adv-y %Number; #IMPLIED >

<!ELEMENT hkern EMPTY >
<!ATTLIST hkern
  %stdAttrs;
  u1 CDATA #IMPLIED
  g1 CDATA #IMPLIED
  u2 CDATA #IMPLIED
  g2 CDATA #IMPLIED
  k %Number; #REQUIRED >

<!ELEMENT vkern EMPTY >
<!ATTLIST vkern
  %stdAttrs;
  u1 CDATA #IMPLIED
  g1 CDATA #IMPLIED
  u2 CDATA #IMPLIED
  g2 CDATA #IMPLIED
  k %Number; #REQUIRED >

<!ELEMENT font-face (%descTitleMetadata;,font-face-src?,definition-src?) >
<!ATTLIST font-face 
  %stdAttrs;
  font-family CDATA #IMPLIED
  font-style CDATA #IMPLIED
  font-variant CDATA #IMPLIED
  font-weight CDATA #IMPLIED
  font-stretch CDATA #IMPLIED
  font-size CDATA #IMPLIED
  unicode-range CDATA #IMPLIED
  units-per-em %Number; #IMPLIED
  panose-1 CDATA #IMPLIED
  stemv %Number; #IMPLIED
  stemh %Number; #IMPLIED
  slope %Number; #IMPLIED
  cap-height %Number; #IMPLIED
  x-height %Number; #IMPLIED
  accent-height %Number; #IMPLIED
  ascent %Number; #IMPLIED
  descent %Number; #IMPLIED
  widths CDATA #IMPLIED
  bbox CDATA #IMPLIED
  ideographic %Number; #IMPLIED
  alphabetic %Number; #IMPLIED
  mathematical %Number; #IMPLIED
  hanging %Number; #IMPLIED
  v-ideographic %Number; #IMPLIED
  v-alphabetic %Number; #IMPLIED
  v-mathematical %Number; #IMPLIED
  v-hanging %Number; #IMPLIED
  underline-position %Number; #IMPLIED
  underline-thickness %Number; #IMPLIED
  strikethrough-position %Number; #IMPLIED
  strikethrough-thickness %Number; #IMPLIED
  overline-position %Number; #IMPLIED
  overline-thickness %Number; #IMPLIED >

<!ELEMENT font-face-src (font-face-uri|font-face-name)+ >
<!ATTLIST font-face-src 
  %stdAttrs; >

<!ELEMENT font-face-uri (font-face-format*) >
<!ATTLIST font-face-uri 
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #REQUIRED >

<!ELEMENT font-face-format EMPTY >
<!ATTLIST font-face-format 
  %stdAttrs;
  string CDATA #IMPLIED >

<!ELEMENT font-face-name EMPTY >
<!ATTLIST font-face-name 
  %stdAttrs;
  name CDATA #IMPLIED >

<!ELEMENT definition-src EMPTY >
<!ATTLIST definition-src 
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #REQUIRED >


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Metadata 
     ============================================================== -->

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


<!-- ==============================================================
     DECLARATIONS CORRESPONDING TO: Extensibility 
     ============================================================== -->

<!ENTITY % foreignObjectExt "" >
<!ELEMENT foreignObject (#PCDATA %ceExt;%foreignObjectExt;)* >
<!ATTLIST foreignObject
  %stdAttrs;
  %testAttrs;
  %langSpaceAttrs;
  externalResourcesRequired %Boolean; #IMPLIED
  class %ClassList; #IMPLIED
  style %StyleSheet; #IMPLIED
  %PresentationAttributes-All;
  transform %TransformList; #IMPLIED
  %graphicsElementEvents;
  x %Coordinate; #IMPLIED
  y %Coordinate; #IMPLIED
  width %Length; #REQUIRED
  height %Length; #REQUIRED
  %StructuredText; >