Document Type Definition – SVG 1.1 (Second Edition) (original) (raw)

Appendix A: Document Type Definition

Contents

This appendix is normative.

A.1 Introduction

This appendix defines a DTD for SVG 1.1, which is used as part of determining whether a given document or document fragment is conforming. See Conformance Criteriafor details on how the DTD is to be used in this regard. Note in particular that simply validating a given XML document against this DTD cannot definitively, by itself, determine conformance to this specification.

If errors are found in this DTD, then they will be listed in the SVG 1.1 Second Edition errata. A dated version of the flattened DTD will always be available fromhttp://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20110816.dtd.

A.2 Modularization

The modularization of SVG included here is a decomposition ofSVG 1.0[SVG10] and errata into a collection of abstract modules that provide specific units of functionality. These modules may be combined with each other and with modules defined in other specifications (such as XHTML) to create SVG subset and extension document types that qualify as members of the SVG family of document types. SeeConformance for a description of SVG family documents, andAn XHTML + MathML + SVG Profile[XHTMLplusMathMLplusSVG] for a profile that combines XHTML, MathML and SVG.

Each major section of the SVG specification corresponds to a module named after that section, e.g. "Text Module" or "Basic Structure Module". A module without the "Basic" prefix implies that the module includes the complete set of elements and attributes, with no restrictions, from the corresponding section of the specification. If there is a need to provide a subset of the functionality of the complete module, then a Basic module is created with the "Basic" prefix added to the name of the complete module. For example, the "Basic Text Module" is a subset of the "Text Module".

It is an error for a profile of SVG 1.1 to include both the complete module and its basic subset (e.g. the "Text Module" and the "Basic Text Module").

A.2.1 Element and attribute collections

Most modules define a named collection of elements or attributes. These collections are used as a shorthand when describing the set of attributes allowed on a particular element (e.g. the "Style" attribute collection) or the set of elements allowed as children of a particular element (e.g. the "Shape" element collection). All collections have names that begin with an uppercase character.

When defining a profile, it is assumed that all the element and attribute collections are defined to be empty. That way, a module can redefine the collection as it is included in the profile, adding elements or attributes to make them available within the profile. Therefore, it is not a mistake to refer to an element or attribute collection from a module that is not included in the profile, it simply means that collection is empty.

The exception to this is the collection Presentation.attrib, which is the union of all the presentation attribute collections (i.e. all the attribute collections with the string "Presentation" in their name). Presentation.attrib is not defined in any module, but it exists in every profile.

A subset module (i.e. a Basic module) may define a different named collection from a superset module. Since it is an error to include a subset and superset module of the same group in a profile, all attribute and element collections will either be defined once by the module that includes them, or will have their default empty value (again, with the exception of Presentation.attrib which is not defined by any module).

A.2.2 Profiling the SVG specification

The modularization of SVG 1.1 allows profiles to be described by listing the SVG modules they allow and possibly a small number of restrictions or extensions on the elements provided by those modules.

The "Full" profile of SVG 1.1 is the collection of all the complete modules listed in this specification (i.e., every module that is not a subset module).

When applied to conformance, the unqualified term "SVG" implies the "Full" profile of SVG 1.1 defined by this specification. If an implementation does not implement the Full profile, it must state either the profile to which it conforms, or that it implements a subset of SVG.

A.2.3 Practical considerations

DTD-based modularization has proven to be an unwieldy method of defining composable XML languages, due to the inherent inability to describe certain complex content models in DTDs as well as their being agnostic with respect to XML namespaces. While the SVG 1.1 DTD is provided in a modularized form, it is recommended that alternate technologies such as Namespace-based Validation Dispatch Language [NVDL] be used to accomplish XML language composition instead.

A.3 SVG 1.1 module definitions and DTD implementations

This section contains the formal definition of each of the SVG abstract modules as a DTD module. Any element and attribute collections defined by the module are also listed.

A.3.1 Modular Framework Module

<![%svg-datatypes.module;[ %svg-datatypes.mod;]]>

<![%svg-qname.module;[ %svg-qname.mod;]]>

<![%svg-model.module;[

%svg-model.mod;]]>

<![%svg-attribs.module;[

%svg-attribs.mod;]]>

A.3.2 Datatypes Module

A.3.3 Qualified Name Module

<![%SVG.prefixed;[ ]]>

<![%SVG.prefixed;[ <!ENTITY % NS.decl.attrib "xmlns:%SVG.prefix; %URI.datatype; #FIXED '%SVG.xmlns;' %XLINK.xmlns.attrib; %SVG.xmlns.extra.attrib;"

]]> <!ENTITY % NS.decl.attrib "%XLINK.xmlns.attrib; %SVG.xmlns.extra.attrib;"

<![%SVG.prefixed;[ <!ENTITY % SVG.xmlns.attrib "%NS.decl.attrib;"

]]> <!ENTITY % SVG.xmlns.attrib "xmlns %URI.datatype; #FIXED '%SVG.xmlns;' %XLINK.xmlns.attrib;"

A.3.4 Core Attribute Module

The Core Attribute Module defines the attribute collection Core.attrib that is the core set of attributes that can be present on any element.

Collection name Attributes in collection
Core.attrib id, xml:base, xml:lang, xml:space

A.3.5 Container Attribute Module

The Container Attribute Module defines the Container.attrib attribute collection.

Collection name Attributes in collection
Container.attrib enable-background

A.3.6 Viewport Attribute Module

The Container Attribute Module defines the Container.attrib attribute collection.

Collection name Attributes in collection
Viewport.attrib clip, overflow

A.3.7 Paint Attribute Module

The Paint Attribute Module defines the Paint.attrib attribute collection.

Collection name Attributes in collection
Paint.attrib color, fill, fill-rule, stroke, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-width, color-interpolation, color-rendering

A.3.8 Basic Paint Attribute Module

The Basic Paint Attribute Module defines the Paint.attrib attribute collection.

Collection name Attributes in collection
Paint.attrib color, fill, fill-rule, stroke, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-width, color-rendering

A.3.9 Paint Opacity Attribute Module

The Paint Opacity Attribute Module defines the Opacity.attrib attribute collection.

Collection name Attributes in collection
Opacity.attrib opacity, stroke-opacity, fill-opacity

A.3.10 Graphics Attribute Module

The Graphics Attribute Module defines the Graphics.attrib attribute collection.

Collection name Attributes in collection
Graphics.attrib display, image-rendering, pointer-events, shape-rendering, text-rendering, visibility

A.3.11 Basic Graphics Attribute Module

The Basic Graphics Attribute Module defines the Graphics.attrib attribute collection.

Collection name Attributes in collection
Graphics.attrib display, visibility

A.3.12 Document Events Attribute Module

The Document Events Attribute Module defines the DocumentEvents.attrib attribute collection.

Collection name Attributes in collection
DocumentEvents.attrib onunload, onabort, onerror, onresize, onscroll, onzoom

A.3.13 Graphical Element Events Attribute Module

The Graphical Events Attribute Module defines the GraphicalEvents.attrib attribute collection.

Collection name Attributes in collection
GraphicalEvents.attrib onfocusin, onfocusout, onactivate, onclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onload

A.3.14 Animation Events Attribute Module

The Animation Events Attribute Module defines the AnimationEvents.attrib attribute collection.

Collection name Attributes in collection
AnimationEvents.attrib onbegin, onend, onrepeat, onload

The XLink Attribute Module defines the XLink.attrib, XLinkRequired.attrib, XLinkEmbed.attrib and XLinkReplace.attrib attribute collections. These collections differ only in whether the ‘xlink:href’attribute is required or what the default value for the ‘xlink:show’attribute is.

Collection name Attributes in collection
XLink.attrib xlink:type, xlink:href, xlink:role, xlink:arcrole, xlink:title, xlink:show, xlink:actuate
XLinkRequired.attrib xlink:type, xlink:href, xlink:role, xlink:arcrole, xlink:title, xlink:show, xlink:actuate
XLinkEmbed.attrib xlink:type, xlink:href, xlink:role, xlink:arcrole, xlink:title, xlink:show, xlink:actuate
XLinkReplace.attrib xlink:type, xlink:href, xlink:role, xlink:arcrole, xlink:title, xlink:show, xlink:actuate

A.3.16 External Resources Attribute Module

The External Resources Attribute Module defines the External.attrib attribute collection.

Collection name Attributes in collection
External.attrib externalResourcesRequired

A.3.17 Structure Module

The Structure Module defines the Description.class, Structure.class and Use.class element collections.

Collection name Elements in collection
Description.class desc, title, metadata
Use.class use
Structure.class svg, g, defs, symbol, Use.class

<![%SVG.svg.element;[ <!ENTITY % SVG.svg.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.svg.extra.content; )*"

]]>

<![%SVG.svg.attlist;[ <!ATTLIST %SVG.svg.qname; %SVG.xmlns.attrib; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.DocumentEvents.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED viewBox %ViewBoxSpec.datatype; #IMPLIED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet' zoomAndPan ( disable | magnify ) 'magnify' version %Number.datatype; #FIXED '1.1' baseProfile %Text.datatype; #IMPLIED contentScriptType %ContentType.datatype; 'application/ecmascript' contentStyleType %ContentType.datatype; 'text/css'

]]>

<![%SVG.g.element;[ <!ENTITY % SVG.g.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.g.extra.content; )*"

]]>

<![%SVG.g.attlist;[ <!ATTLIST %SVG.g.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.defs.element;[ <!ENTITY % SVG.defs.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.defs.extra.content; )*"

]]>

<![%SVG.defs.attlist;[ <!ATTLIST %SVG.defs.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.desc.element;[ <!ENTITY % SVG.desc.content "( #PCDATA %SVG.desc.extra.content; )*"

]]>

<![%SVG.desc.attlist;[ <!ATTLIST %SVG.desc.qname; %SVG.Core.attrib; %SVG.Style.attrib;

]]>

<![%SVG.title.element;[ <!ENTITY % SVG.title.content "( #PCDATA %SVG.title.extra.content; )*"

]]>

<![%SVG.title.attlist;[ <!ATTLIST %SVG.title.qname; %SVG.Core.attrib; %SVG.Style.attrib;

]]>

<![%SVG.metadata.element;[ <!ENTITY % SVG.metadata.content "( #PCDATA %SVG.metadata.extra.content; )*"

]]>

<![%SVG.metadata.attlist;[ <!ATTLIST %SVG.metadata.qname; %SVG.Core.attrib;

]]>

<![%SVG.symbol.element;[ <!ENTITY % SVG.symbol.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.symbol.extra.content; )*"

]]>

<![%SVG.symbol.attlist;[ <!ATTLIST %SVG.symbol.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; viewBox %ViewBoxSpec.datatype; #IMPLIED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet'

]]>

<![%SVG.use.element;[ <!ENTITY % SVG.use.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.use.extra.content; )*"

]]>

<![%SVG.use.attlist;[ <!ATTLIST %SVG.use.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLinkEmbed.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

A.3.18 Basic Structure Module

The Basic Structure Module defines the Description.class, Structure.class and Use.class element collections.

Collection name Elements in collection
Description.class desc, title, metadata
Use.class use
Structure.class svg, g, defs, Use.class

<![%SVG.svg.element;[ <!ENTITY % SVG.svg.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.svg.extra.content; )*"

]]>

<![%SVG.svg.attlist;[ <!ATTLIST %SVG.svg.qname; %SVG.xmlns.attrib; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.DocumentEvents.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED viewBox %ViewBoxSpec.datatype; #IMPLIED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet' zoomAndPan ( disable | magnify ) 'magnify' version %Number.datatype; #FIXED '1.1' baseProfile %Text.datatype; #IMPLIED

]]>

<![%SVG.g.element;[ <!ENTITY % SVG.g.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.g.extra.content; )*"

]]>

<![%SVG.g.attlist;[ <!ATTLIST %SVG.g.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.defs.element;[ <!ENTITY % SVG.defs.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.defs.extra.content; )*"

]]>

<![%SVG.defs.attlist;[ <!ATTLIST %SVG.defs.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.desc.element;[ <!ENTITY % SVG.desc.content "( #PCDATA %SVG.desc.extra.content; )*"

]]>

<![%SVG.desc.attlist;[ <!ATTLIST %SVG.desc.qname; %SVG.Core.attrib; %SVG.Style.attrib;

]]>

<![%SVG.title.element;[ <!ENTITY % SVG.title.content "( #PCDATA %SVG.title.extra.content; )*"

]]>

<![%SVG.title.attlist;[ <!ATTLIST %SVG.title.qname; %SVG.Core.attrib; %SVG.Style.attrib;

]]>

<![%SVG.metadata.element;[ <!ENTITY % SVG.metadata.content "( #PCDATA %SVG.metadata.extra.content; )*"

]]>

<![%SVG.metadata.attlist;[ <!ATTLIST %SVG.metadata.qname; %SVG.Core.attrib;

]]>

<![%SVG.use.element;[ <!ENTITY % SVG.use.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.use.extra.content; )*"

]]>

<![%SVG.use.attlist;[ <!ATTLIST %SVG.use.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLinkEmbed.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

A.3.19 Conditional Processing Module

The Conditional Processing Module defines the Conditional.class element collection and the Conditional.attrib attribute collection.

Collection name Elements in collection
Conditional.class switch
Collection name Attributes in collection
Conditional.attrib requiredFeatures, requiredExtensions, systemLanguage

<![%SVG.switch.element;[ <!ENTITY % SVG.switch.content "( %SVG.Description.class; | %SVG.svg.qname; | %SVG.g.qname; | %SVG.use.qname; | %SVG.text.qname; | %SVG.Animation.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Shape.class; %SVG.Hyperlink.class; %SVG.Extensibility.class; %SVG.switch.extra.content; )*"

]]>

<![%SVG.switch.attlist;[ <!ATTLIST %SVG.switch.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED

]]>

A.3.20 Image Module

The Image Module defines the Image.class element collection.

Collection name Elements in collection
Image.class image

<![%SVG.image.element;[ <!ENTITY % SVG.image.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.image.extra.content; )*"

]]>

<![%SVG.image.attlist;[ <!ATTLIST %SVG.image.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLinkEmbed.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #REQUIRED height %Length.datatype; #REQUIRED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet' transform %TransformList.datatype; #IMPLIED

]]>

A.3.21 Style Module

The Style Module defines the Style.class element collection and the Style.attrib attribute collection.

Collection name Elements in collection
Style.class style
Collection name Attributes in collection
Style.attrib style, class

<![%SVG.style.element;[ <!ENTITY % SVG.style.content "( #PCDATA %SVG.style.extra.content; )*"

]]>

<![%SVG.style.attlist;[ <!ATTLIST %SVG.style.qname; xml:space ( preserve ) #FIXED 'preserve' %SVG.id.attrib; %SVG.base.attrib; %SVG.lang.attrib; %SVG.Core.extra.attrib; type %ContentType.datatype; #REQUIRED media %MediaDesc.datatype; #IMPLIED title %Text.datatype; #IMPLIED

]]>

A.3.22 Shape Module

The Shape Module defines the Shape.class element collection.

Collection name Elements in collection
Shape.class rect, circle, line, polyline, polygon, ellipse, path

<![%SVG.path.element;[ <!ENTITY % SVG.path.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.path.extra.content; )*"

]]>

<![%SVG.path.attlist;[ <!ATTLIST %SVG.path.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; d %PathData.datatype; #REQUIRED pathLength %Number.datatype; #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.rect.element;[ <!ENTITY % SVG.rect.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.rect.extra.content; )*"

]]>

<![%SVG.rect.attlist;[ <!ATTLIST %SVG.rect.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #REQUIRED height %Length.datatype; #REQUIRED rx %Length.datatype; #IMPLIED ry %Length.datatype; #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.circle.element;[ <!ENTITY % SVG.circle.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.circle.extra.content; )*"

]]>

<![%SVG.circle.attlist;[ <!ATTLIST %SVG.circle.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; cx %Coordinate.datatype; #IMPLIED cy %Coordinate.datatype; #IMPLIED r %Length.datatype; #REQUIRED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.line.element;[ <!ENTITY % SVG.line.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.line.extra.content; )*"

]]>

<![%SVG.line.attlist;[ <!ATTLIST %SVG.line.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x1 %Coordinate.datatype; #IMPLIED y1 %Coordinate.datatype; #IMPLIED x2 %Coordinate.datatype; #IMPLIED y2 %Coordinate.datatype; #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.ellipse.element;[ <!ENTITY % SVG.ellipse.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.ellipse.extra.content; )*"

]]>

<![%SVG.ellipse.attlist;[ <!ATTLIST %SVG.ellipse.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; cx %Coordinate.datatype; #IMPLIED cy %Coordinate.datatype; #IMPLIED rx %Length.datatype; #REQUIRED ry %Length.datatype; #REQUIRED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.polyline.element;[ <!ENTITY % SVG.polyline.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.polyline.extra.content; )*"

]]>

<![%SVG.polyline.attlist;[ <!ATTLIST %SVG.polyline.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; points %Points.datatype; #REQUIRED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.polygon.element;[ <!ENTITY % SVG.polygon.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.polygon.extra.content; )*"

]]>

<![%SVG.polygon.attlist;[ <!ATTLIST %SVG.polygon.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; points %Points.datatype; #REQUIRED transform %TransformList.datatype; #IMPLIED

]]>

A.3.23 Text Module

The Text Module defines the Text.class and TextContent.class element collections and the Text.attrib, TextContent.attrib and Font.attrib attribute sets.

Collection name Elements in collection
Text.class text, altGlyphDef
TextContent.class tspan, tref, textPath, altGlyph
Collection name Attributes in collection
Text.attrib writing-mode
TextContent.attrib alignment-baseline, baseline-shift, direction, dominant-baseline, glyph-orientation-horizontal, glyph-orientation-vertical, kerning, letter-spacing, text-anchor, text-decoration, unicode-bidi, word-spacing
Font.attrib font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight

<![%SVG.text.element;[ <!ENTITY % SVG.text.content "( #PCDATA | %SVG.Description.class; | %SVG.Animation.class; %SVG.TextContent.class; %SVG.Hyperlink.class; %SVG.text.extra.content; )*"

]]>

<![%SVG.text.attlist;[ <!ATTLIST %SVG.text.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinates.datatype; #IMPLIED y %Coordinates.datatype; #IMPLIED dx %Lengths.datatype; #IMPLIED dy %Lengths.datatype; #IMPLIED rotate %Numbers.datatype; #IMPLIED textLength %Length.datatype; #IMPLIED lengthAdjust ( spacing | spacingAndGlyphs ) #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

<![%SVG.tspan.element;[ <!ENTITY % SVG.tspan.content "( #PCDATA | %SVG.tspan.qname; | %SVG.tref.qname; | %SVG.altGlyph.qname; | %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; | %SVG.Description.class; %SVG.Hyperlink.class; %SVG.tspan.extra.content; )*"

]]>

<![%SVG.tspan.attlist;[ <!ATTLIST %SVG.tspan.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinates.datatype; #IMPLIED y %Coordinates.datatype; #IMPLIED dx %Lengths.datatype; #IMPLIED dy %Lengths.datatype; #IMPLIED rotate %Numbers.datatype; #IMPLIED textLength %Length.datatype; #IMPLIED lengthAdjust ( spacing | spacingAndGlyphs ) #IMPLIED

]]>

<![%SVG.tref.element;[ <!ENTITY % SVG.tref.content "( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; | %SVG.Description.class; %SVG.tref.extra.content; )*"

]]>

<![%SVG.tref.attlist;[ <!ATTLIST %SVG.tref.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLinkRequired.attrib; %SVG.External.attrib; x %Coordinates.datatype; #IMPLIED y %Coordinates.datatype; #IMPLIED dx %Lengths.datatype; #IMPLIED dy %Lengths.datatype; #IMPLIED rotate %Numbers.datatype; #IMPLIED textLength %Length.datatype; #IMPLIED lengthAdjust ( spacing | spacingAndGlyphs ) #IMPLIED

]]>

<![%SVG.textPath.element;[ <!ENTITY % SVG.textPath.content "( #PCDATA | %SVG.tspan.qname; | %SVG.tref.qname; | %SVG.altGlyph.qname; | %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; | %SVG.Description.class; %SVG.Hyperlink.class; %SVG.textPath.extra.content; )*"

]]>

<![%SVG.textPath.attlist;[ <!ATTLIST %SVG.textPath.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLinkRequired.attrib; %SVG.External.attrib; startOffset %Length.datatype; #IMPLIED textLength %Length.datatype; #IMPLIED lengthAdjust ( spacing | spacingAndGlyphs ) #IMPLIED method ( align | stretch ) #IMPLIED spacing ( auto | exact ) #IMPLIED

]]>

<![%SVG.altGlyph.element;[ <!ENTITY % SVG.altGlyph.content "( #PCDATA %SVG.altGlyph.extra.content; )*"

]]>

<![%SVG.altGlyph.attlist;[ <!ATTLIST %SVG.altGlyph.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLink.attrib; %SVG.External.attrib; x %Coordinates.datatype; #IMPLIED y %Coordinates.datatype; #IMPLIED dx %Lengths.datatype; #IMPLIED dy %Lengths.datatype; #IMPLIED glyphRef CDATA #IMPLIED format CDATA #IMPLIED rotate %Numbers.datatype; #IMPLIED

]]>

<![%SVG.altGlyphDef.element;[ <!ENTITY % SVG.altGlyphDef.content "(( %SVG.glyphRef.qname;+ | %SVG.altGlyphItem.qname;+ ) %SVG.altGlyphDef.extra.content; )"

]]>

<![%SVG.altGlyphDef.attlist;[ <!ATTLIST %SVG.altGlyphDef.qname; %SVG.Core.attrib;

]]>

<![%SVG.altGlyphItem.element;[ <!ENTITY % SVG.altGlyphItem.content "( %SVG.glyphRef.qname;+ %SVG.altGlyphItem.extra.content; )"

]]>

<![%SVG.altGlyphItem.attlist;[ <!ATTLIST %SVG.altGlyphItem.qname; %SVG.Core.attrib;

]]>

<![%SVG.glyphRef.element;[

]]>

<![%SVG.glyphRef.attlist;[ <!ATTLIST %SVG.glyphRef.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.XLink.attrib; x %Number.datatype; #IMPLIED y %Number.datatype; #IMPLIED dx %Number.datatype; #IMPLIED dy %Number.datatype; #IMPLIED glyphRef CDATA #IMPLIED format CDATA #IMPLIED

]]>

A.3.24 Basic Text Module

The Basic Text Module defines the Text.class and TextContent.class element collections and the TextContent.attrib and Font.attrib attribute sets.

Collection name Elements in collection
Text.class text
TextContent.class (empty)
Collection name Attributes in collection
TextContent.attrib text-anchor
Font.attrib font-family, font-size, font-style, font-weight

<![%SVG.text.element;[ <!ENTITY % SVG.text.content "( #PCDATA | %SVG.Description.class; | %SVG.Animation.class; %SVG.Hyperlink.class; %SVG.text.extra.content; )*"

]]>

<![%SVG.text.attlist;[ <!ATTLIST %SVG.text.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinates.datatype; #IMPLIED y %Coordinates.datatype; #IMPLIED rotate %Numbers.datatype; #IMPLIED transform %TransformList.datatype; #IMPLIED

]]>

A.3.25 Marker Module

The Marker Module defines the Marker.class element collection and the Marker.attrib attribute set.

Collection name Elements in collection
Marker.class marker
Collection name Attributes in collection
Marker.attrib marker-start, marker-mid, marker-end

<![%SVG.marker.element;[ <!ENTITY % SVG.marker.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.marker.extra.content; )*"

]]>

<![%SVG.marker.attlist;[ <!ATTLIST %SVG.marker.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.External.attrib; refX %Coordinate.datatype; #IMPLIED refY %Coordinate.datatype; #IMPLIED markerUnits ( strokeWidth | userSpaceOnUse ) #IMPLIED markerWidth %Length.datatype; #IMPLIED markerHeight %Length.datatype; #IMPLIED orient CDATA #IMPLIED viewBox %ViewBoxSpec.datatype; #IMPLIED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet'

]]>

A.3.26 Color Profile Module

The Color Profile Module defines the ColorProfile.class element collection.

Collection name Elements in collection
ColorProfile.class color-profile

<![%SVG.color-profile.element;[ <!ENTITY % SVG.color-profile.content "( %SVG.Description.class; %SVG.color-profile.extra.content; )*"

]]>

<![%SVG.color-profile.attlist;[ <!ATTLIST %SVG.color-profile.qname; %SVG.Core.attrib; %SVG.XLink.attrib; local CDATA #IMPLIED name CDATA #REQUIRED rendering-intent ( auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric ) 'auto'

]]>

A.3.27 Gradient Module

The Gradient Module defines the Gradient.class element collection and the Gradient.attrib attribute set.

Collection name Elements in collection
Gradient.class linearGradient, radialGradient
Collection name Attributes in collection
Gradient.attrib stop-color, stop-opacity

<![%SVG.linearGradient.element;[ <!ENTITY % SVG.linearGradient.content "( %SVG.Description.class; | %SVG.stop.qname; | %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateTransform.qname; %SVG.linearGradient.extra.content; )*"

]]>

<![%SVG.linearGradient.attlist;[ <!ATTLIST %SVG.linearGradient.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.XLink.attrib; %SVG.External.attrib; x1 %Coordinate.datatype; #IMPLIED y1 %Coordinate.datatype; #IMPLIED x2 %Coordinate.datatype; #IMPLIED y2 %Coordinate.datatype; #IMPLIED gradientUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED gradientTransform %TransformList.datatype; #IMPLIED spreadMethod ( pad | reflect | repeat ) #IMPLIED

]]>

<![%SVG.radialGradient.element;[ <!ENTITY % SVG.radialGradient.content "( %SVG.Description.class; | %SVG.stop.qname; | %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateTransform.qname; %SVG.radialGradient.extra.content; )*"

]]>

<![%SVG.radialGradient.attlist;[ <!ATTLIST %SVG.radialGradient.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.XLink.attrib; %SVG.External.attrib; cx %Coordinate.datatype; #IMPLIED cy %Coordinate.datatype; #IMPLIED r %Length.datatype; #IMPLIED fx %Coordinate.datatype; #IMPLIED fy %Coordinate.datatype; #IMPLIED gradientUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED gradientTransform %TransformList.datatype; #IMPLIED spreadMethod ( pad | reflect | repeat ) #IMPLIED

]]>

<![%SVG.stop.element;[ <!ENTITY % SVG.stop.content "( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; %SVG.stop.extra.content; )*"

]]>

<![%SVG.stop.attlist;[ <!ATTLIST %SVG.stop.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; offset %NumberOrPercentage.datatype; #REQUIRED

]]>

A.3.28 Pattern Module

The Pattern Module defines the Pattern.class element collection.

Collection name Elements in collection
Pattern.class pattern

<![%SVG.pattern.element;[ <!ENTITY % SVG.pattern.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.pattern.extra.content; )*"

]]>

<![%SVG.pattern.attlist;[ <!ATTLIST %SVG.pattern.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.XLink.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED patternUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED patternContentUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED patternTransform %TransformList.datatype; #IMPLIED viewBox %ViewBoxSpec.datatype; #IMPLIED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet'

]]>

A.3.29 Clip Module

The Clip Module defines the Clip.class element collection and the Clip.attrib attribute collection.

Collection name Elements in collection
Clip.class clipPath
Collection name Attributes in collection
Clip.attrib clip-path, clip-rule

<![%SVG.clipPath.element;[ <!ENTITY % SVG.clipPath.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Use.class; %SVG.Shape.class; | %SVG.text.qname; %SVG.clipPath.extra.content; )*"

]]>

<![%SVG.clipPath.attlist;[ <!ATTLIST %SVG.clipPath.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED clipPathUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED

]]>

A.3.30 Basic Clip Module

The Basic Clip Module defines the Clip.class element collection and the Clip.attrib attribute collection.

Collection name Elements in collection
Clip.class clipPath
Collection name Attributes in collection
Clip.attrib clip-path, clip-rule

<![%SVG.clipPath.element;[ <!ENTITY % SVG.clipPath.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Use.class; %SVG.Shape.class; | %SVG.text.qname; %SVG.clipPath.extra.content; )*"

]]>

<![%SVG.clipPath.attlist;[ <!ATTLIST %SVG.clipPath.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED clipPathUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED

]]>

A.3.31 Mask Module

The Mask Module defines the Mask.class element collection and the Mask.attrib attribute collection.

Collection name Elements in collection
Mask.class mask
Collection name Attributes in collection
Mask.attrib mask

<![%SVG.mask.element;[ <!ENTITY % SVG.mask.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.mask.extra.content; )*"

]]>

<![%SVG.mask.attlist;[ <!ATTLIST %SVG.mask.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED maskUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED maskContentUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED

]]>

A.3.32 Filter Module

The Filter Module defines the Filter.class and FilterPrimitive.class element collections and the Filter.attrib, FilterColor.attrib, FilterPrimitive.attrib and FilterPrimitiveWithIn.attrib attribute collections.

Collection name Elements in collection
Filter.class filter
FilterPrimitive.class feBlend, feFlood, feColorMatrix, feComponentTransfer, feComposite, feConvolveMatrix, feDiffuseLighting, feDisplacementMap, feGaussianBlur, feImage, feMerge, feMorphology, feOffset, feSpecularLighting, feTile, feTurbulence
Collection name Attributes in collection
Filter.attrib filter
FilterColor.attrib color-interpolation-filters
FilterPrimitive.attrib x, y, width, height, result
FilterPrimitiveWithIn.attrib FilterPrimitive.attrib, in

<![%SVG.filter.element;[ <!ENTITY % SVG.filter.content "( %SVG.Description.class; | %SVG.animate.qname; | %SVG.set.qname; %SVG.FilterPrimitive.class; %SVG.filter.extra.content; )*"

]]>

<![%SVG.filter.attlist;[ <!ATTLIST %SVG.filter.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.XLink.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED filterRes %NumberOptionalNumber.datatype; #IMPLIED filterUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED primitiveUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED

]]>

<![%SVG.feBlend.element;[ <!ENTITY % SVG.feBlend.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feBlend.extra.content; )*"

]]>

<![%SVG.feBlend.attlist;[ <!ATTLIST %SVG.feBlend.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; in2 CDATA #REQUIRED mode ( normal | multiply | screen | darken | lighten ) 'normal'

]]>

<![%SVG.feColorMatrix.element;[ <!ENTITY % SVG.feColorMatrix.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feColorMatrix.extra.content; )*"

]]>

<![%SVG.feColorMatrix.attlist;[ <!ATTLIST %SVG.feColorMatrix.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; type ( matrix | saturate | hueRotate | luminanceToAlpha ) 'matrix' values CDATA #IMPLIED

]]>

<![%SVG.feComponentTransfer.element;[ <!ENTITY % SVG.feComponentTransfer.content "( %SVG.feFuncR.qname;?, %SVG.feFuncG.qname;?, %SVG.feFuncB.qname;?, %SVG.feFuncA.qname;? %SVG.feComponentTransfer.extra.content; )"

]]>

<![%SVG.feComponentTransfer.attlist;[ <!ATTLIST %SVG.feComponentTransfer.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib;

]]>

<![%SVG.feComposite.element;[ <!ENTITY % SVG.feComposite.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feComposite.extra.content; )*"

]]>

<![%SVG.feComposite.attlist;[ <!ATTLIST %SVG.feComposite.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; in2 CDATA #REQUIRED operator ( over | in | out | atop | xor | arithmetic ) 'over' k1 %Number.datatype; #IMPLIED k2 %Number.datatype; #IMPLIED k3 %Number.datatype; #IMPLIED k4 %Number.datatype; #IMPLIED

]]>

<![%SVG.feConvolveMatrix.element;[ <!ENTITY % SVG.feConvolveMatrix.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feConvolveMatrix.extra.content; )*"

]]>

<![%SVG.feConvolveMatrix.attlist;[ <!ATTLIST %SVG.feConvolveMatrix.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; order %NumberOptionalNumber.datatype; #IMPLIED kernelMatrix CDATA #REQUIRED divisor %Number.datatype; #IMPLIED bias %Number.datatype; #IMPLIED targetX %Integer.datatype; #IMPLIED targetY %Integer.datatype; #IMPLIED edgeMode ( duplicate | wrap | none ) 'duplicate' kernelUnitLength %NumberOptionalNumber.datatype; #IMPLIED preserveAlpha %Boolean.datatype; #IMPLIED

]]>

<![%SVG.feDiffuseLighting.element;[ <!ENTITY % SVG.feDiffuseLighting.content "(( %SVG.feDistantLight.qname; | %SVG.fePointLight.qname; | %SVG.feSpotLight.qname; ), ( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; %SVG.feDiffuseLighting.extra.content; )*)"

]]>

<![%SVG.feDiffuseLighting.attlist;[ <!ATTLIST %SVG.feDiffuseLighting.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; surfaceScale %Number.datatype; #IMPLIED diffuseConstant %Number.datatype; #IMPLIED kernelUnitLength %NumberOptionalNumber.datatype; #IMPLIED

]]>

<![%SVG.feDisplacementMap.element;[ <!ENTITY % SVG.feDisplacementMap.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feDisplacementMap.extra.content; )*"

]]>

<![%SVG.feDisplacementMap.attlist;[ <!ATTLIST %SVG.feDisplacementMap.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; in2 CDATA #REQUIRED scale %Number.datatype; #IMPLIED xChannelSelector ( R | G | B | A ) 'A' yChannelSelector ( R | G | B | A ) 'A'

]]>

<![%SVG.feFlood.element;[ <!ENTITY % SVG.feFlood.content "( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; %SVG.feFlood.extra.content; )*"

]]>

<![%SVG.feFlood.attlist;[ <!ATTLIST %SVG.feFlood.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitive.attrib;

]]>

<![%SVG.feGaussianBlur.element;[ <!ENTITY % SVG.feGaussianBlur.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feGaussianBlur.extra.content; )*"

]]>

<![%SVG.feGaussianBlur.attlist;[ <!ATTLIST %SVG.feGaussianBlur.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; stdDeviation %NumberOptionalNumber.datatype; #IMPLIED

]]>

<![%SVG.feImage.element;[ <!ENTITY % SVG.feImage.content "( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateTransform.qname; %SVG.feImage.extra.content; )*"

]]>

<![%SVG.feImage.attlist;[ <!ATTLIST %SVG.feImage.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitive.attrib; %SVG.XLinkEmbed.attrib; %SVG.External.attrib; preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet'

]]>

<![%SVG.feMerge.element;[ <!ENTITY % SVG.feMerge.content "( %SVG.feMergeNode.qname; %SVG.feMerge.extra.content; )*"

]]>

<![%SVG.feMerge.attlist;[ <!ATTLIST %SVG.feMerge.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitive.attrib;

]]>

<![%SVG.feMergeNode.element;[ <!ENTITY % SVG.feMergeNode.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feMergeNode.extra.content; )*"

]]>

<![%SVG.feMergeNode.attlist;[ <!ATTLIST %SVG.feMergeNode.qname; %SVG.Core.attrib; in CDATA #IMPLIED

]]>

<![%SVG.feMorphology.element;[ <!ENTITY % SVG.feMorphology.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feMorphology.extra.content; )*"

]]>

<![%SVG.feMorphology.attlist;[ <!ATTLIST %SVG.feMorphology.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; operator ( erode | dilate ) 'erode' radius %NumberOptionalNumber.datatype; #IMPLIED

]]>

<![%SVG.feOffset.element;[ <!ENTITY % SVG.feOffset.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feOffset.extra.content; )*"

]]>

<![%SVG.feOffset.attlist;[ <!ATTLIST %SVG.feOffset.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; dx %Number.datatype; #IMPLIED dy %Number.datatype; #IMPLIED

]]>

<![%SVG.feSpecularLighting.element;[ <!ENTITY % SVG.feSpecularLighting.content "(( %SVG.feDistantLight.qname; | %SVG.fePointLight.qname; | %SVG.feSpotLight.qname; ), ( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; %SVG.feSpecularLighting.extra.content; )*)"

]]>

<![%SVG.feSpecularLighting.attlist;[ <!ATTLIST %SVG.feSpecularLighting.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; surfaceScale %Number.datatype; #IMPLIED specularConstant %Number.datatype; #IMPLIED specularExponent %Number.datatype; #IMPLIED kernelUnitLength %NumberOptionalNumber.datatype; #IMPLIED

]]>

<![%SVG.feTile.element;[ <!ENTITY % SVG.feTile.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feTile.extra.content; )*"

]]>

<![%SVG.feTile.attlist;[ <!ATTLIST %SVG.feTile.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib;

]]>

<![%SVG.feTurbulence.element;[ <!ENTITY % SVG.feTurbulence.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feTurbulence.extra.content; )*"

]]>

<![%SVG.feTurbulence.attlist;[ <!ATTLIST %SVG.feTurbulence.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitive.attrib; baseFrequency %NumberOptionalNumber.datatype; #IMPLIED numOctaves %Integer.datatype; #IMPLIED seed %Number.datatype; #IMPLIED stitchTiles ( stitch | noStitch ) 'noStitch' type ( fractalNoise | turbulence ) 'turbulence'

]]>

<![%SVG.feDistantLight.element;[ <!ENTITY % SVG.feDistantLight.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feDistantLight.extra.content; )*"

]]>

<![%SVG.feDistantLight.attlist;[ <!ATTLIST %SVG.feDistantLight.qname; %SVG.Core.attrib; azimuth %Number.datatype; #IMPLIED elevation %Number.datatype; #IMPLIED

]]>

<![%SVG.fePointLight.element;[ <!ENTITY % SVG.fePointLight.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.fePointLight.extra.content; )*"

]]>

<![%SVG.fePointLight.attlist;[ <!ATTLIST %SVG.fePointLight.qname; %SVG.Core.attrib; x %Number.datatype; #IMPLIED y %Number.datatype; #IMPLIED z %Number.datatype; #IMPLIED

]]>

<![%SVG.feSpotLight.element;[ <!ENTITY % SVG.feSpotLight.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feSpotLight.extra.content; )*"

]]>

<![%SVG.feSpotLight.attlist;[ <!ATTLIST %SVG.feSpotLight.qname; %SVG.Core.attrib; x %Number.datatype; #IMPLIED y %Number.datatype; #IMPLIED z %Number.datatype; #IMPLIED pointsAtX %Number.datatype; #IMPLIED pointsAtY %Number.datatype; #IMPLIED pointsAtZ %Number.datatype; #IMPLIED specularExponent %Number.datatype; #IMPLIED limitingConeAngle %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncR.element;[ <!ENTITY % SVG.feFuncR.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncR.extra.content; )*"

]]>

<![%SVG.feFuncR.attlist;[ <!ATTLIST %SVG.feFuncR.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncG.element;[ <!ENTITY % SVG.feFuncG.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncG.extra.content; )*"

]]>

<![%SVG.feFuncG.attlist;[ <!ATTLIST %SVG.feFuncG.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncB.element;[ <!ENTITY % SVG.feFuncB.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncB.extra.content; )*"

]]>

<![%SVG.feFuncB.attlist;[ <!ATTLIST %SVG.feFuncB.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncA.element;[ <!ENTITY % SVG.feFuncA.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncA.extra.content; )*"

]]>

<![%SVG.feFuncA.attlist;[ <!ATTLIST %SVG.feFuncA.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

A.3.33 Basic Filter Module

The Basic Filter Module defines the Filter.class and FilterPrimitive.class element collections and the Filter.attrib, FilterColor.attrib, FilterPrimitive.attrib and FilterPrimitiveWithIn.attrib attribute collections.

Collection name Elements in collection
Filter.class filter
FilterPrimitive.class feBlend, feFlood, feColorMatrix, feComponentTransfer, feComposite, feGaussianBlur, feImage, feMerge, feOffset, feTile
Collection name Attributes in collection
Filter.attrib filter
FilterColor.attrib color-interpolation-filters
FilterPrimitive.attrib x, y, width, height, result
FilterPrimitiveWithIn.attrib FilterPrimitive.attrib, in

<![%SVG.filter.element;[ <!ENTITY % SVG.filter.content "( %SVG.Description.class; | %SVG.animate.qname; | %SVG.set.qname; %SVG.FilterPrimitive.class; %SVG.filter.extra.content; )*"

]]>

<![%SVG.filter.attlist;[ <!ATTLIST %SVG.filter.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.XLink.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #IMPLIED height %Length.datatype; #IMPLIED filterRes %NumberOptionalNumber.datatype; #IMPLIED filterUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED primitiveUnits ( userSpaceOnUse | objectBoundingBox ) #IMPLIED

]]>

<![%SVG.feBlend.element;[ <!ENTITY % SVG.feBlend.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feBlend.extra.content; )*"

]]>

<![%SVG.feBlend.attlist;[ <!ATTLIST %SVG.feBlend.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; in2 CDATA #REQUIRED mode ( normal | multiply | screen | darken | lighten ) 'normal'

]]>

<![%SVG.feColorMatrix.element;[ <!ENTITY % SVG.feColorMatrix.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feColorMatrix.extra.content; )*"

]]>

<![%SVG.feColorMatrix.attlist;[ <!ATTLIST %SVG.feColorMatrix.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; type ( matrix | saturate | hueRotate | luminanceToAlpha ) 'matrix' values CDATA #IMPLIED

]]>

<![%SVG.feComponentTransfer.element;[ <!ENTITY % SVG.feComponentTransfer.content "( %SVG.feFuncR.qname;?, %SVG.feFuncG.qname;?, %SVG.feFuncB.qname;?, %SVG.feFuncA.qname;? %SVG.feComponentTransfer.extra.content; )"

]]>

<![%SVG.feComponentTransfer.attlist;[ <!ATTLIST %SVG.feComponentTransfer.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib;

]]>

<![%SVG.feComposite.element;[ <!ENTITY % SVG.feComposite.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feComposite.extra.content; )*"

]]>

<![%SVG.feComposite.attlist;[ <!ATTLIST %SVG.feComposite.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitiveWithIn.attrib; in2 CDATA #REQUIRED operator ( over | in | out | atop | xor | arithmetic ) 'over' k1 %Number.datatype; #IMPLIED k2 %Number.datatype; #IMPLIED k3 %Number.datatype; #IMPLIED k4 %Number.datatype; #IMPLIED

]]>

<![%SVG.feFlood.element;[ <!ENTITY % SVG.feFlood.content "( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateColor.qname; %SVG.feFlood.extra.content; )*"

]]>

<![%SVG.feFlood.attlist;[ <!ATTLIST %SVG.feFlood.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Color.attrib; %SVG.FilterColor.attrib; %SVG.FilterPrimitive.attrib; flood-color %SVGColor.datatype; #IMPLIED flood-opacity %OpacityValue.datatype; #IMPLIED

]]>

<![%SVG.feGaussianBlur.element;[ <!ENTITY % SVG.feGaussianBlur.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feGaussianBlur.extra.content; )*"

]]>

<![%SVG.feGaussianBlur.attlist;[ <!ATTLIST %SVG.feGaussianBlur.qname; %SVG.Core.attrib; %SVG.FilterColor.attrib; %SVG.FilterPrimitiveWithIn.attrib; stdDeviation %NumberOptionalNumber.datatype; #IMPLIED

]]>

<![%SVG.feImage.element;[ <!ENTITY % SVG.feImage.content "( %SVG.animate.qname; | %SVG.set.qname; | %SVG.animateTransform.qname; %SVG.feImage.extra.content; )*"

]]>

<![%SVG.feImage.attlist;[ <!ATTLIST %SVG.feImage.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.FilterPrimitive.attrib; %SVG.XLinkEmbed.attrib; %SVG.External.attrib; preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet'

]]>

<![%SVG.feMerge.element;[ <!ENTITY % SVG.feMerge.content "( %SVG.feMergeNode.qname; %SVG.feMerge.extra.content; )*"

]]>

<![%SVG.feMerge.attlist;[ <!ATTLIST %SVG.feMerge.qname; %SVG.Core.attrib; %SVG.FilterColor.attrib; %SVG.FilterPrimitive.attrib;

]]>

<![%SVG.feMergeNode.element;[ <!ENTITY % SVG.feMergeNode.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feMergeNode.extra.content; )*"

]]>

<![%SVG.feMergeNode.attlist;[ <!ATTLIST %SVG.feMergeNode.qname; %SVG.Core.attrib; in CDATA #IMPLIED

]]>

<![%SVG.feOffset.element;[ <!ENTITY % SVG.feOffset.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feOffset.extra.content; )*"

]]>

<![%SVG.feOffset.attlist;[ <!ATTLIST %SVG.feOffset.qname; %SVG.Core.attrib; %SVG.FilterColor.attrib; %SVG.FilterPrimitiveWithIn.attrib; dx %Number.datatype; #IMPLIED dy %Number.datatype; #IMPLIED

]]>

<![%SVG.feTile.element;[ <!ENTITY % SVG.feTile.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feTile.extra.content; )*"

]]>

<![%SVG.feTile.attlist;[ <!ATTLIST %SVG.feTile.qname; %SVG.Core.attrib; %SVG.FilterColor.attrib; %SVG.FilterPrimitiveWithIn.attrib;

]]>

<![%SVG.feFuncR.element;[ <!ENTITY % SVG.feFuncR.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncR.extra.content; )*"

]]>

<![%SVG.feFuncR.attlist;[ <!ATTLIST %SVG.feFuncR.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncG.element;[ <!ENTITY % SVG.feFuncG.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncG.extra.content; )*"

]]>

<![%SVG.feFuncG.attlist;[ <!ATTLIST %SVG.feFuncG.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncB.element;[ <!ENTITY % SVG.feFuncB.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncB.extra.content; )*"

]]>

<![%SVG.feFuncB.attlist;[ <!ATTLIST %SVG.feFuncB.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

<![%SVG.feFuncA.element;[ <!ENTITY % SVG.feFuncA.content "( %SVG.animate.qname; | %SVG.set.qname; %SVG.feFuncA.extra.content; )*"

]]>

<![%SVG.feFuncA.attlist;[ <!ATTLIST %SVG.feFuncA.qname; %SVG.Core.attrib; type ( identity | table | discrete | linear | gamma ) #REQUIRED tableValues CDATA #IMPLIED slope %Number.datatype; #IMPLIED intercept %Number.datatype; #IMPLIED amplitude %Number.datatype; #IMPLIED exponent %Number.datatype; #IMPLIED offset %Number.datatype; #IMPLIED

]]>

A.3.34 Cursor Module

The Cursor Module defines the Cursor.class element collection and the Cursor.attrib attribute collection.

Collection name Elements in collection
Cursor.class cursor
Collection name Elements in collection
Cursor.attrib cursor

<![%SVG.cursor.element;[ <!ENTITY % SVG.cursor.content "( %SVG.Description.class; %SVG.cursor.extra.content; )*"

]]>

<![%SVG.cursor.attlist;[ <!ATTLIST %SVG.cursor.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.XLinkRequired.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED

]]>

A.3.35 Hyperlinking Module

The Hyperlinking Module defines the Hyperlink.class element collection.

Collection name Elements in collection
Hyperlink.class a

<![%SVG.a.element;[ <!ENTITY % SVG.a.content "( #PCDATA | %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.a.extra.content; )*"

]]>

<![%SVG.a.attlist;[ <!ATTLIST %SVG.a.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.XLinkReplace.attrib; %SVG.External.attrib; transform %TransformList.datatype; #IMPLIED target %LinkTarget.datatype; #IMPLIED

]]>

A.3.36 View Module

The View Module defines the View.class element collection.

Collection name Elements in collection
View.class view

<![%SVG.view.element;[ <!ENTITY % SVG.view.content "( %SVG.Description.class; %SVG.view.extra.content; )*"

]]>

<![%SVG.view.attlist;[ <!ATTLIST %SVG.view.qname; %SVG.Core.attrib; %SVG.External.attrib; viewBox %ViewBoxSpec.datatype; #IMPLIED preserveAspectRatio %PreserveAspectRatioSpec.datatype; 'xMidYMid meet' zoomAndPan ( disable | magnify ) 'magnify' viewTarget CDATA #IMPLIED

]]>

A.3.37 Scripting Module

The Script Module defines the Script.class element collection.

Collection name Elements in collection
Script.class script

<![%SVG.script.element;[ <!ENTITY % SVG.script.content "( #PCDATA %SVG.script.extra.content; )*"

]]>

<![%SVG.script.attlist;[ <!ATTLIST %SVG.script.qname; %SVG.Core.attrib; %SVG.XLink.attrib; %SVG.External.attrib; type %ContentType.datatype; #REQUIRED

]]>

A.3.38 Animation Module

The Animation Module defines the Animation.class element collection and the Animation.attrib, AnimationAttribute.attrib, AnimationTiming.attrib, AnimationValue.attrib and AnimationAddtion.attrib attribute collections.

Collection name Elements in collection
Animation.class animate, animateColor, animateTransform, animateMotion, set
Collection name Attributes in collection
Animation.attrib XLink.attrib
AnimationAttribute.attrib attributeName, attributeType
AnimationTiming.attrib begin, dur, end, min, max, restart, repeatCount, repeatDur, fill
AnimationValue.attrib calcMode, values, keyTimes, keySplines, from, to, by
AnimationAddition.attrib additive, accumulate

<![%SVG.animate.element;[ <!ENTITY % SVG.animate.content "( %SVG.Description.class; %SVG.animate.extra.content; )*"

]]>

<![%SVG.animate.attlist;[ <!ATTLIST %SVG.animate.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.AnimationEvents.attrib; %SVG.External.attrib; %SVG.Animation.attrib; %SVG.AnimationAttribute.attrib; %SVG.AnimationTiming.attrib; %SVG.AnimationValue.attrib; %SVG.AnimationAddtion.attrib;

]]>

<![%SVG.set.element;[ <!ENTITY % SVG.set.content "( %SVG.Description.class; %SVG.set.extra.content; )*"

]]>

<![%SVG.set.attlist;[ <!ATTLIST %SVG.set.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.AnimationEvents.attrib; %SVG.External.attrib; %SVG.Animation.attrib; %SVG.AnimationAttribute.attrib; %SVG.AnimationTiming.attrib; to CDATA #IMPLIED

]]>

<![%SVG.animateMotion.element;[ <!ENTITY % SVG.animateMotion.content "( ( %SVG.mpath.qname;, ( %SVG.Description.class; %SVG.animateMotion.extra.content; )* ) | ( ( %SVG.Description.class; %SVG.animateMotion.extra.content; )+, %SVG.mpath.qname;, ( ( %SVG.Description.class; %SVG.animateMotion.extra.content; )* )? ) )"

]]>

<![%SVG.animateMotion.attlist;[ <!ATTLIST %SVG.animateMotion.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.AnimationEvents.attrib; %SVG.External.attrib; %SVG.Animation.attrib; %SVG.AnimationTiming.attrib; %SVG.AnimationAddtion.attrib; calcMode ( discrete | linear | paced | spline ) 'paced' values CDATA #IMPLIED keyTimes CDATA #IMPLIED keySplines CDATA #IMPLIED from CDATA #IMPLIED to CDATA #IMPLIED by CDATA #IMPLIED path CDATA #IMPLIED keyPoints CDATA #IMPLIED rotate CDATA #IMPLIED origin CDATA #IMPLIED

]]>

<![%SVG.animateColor.element;[ <!ENTITY % SVG.animateColor.content "( %SVG.Description.class; %SVG.animateColor.extra.content; )*"

]]>

<![%SVG.animateColor.attlist;[ <!ATTLIST %SVG.animateColor.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.AnimationEvents.attrib; %SVG.External.attrib; %SVG.Animation.attrib; %SVG.AnimationAttribute.attrib; %SVG.AnimationTiming.attrib; %SVG.AnimationValue.attrib; %SVG.AnimationAddtion.attrib;

]]>

<![%SVG.animateTransform.element;[ <!ENTITY % SVG.animateTransform.content "( %SVG.Description.class; %SVG.animateTransform.extra.content; )*"

]]>

<![%SVG.animateTransform.attlist;[ <!ATTLIST %SVG.animateTransform.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.AnimationEvents.attrib; %SVG.External.attrib; %SVG.Animation.attrib; %SVG.AnimationAttribute.attrib; %SVG.AnimationTiming.attrib; %SVG.AnimationValue.attrib; %SVG.AnimationAddtion.attrib; type ( translate | scale | rotate | skewX | skewY ) 'translate'

]]>

<![%SVG.mpath.element;[ <!ENTITY % SVG.mpath.content "( %SVG.Description.class; %SVG.mpath.extra.content; )*"

]]>

<![%SVG.mpath.attlist;[ <!ATTLIST %SVG.mpath.qname; %SVG.Core.attrib; %SVG.XLinkRequired.attrib; %SVG.External.attrib;

]]>

A.3.39 Font Module

The Font Module defines the Font.class element collection.

Collection name Elements in collection
Font.class font, font-face

<![%SVG.font.element;[ <!ENTITY % SVG.font.content "( %SVG.Description.class; | %SVG.font-face.qname; | %SVG.missing-glyph.qname; | %SVG.glyph.qname; | %SVG.hkern.qname; | %SVG.vkern.qname; %SVG.font.extra.content; )*"

]]>

<![%SVG.font.attlist;[ <!ATTLIST %SVG.font.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.External.attrib; horiz-origin-x %Number.datatype; #IMPLIED horiz-origin-y %Number.datatype; #IMPLIED horiz-adv-x %Number.datatype; #REQUIRED vert-origin-x %Number.datatype; #IMPLIED vert-origin-y %Number.datatype; #IMPLIED vert-adv-y %Number.datatype; #IMPLIED

]]>

<![%SVG.font-face.element;[ <!ENTITY % SVG.font-face.content "( ( %SVG.font-face-src.qname;, ( %SVG.Description.class; %SVG.font-face.extra.content; )* ) | ( ( %SVG.Description.class; %SVG.font-face.extra.content; )+, %SVG.font-face-src.qname;, ( ( %SVG.Description.class; %SVG.font-face.extra.content; )* )? ) )"

]]>

<![%SVG.font-face.attlist;[ <!ATTLIST %SVG.font-face.qname; %SVG.Core.attrib; 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.datatype; #IMPLIED panose-1 CDATA #IMPLIED stemv %Number.datatype; #IMPLIED stemh %Number.datatype; #IMPLIED slope %Number.datatype; #IMPLIED cap-height %Number.datatype; #IMPLIED x-height %Number.datatype; #IMPLIED accent-height %Number.datatype; #IMPLIED ascent %Number.datatype; #IMPLIED descent %Number.datatype; #IMPLIED widths CDATA #IMPLIED bbox CDATA #IMPLIED ideographic %Number.datatype; #IMPLIED alphabetic %Number.datatype; #IMPLIED mathematical %Number.datatype; #IMPLIED hanging %Number.datatype; #IMPLIED v-ideographic %Number.datatype; #IMPLIED v-alphabetic %Number.datatype; #IMPLIED v-mathematical %Number.datatype; #IMPLIED v-hanging %Number.datatype; #IMPLIED underline-position %Number.datatype; #IMPLIED underline-thickness %Number.datatype; #IMPLIED strikethrough-position %Number.datatype; #IMPLIED strikethrough-thickness %Number.datatype; #IMPLIED overline-position %Number.datatype; #IMPLIED overline-thickness %Number.datatype; #IMPLIED

]]>

<![%SVG.glyph.element;[ <!ENTITY % SVG.glyph.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.glyph.extra.content; )*"

]]>

<![%SVG.glyph.attlist;[ <!ATTLIST %SVG.glyph.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; unicode CDATA #IMPLIED glyph-name CDATA #IMPLIED d %PathData.datatype; #IMPLIED orientation CDATA #IMPLIED arabic-form CDATA #IMPLIED lang %LanguageCodes.datatype; #IMPLIED horiz-adv-x %Number.datatype; #IMPLIED vert-origin-x %Number.datatype; #IMPLIED vert-origin-y %Number.datatype; #IMPLIED vert-adv-y %Number.datatype; #IMPLIED

]]>

<![%SVG.missing-glyph.element;[ <!ENTITY % SVG.missing-glyph.content "( %SVG.Description.class; | %SVG.Animation.class; %SVG.Structure.class; %SVG.Conditional.class; %SVG.Image.class; %SVG.Style.class; %SVG.Shape.class; %SVG.Text.class; %SVG.Marker.class; %SVG.ColorProfile.class; %SVG.Gradient.class; %SVG.Pattern.class; %SVG.Clip.class; %SVG.Mask.class; %SVG.Filter.class; %SVG.Cursor.class; %SVG.Hyperlink.class; %SVG.View.class; %SVG.Script.class; %SVG.Font.class; %SVG.Extensibility.class; %SVG.missing-glyph.extra.content; )*"

]]>

<![%SVG.missing-glyph.attlist;[ <!ATTLIST %SVG.missing-glyph.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; d %PathData.datatype; #IMPLIED horiz-adv-x %Number.datatype; #IMPLIED vert-origin-x %Number.datatype; #IMPLIED vert-origin-y %Number.datatype; #IMPLIED vert-adv-y %Number.datatype; #IMPLIED

]]>

<![%SVG.hkern.element;[

]]>

<![%SVG.hkern.attlist;[ <!ATTLIST %SVG.hkern.qname; %SVG.Core.attrib; u1 CDATA #IMPLIED g1 CDATA #IMPLIED u2 CDATA #IMPLIED g2 CDATA #IMPLIED k %Number.datatype; #REQUIRED

]]>

<![%SVG.vkern.element;[

]]>

<![%SVG.vkern.attlist;[ <!ATTLIST %SVG.vkern.qname; %SVG.Core.attrib; u1 CDATA #IMPLIED g1 CDATA #IMPLIED u2 CDATA #IMPLIED g2 CDATA #IMPLIED k %Number.datatype; #REQUIRED

]]>

<![%SVG.font-face-src.element;[ <!ENTITY % SVG.font-face-src.content "( %SVG.font-face-uri.qname; | %SVG.font-face-name.qname; %SVG.font-face-src.extra.content; )+"

]]>

<![%SVG.font-face-src.attlist;[ <!ATTLIST %SVG.font-face-src.qname; %SVG.Core.attrib;

]]>

<![%SVG.font-face-uri.element;[ <!ENTITY % SVG.font-face-uri.content "( %SVG.font-face-format.qname; %SVG.font-face-uri.extra.content; )*"

]]>

<![%SVG.font-face-uri.attlist;[ <!ATTLIST %SVG.font-face-uri.qname; %SVG.Core.attrib; %SVG.XLinkRequired.attrib;

]]>

<![%SVG.font-face-format.element;[

]]>

<![%SVG.font-face-format.attlist;[ <!ATTLIST %SVG.font-face-format.qname; %SVG.Core.attrib; string CDATA #IMPLIED

]]>

<![%SVG.font-face-name.element;[

]]>

<![%SVG.font-face-name.attlist;[ <!ATTLIST %SVG.font-face-name.qname; %SVG.Core.attrib; name CDATA #IMPLIED

]]>

A.3.40 Basic Font Module

The Basic Font Module defines the Font.class element collection.

Collection name Elements in collection
Font.class font, font-face

<![%SVG.font.element;[ <!ENTITY % SVG.font.content "( %SVG.Description.class; | %SVG.font-face.qname; | %SVG.missing-glyph.qname; | %SVG.glyph.qname; | %SVG.hkern.qname; %SVG.font.extra.content; )*"

]]>

<![%SVG.font.attlist;[ <!ATTLIST %SVG.font.qname; %SVG.Core.attrib; %SVG.Style.attrib; %SVG.External.attrib; horiz-origin-x %Number.datatype; #IMPLIED horiz-adv-x %Number.datatype; #REQUIRED

]]>

<![%SVG.font-face.element;[ <!ENTITY % SVG.font-face.content "( ( %SVG.font-face-src.qname;, ( %SVG.Description.class; %SVG.font-face.extra.content; )* ) | ( ( %SVG.Description.class; %SVG.font-face.extra.content; )+, %SVG.font-face-src.qname;, ( ( %SVG.Description.class; %SVG.font-face.extra.content; )* )? ) )"

]]>

<![%SVG.font-face.attlist;[ <!ATTLIST %SVG.font-face.qname; %SVG.Core.attrib; 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.datatype; #IMPLIED panose-1 CDATA #IMPLIED stemv %Number.datatype; #IMPLIED stemh %Number.datatype; #IMPLIED slope %Number.datatype; #IMPLIED cap-height %Number.datatype; #IMPLIED x-height %Number.datatype; #IMPLIED accent-height %Number.datatype; #IMPLIED ascent %Number.datatype; #IMPLIED descent %Number.datatype; #IMPLIED widths CDATA #IMPLIED bbox CDATA #IMPLIED ideographic %Number.datatype; #IMPLIED alphabetic %Number.datatype; #IMPLIED mathematical %Number.datatype; #IMPLIED hanging %Number.datatype; #IMPLIED underline-position %Number.datatype; #IMPLIED underline-thickness %Number.datatype; #IMPLIED strikethrough-position %Number.datatype; #IMPLIED strikethrough-thickness %Number.datatype; #IMPLIED overline-position %Number.datatype; #IMPLIED overline-thickness %Number.datatype; #IMPLIED

]]>

<![%SVG.glyph.element;[ <!ENTITY % SVG.glyph.content "( %SVG.Description.class; %SVG.glyph.extra.content; )*"

]]>

<![%SVG.glyph.attlist;[ <!ATTLIST %SVG.glyph.qname; %SVG.Core.attrib; %SVG.Style.attrib; unicode CDATA #IMPLIED glyph-name CDATA #IMPLIED d %PathData.datatype; #IMPLIED arabic-form CDATA #IMPLIED lang %LanguageCodes.datatype; #IMPLIED horiz-adv-x %Number.datatype; #IMPLIED

]]>

<![%SVG.missing-glyph.element;[ <!ENTITY % SVG.missing-glyph.content "( %SVG.Description.class; %SVG.missing-glyph.extra.content; )*"

]]>

<![%SVG.missing-glyph.attlist;[ <!ATTLIST %SVG.missing-glyph.qname; %SVG.Core.attrib; %SVG.Style.attrib; d %PathData.datatype; #IMPLIED horiz-adv-x %Number.datatype; #IMPLIED

]]>

<![%SVG.hkern.element;[

]]>

<![%SVG.hkern.attlist;[ <!ATTLIST %SVG.hkern.qname; %SVG.Core.attrib; u1 CDATA #IMPLIED g1 CDATA #IMPLIED u2 CDATA #IMPLIED g2 CDATA #IMPLIED k %Number.datatype; #REQUIRED

]]>

<![%SVG.font-face-src.element;[ <!ENTITY % SVG.font-face-src.content "( %SVG.font-face-name.qname; %SVG.font-face-src.extra.content; )+"

]]>

<![%SVG.font-face-src.attlist;[ <!ATTLIST %SVG.font-face-src.qname; %SVG.Core.attrib;

]]>

<![%SVG.font-face-name.element;[

]]>

<![%SVG.font-face-name.attlist;[ <!ATTLIST %SVG.font-face-name.qname; %SVG.Core.attrib; name CDATA #IMPLIED

]]>

A.3.41 Extensibility Module

The Extensibility Module defines the Extensibility.class element collection.

Collection name Elements in collection
Extensibility.class foreignObject

<![%SVG.foreignObject.element;[ <!ENTITY % SVG.foreignObject.content "( #PCDATA %SVG.foreignObject.extra.content; )*"

]]>

<![%SVG.foreignObject.attlist;[ <!ATTLIST %SVG.foreignObject.qname; %SVG.Core.attrib; %SVG.Conditional.attrib; %SVG.Style.attrib; %SVG.Presentation.attrib; %SVG.GraphicalEvents.attrib; %SVG.External.attrib; x %Coordinate.datatype; #IMPLIED y %Coordinate.datatype; #IMPLIED width %Length.datatype; #REQUIRED height %Length.datatype; #REQUIRED transform %TransformList.datatype; #IMPLIED

]]>

A.4.1 SVG 1.1 DTD Driver

This section contains the DTD driver for the SVG 1.1 document type implementation as an XML DTD. It relies upon SVG 1.1 module implementations defined in Section A.3.

<![%svg-prefw-redecl.module;[ %svg-prefw-redecl.mod;]]>

<![%svg-framework.module;[ %svg-framework.mod;]]>

<![%svg-postfw-redecl.module;[ %svg-postfw-redecl.mod;]]>

<![%svg-core-attrib.module;[ %svg-core-attrib.mod;]]>

<![%svg-container-attrib.module;[ %svg-container-attrib.mod;]]>

<![%svg-viewport-attrib.module;[ %svg-viewport-attrib.mod;]]>

<![%svg-paint-attrib.module;[ %svg-paint-attrib.mod;]]>

<![%svg-opacity-attrib.module;[ %svg-opacity-attrib.mod;]]>

<![%svg-graphics-attrib.module;[ %svg-graphics-attrib.mod;]]>

<![%svg-docevents-attrib.module;[ %svg-docevents-attrib.mod;]]>

<![%svg-graphevents-attrib.module;[ %svg-graphevents-attrib.mod;]]>

<![%svg-animevents-attrib.module;[ %svg-animevents-attrib.mod;]]>

<![%svg-xlink-attrib.module;[ %svg-xlink-attrib.mod;]]>

<![%svg-extresources-attrib.module;[ %svg-extresources-attrib.mod;]]>

<![%svg-structure.module;[ %svg-structure.mod;]]>

<![%svg-conditional.module;[ %svg-conditional.mod;]]>

<![%svg-image.module;[ %svg-image.mod;]]>

<![%svg-style.module;[ %svg-style.mod;]]>

<![%svg-shape.module;[ %svg-shape.mod;]]>

<![%svg-text.module;[ %svg-text.mod;]]>

<![%svg-marker.module;[ %svg-marker.mod;]]>

<![%svg-profile.module;[ %svg-profile.mod;]]>

<![%svg-gradient.module;[ %svg-gradient.mod;]]>

<![%svg-pattern.module;[ %svg-pattern.mod;]]>

<![%svg-clip.module;[ %svg-clip.mod;]]>

<![%svg-mask.module;[ %svg-mask.mod;]]>

<![%svg-filter.module;[ %svg-filter.mod;]]>

<![%svg-cursor.module;[ %svg-cursor.mod;]]>

<![%svg-hyperlink.module;[ %svg-hyperlink.mod;]]>

<![%svg-view.module;[ %svg-view.mod;]]>

<![%svg-script.module;[ %svg-script.mod;]]>

<![%svg-animation.module;[ %svg-animation.mod;]]>

<![%svg-font.module;[ %svg-font.mod;]]>

<![%svg-extensibility.module;[ %svg-extensibility.mod;]]>

A.4.2 SVG 1.1 Document Model

A SVG Family Document Type (such as SVG 1.1) must define the content model that it uses. This is done through a separate content model module that is instantiated by the SVG Modular Framework. The content model module and the SVG 1.1 DTD Driver (above) work together to customize the module implementations to the document type's specific requirements. The content model module for SVG 1.1 is defined below:

A.4.3 SVG 1.1 Attribute Collection

This section contains the attribute collection for SVG 1.1. The attribute collection module and the SVG 1.1 DTD Driver work together to customize the module implementations to the document type's specific requirements.