Document Type Definition

This appendix is normative.

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 Criteria for 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 from http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20110816.dtd.

Modularization

The modularization of SVG included here is a decomposition of SVG 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. See Conformance for a description of SVG family documents, and An 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").

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).

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.

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.

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.

Modular Framework Module

Datatypes Module

Qualified Name Module

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

Container Attribute Module

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

Collection name Attributes in collection
Container.attrib enable-background

Viewport Attribute Module

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

Collection name Attributes in collection
Viewport.attrib clip, overflow

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

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

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

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

Basic Graphics Attribute Module

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

Collection name Attributes in collection
Graphics.attrib display, visibility

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

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

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

XLink Attribute Module

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

External Resources Attribute Module

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

Collection name Attributes in collection
External.attrib externalResourcesRequired

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

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

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

Image Module

The Image Module defines the Image.class element collection.

Collection name Elements in collection
Image.class image

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

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

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

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

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

Color Profile Module

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

Collection name Elements in collection
ColorProfile.class color-profile

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

Pattern Module

The Pattern Module defines the Pattern.class element collection.

Collection name Elements in collection
Pattern.class pattern

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

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

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

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

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

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

Hyperlinking Module

The Hyperlinking Module defines the Hyperlink.class element collection.

Collection name Elements in collection
Hyperlink.class a

View Module

The View Module defines the View.class element collection.

Collection name Elements in collection
View.class view

Scripting Module

The Script Module defines the Script.class element collection.

Collection name Elements in collection
Script.class script

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

Font Module

The Font Module defines the Font.class element collection.

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

Basic Font Module

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

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

Extensibility Module

The Extensibility Module defines the Extensibility.class element collection.

Collection name Elements in collection
Extensibility.class foreignObject

SVG 1.1 Document Type Definition

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 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:

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.