Browsable Scalable Vector Graphics (SVG) Grammar

CC-BY

Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: markup/graphical/svg/furubayashi-tiny/extracted
Source used for this grammar: Yutaka Furubayashi, RELAX NG Schema on SVG 1.1 (Tiny), 15 March 2008

Summary

Syntax

SVG.Animation.extra.attrib ::=
	ε
SVG.Animation.attrib ::=
	SVG.XLink.attrib SVG.Animation.extra.attrib
SVG.AnimationAttribute.extra.attrib ::=
	ε
SVG.AnimationAttribute.attrib ::=
	[attributeName]::string [attributeType]::string? SVG.AnimationAttribute.extra.attrib
SVG.AnimationTiming.extra.attrib ::=
	ε
SVG.AnimationTiming.attrib ::=
	[begin]::string? [dur]::string? [end]::string? [min]::string? [max]::string? [restart]::("always" | "never" | "whenNotActive")? [repeatCount]::string? [repeatDur]::string? [fill]::("remove" | "freeze")? SVG.AnimationTiming.extra.attrib
SVG.AnimationValue.extra.attrib ::=
	ε
SVG.AnimationValue.attrib ::=
	[calcMode]::("discrete" | "linear" | "paced" | "spline")? [values]::string? [keyTimes]::string? [keySplines]::string? [from]::string? [to]::string? [by]::string? SVG.AnimationValue.extra.attrib
SVG.AnimationAddition.extra.attrib ::=
	ε
SVG.AnimationAddtion.attrib ::=
	[additive]::("replace" | "sum")? [accumulate]::("none" | "sum")? SVG.AnimationAddition.extra.attrib
SVG.Animation.extra.class ::=
	ε
SVG.Animation.class ::=
	SVG.animate
	SVG.set
	SVG.animateMotion
	SVG.animateColor
	SVG.animateTransform
	SVG.Animation.extra.class
SVG.animate ::=
	[animate]::(SVG.Description.class* 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 ::=
	[set]::(SVG.Description.class* SVG.Core.attrib SVG.Conditional.attrib SVG.AnimationEvents.attrib SVG.External.attrib SVG.Animation.attrib SVG.AnimationAttribute.attrib SVG.AnimationTiming.attrib [to]::string?)
SVG.animateMotion ::=
	[animateMotion]::(SVG.Description.class* SVG.mpath? 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")? [values]::string? [keyTimes]::string? [Splines]::string? [from]::string? [to]::string? [by]::string? [path]::string? [keyPoints]::string? [rotate]::string? [origin]::string?)
SVG.animateColor ::=
	[animateColor]::(SVG.Description.class* 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 ::=
	[animateTransform]::(SVG.Description.class* 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")?)
SVG.mpath ::=
	[mpath]::(SVG.Description.class* SVG.Core.attrib SVG.XLinkRequired.attrib SVG.External.attrib)
SVG.Font.extra.class ::=
	ε
SVG.Font.class ::=
	SVG.font
	SVG.font-face
	SVG.Font.extra.class
SVG.font ::=
	[font]::(SVG.Description.class* SVG.font-face SVG.missing-glyph (SVG.glyph | SVG.hkern)* SVG.Core.attrib SVG.Style.attrib SVG.External.attrib [horiz-origin-x]::SVG.Number.datatype? [horiz-adv-x]::SVG.Number.datatype)
SVG.font-face ::=
	[font-face]::(SVG.Description.class* SVG.font-face-src? SVG.Core.attrib [font-family]::string? [font-style]::string? [font-variant]::string? [font-weight]::string? [font-stretch]::string? [font-size]::string? [unicode-range]::string? [units-per-em]::SVG.Number.datatype? [panose-1]::string? [stemv]::SVG.Number.datatype? [stemh]::SVG.Number.datatype? [slope]::SVG.Number.datatype? [cap-height]::SVG.Number.datatype? [x-height]::SVG.Number.datatype? [accent-height]::SVG.Number.datatype? [ascent]::SVG.Number.datatype? [descent]::SVG.Number.datatype? [widths]::string? [bbox]::string? [ideographic]::SVG.Number.datatype? [alphabetic]::SVG.Number.datatype? [mathematical]::SVG.Number.datatype? [hanging]::SVG.Number.datatype? [underline-position]::SVG.Number.datatype? [underline-thickness]::SVG.Number.datatype? [strikethrough-position]::SVG.Number.datatype? [strikethrough-thickness]::SVG.Number.datatype? [overline-position]::SVG.Number.datatype? [overline-thickness]::SVG.Number.datatype?)
SVG.glyph ::=
	[glyph]::(SVG.Description.class* SVG.Core.attrib SVG.Style.attrib [unicode]::string? [glyph-name]::string? [d]::SVG.PathData.datatype? [arabic-form]::string? [lang]::SVG.LanguageCodes.datatype? [horiz-adv-x]::SVG.Number.datatype?)
SVG.missing-glyph ::=
	[missing-glyph]::(SVG.Description.class* SVG.Core.attrib SVG.Style.attrib [d]::SVG.PathData.datatype? [horiz-adv-x]::SVG.Number.datatype?)
SVG.hkern ::=
	[hkern]::(ε SVG.Core.attrib [u1]::string? [g1]::string? [u2]::string? [g2]::string? [k]::SVG.Number.datatype)
SVG.font-face-src ::=
	[font-face-src]::(SVG.font-face-name+ SVG.Core.attrib)
SVG.font-face-name ::=
	[font-face-name]::(ε SVG.Core.attrib [name]::string?)
SVG.display.attrib ::=
	[display]::("inline" | "block" | "list-item" | "run-in" | "compact" | "marker" | "table" | "inline-table" | "table-row-group" | "table-header-group" | "table-footer-group" | "table-row" | "table-column-group" | "table-column" | "table-cell" | "table-caption" | "none" | "inherit")?
SVG.visibility.attrib ::=
	[visibility]::("visible" | "hidden" | "inherit")?
SVG.Graphics.extra.attrib ::=
	ε
SVG.Graphics.attrib ::=
	SVG.display.attrib SVG.visibility.attrib SVG.Graphics.extra.attrib
SVG.Paint.datatype ::=
	string
SVG.StrokeDashArrayValue.datatype ::=
	string
SVG.StrokeDashOffsetValue.datatype ::=
	string
SVG.StrokeMiterLimitValue.datatype ::=
	string
SVG.StrokeWidthValue.datatype ::=
	string
SVG.fill.attrib ::=
	[fill]::SVG.Paint.datatype?
SVG.fill-rule.attrib ::=
	[fill-rule]::SVG.ClipFillRule.datatype?
SVG.stroke.attrib ::=
	[stroke]::SVG.Paint.datatype?
SVG.stroke-dasharray.attrib ::=
	[stroke-dasharray]::SVG.StrokeDashArrayValue.datatype?
SVG.stroke-dashoffset.attrib ::=
	[stroke-dashoffset]::SVG.StrokeDashOffsetValue.datatype?
SVG.stroke-linecap.attrib ::=
	[stroke-linecap]::("butt" | "round" | "square" | "inherit")?
SVG.stroke-linejoin.attrib ::=
	[stroke-linejoin]::("miter" | "round" | "bevel" | "inherit")?
SVG.stroke-miterlimit.attrib ::=
	[stroke-miterlimit]::SVG.StrokeMiterLimitValue.datatype?
SVG.stroke-width.attrib ::=
	[stroke-width]::SVG.StrokeWidthValue.datatype?
SVG.Paint.extra.attrib ::=
	ε
SVG.Paint.attrib ::=
	SVG.fill.attrib SVG.fill-rule.attrib SVG.stroke.attrib SVG.stroke-dasharray.attrib SVG.stroke-dashoffset.attrib SVG.stroke-linecap.attrib SVG.stroke-linejoin.attrib SVG.stroke-miterlimit.attrib SVG.stroke-width.attrib SVG.Paint.extra.attrib
SVG.color.attrib ::=
	[color]::SVG.Color.datatype?
SVG.color-rendering.attrib ::=
	[color-rendering]::("auto" | "optimizeSpeed" | "optimizeQuality" | "inherit")?
SVG.Color.extra.attrib ::=
	ε
SVG.Color.attrib ::=
	SVG.color.attrib SVG.color-rendering.attrib SVG.Color.extra.attrib
SVG.Description.extra.class ::=
	ε
SVG.Description.class ::=
	SVG.desc
	SVG.title
	SVG.metadata
	SVG.Description.extra.class
SVG.Use.extra.class ::=
	ε
SVG.Use.class ::=
	SVG.use
	SVG.Use.extra.class
SVG.Structure.extra.class ::=
	ε
SVG.Structure.class ::=
	SVG.g
	SVG.defs
	SVG.Use.class
	SVG.Structure.extra.class
SVG.svg ::=
	[svg]::((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.Profile.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.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.DocumentEvents.attrib SVG.GraphicalEvents.attrib SVG.External.attrib [x]::SVG.Coordinate.datatype? [y]::SVG.Coordinate.datatype? [width]::SVG.Length.datatype? [height]::SVG.Length.datatype? [viewBox]::SVG.ViewBoxSpec.datatype? [preserveAspectRatio]::SVG.PreserveAspectRatioSpec.datatype? [zoomAndPan]::("disable" | "magnify")? [version]::SVG.Number.datatype [baseProfile]::SVG.Text.datatype?)
SVG.g ::=
	[g]::((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.Profile.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.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.GraphicalEvents.attrib SVG.External.attrib [transform]::SVG.TransformList.datatype?)
SVG.defs ::=
	[defs]::((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.Profile.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.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.GraphicalEvents.attrib SVG.External.attrib [transform]::SVG.TransformList.datatype?)
SVG.desc ::=
	[desc]::(string SVG.Core.attrib SVG.Style.attrib)
SVG.title ::=
	[title]::(string SVG.Core.attrib SVG.Style.attrib)
SVG.metadata ::=
	[metadata]::(string SVG.Core.attrib)
SVG.use ::=
	[use]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.GraphicalEvents.attrib SVG.XLinkEmbed.attrib SVG.External.attrib [x]::SVG.Coordinate.datatype? [y]::SVG.Coordinate.datatype? [width]::SVG.Length.datatype? [height]::SVG.Length.datatype? [transform]::SVG.TransformList.datatype?)
SVG.FontFamilyValue.datatype ::=
	string
SVG.FontSizeValue.datatype ::=
	string
SVG.Text.extra.class ::=
	ε
SVG.Text.class ::=
	SVG.text
	SVG.Text.extra.class
SVG.TextContent.extra.attrib ::=
	ε
SVG.TextContent.attrib ::=
	[text-anchor]::("start" | "middle" | "end" | "inherit")? SVG.TextContent.extra.attrib
SVG.Font.extra.attrib ::=
	ε
SVG.Font.attrib ::=
	[font-family]::SVG.FontFamilyValue.datatype? [font-size]::SVG.FontSizeValue.datatype? [font-style]::("normal" | "italic" | "oblique" | "inherit")? [font-weight]::("normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | "inherit")? SVG.Font.extra.attrib
SVG.text ::=
	[text]::((string | SVG.Description.class | SVG.Animation.class | SVG.Hyperlink.class)* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.TextContent.attrib SVG.Font.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [x]::SVG.Coordinates.datatype? [y]::SVG.Coordinates.datatype? [rotate]::SVG.Numbers.datatype? [transform]::SVG.TransformList.datatype?)
SVG.ExtensionList.datatype ::=
	string
SVG.FeatureList.datatype ::=
	string
SVG.Conditional.extra.class ::=
	ε
SVG.Conditional.class ::=
	SVG.switch
	SVG.Conditional.extra.class
SVG.Conditional.extra.attrib ::=
	ε
SVG.Conditional.attrib ::=
	[requiredFeatures]::SVG.FeatureList.datatype? [requiredExtensions]::SVG.ExtensionList.datatype? [systemLanguage]::SVG.LanguageCodes.datatype? SVG.Conditional.extra.attrib
SVG.switch ::=
	[switch]::(SVG.Description.class* (SVG.svg | SVG.g | SVG.use | SVG.text | SVG.text | SVG.Animation.class | SVG.Conditional.class | SVG.Image.class | SVG.Shape.class | SVG.Hyperlink.class | SVG.Extensibility.class)* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.GraphicalEvents.attrib SVG.External.attrib [transform]::SVG.TransformList.datatype?)
SVG.id.attrib ::=
	[id]::SVG.ID.datatype?
SVG.base.attrib ::=
	[xml:base]::SVG.URI.datatype?
SVG.lang.attrib ::=
	[xml:lang]::SVG.LanguageCode.datatype?
SVG.space.attrib ::=
	[xml:space]::("default" | "preserve")?
SVG.Core.extra.attrib ::=
	ε
SVG.Core.attrib ::=
	SVG.id.attrib SVG.base.attrib SVG.lang.attrib SVG.space.attrib SVG.Core.extra.attrib
SVG.ID.datatype ::=
	string
SVG.Text.datatype ::=
	string
SVG.Length.datatype ::=
	string
SVG.Lengths.datatype ::=
	string
SVG.URI.datatype ::=
	string
SVG.PreserveAspectRatioSpec.datatype ::=
	string
SVG.OpacityValue.datatype ::=
	string
SVG.Integer.datatype ::=
	integer
SVG.Coordinate.datatype ::=
	string
SVG.Coordinates.datatype ::=
	string
SVG.LanguageCode.datatype ::=
	string
SVG.LanguageCodes.datatype ::=
	string
SVG.Color.datatype ::=
	string
SVG.Script.datatype ::=
	string
SVG.ContentType.datatype ::=
	string
SVG.ViewBoxSpec.datatype ::=
	string
SVG.Boolean.datatype ::=
	string
SVG.Number.datatype ::=
	integer
SVG.Numbers.datatype ::=
	string
SVG.ClipFillRule.datatype ::=
	string
SVG.SVGColor.datatype ::=
	string
SVG.TransformList.datatype ::=
	string
SVG.PathData.datatype ::=
	string
SVG.AnimationEvents.attrib ::=
	ε
SVG.Clip.attrib ::=
	ε
SVG.Color.attrib ::=
	ε
SVG.Conditional.attrib ::=
	ε
SVG.Container.attrib ::=
	ε
SVG.Core.attrib ::=
	ε
SVG.Cursor.attrib ::=
	ε
SVG.External.attrib ::=
	ε
SVG.Filter.attrib ::=
	ε
SVG.FilterColor.attrib ::=
	ε
SVG.Font.attrib ::=
	ε
SVG.Gradient.attrib ::=
	ε
SVG.GraphicalEvents.attrib ::=
	ε
SVG.Graphics.attrib ::=
	ε
SVG.Marker.attrib ::=
	ε
SVG.Mask.attrib ::=
	ε
SVG.Opacity.attrib ::=
	ε
SVG.Paint.attrib ::=
	ε
SVG.Profile.attrib ::=
	ε
SVG.Style.attrib ::=
	ε
SVG.Text.attrib ::=
	ε
SVG.TextContent.attrib ::=
	ε
SVG.Viewport.attrib ::=
	ε
SVG.XLink.attrib ::=
	ε
XLinkEmbed.attrib ::=
	ε
XLinkRequired.attrib ::=
	ε
SVG.Presentation.extra.attrib ::=
	ε
SVG.Presentation.attrib ::=
	SVG.Container.attrib SVG.Viewport.attrib SVG.Text.attrib SVG.TextContent.attrib SVG.Font.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Marker.attrib SVG.Profile.attrib SVG.Gradient.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.FilterColor.attrib SVG.Cursor.attrib [flood-color]::SVG.SVGColor.datatype? [flood-opacity]::SVG.OpacityValue.datatype? [lighting-color]::SVG.SVGColor.datatype? SVG.Presentation.extra.attrib
SVG.Extensibility.extra.class ::=
	ε
SVG.Extensibility.class ::=
	SVG.foreignObject
	SVG.Extensibility.extra.class
SVG.foreignObject ::=
	[foreignObject]::(SVG.foreignObject.content SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.GraphicalEvents.attrib SVG.External.attrib [x]::SVG.Coordinate.datatype? [y]::SVG.Coordinate.datatype? [width]::SVG.Length.datatype [height]::SVG.Length.datatype [transform]::SVG.TransformList.datatype?)
SVG.foreignObject.content ::=
	SVG.foreignObject.class*
SVG.foreignObject.class ::=
	string
SVG.externalResourcesRequired.attrib ::=
	[externalResourcesRequired]::SVG.Boolean.datatype?
SVG.External.extra.attrib ::=
	ε
SVG.External.attrib ::=
	SVG.externalResourcesRequired.attrib SVG.External.extra.attrib
SVG.LinkTarget.datatype ::=
	string
SVG.Hyperlink.extra.class ::=
	ε
SVG.Hyperlink.class ::=
	SVG.a
	SVG.Hyperlink.extra.class
SVG.a ::=
	[a]::((string | 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.Profile.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.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Presentation.attrib SVG.GraphicalEvents.attrib SVG.XLinkReplace.attrib SVG.External.attrib [transform]::SVG.TransformList.datatype? [target]::SVG.LinkTarget.datatype?)
SVG.Image.extra.class ::=
	ε
SVG.Image.class ::=
	SVG.image
	SVG.Image.extra.class
SVG.image ::=
	[image]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Viewport.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Profile.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.XLinkEmbed.attrib SVG.External.attrib [x]::SVG.Coordinate.datatype? [y]::SVG.Coordinate.datatype? [width]::SVG.Length.datatype [height]::SVG.Length.datatype [preserveAspectRatio]::SVG.PreserveAspectRatioSpec.datatype? [transform]::SVG.TransformList.datatype?)
SVG.Script.extra.class ::=
	ε
SVG.Script.class ::=
	SVG.script
	SVG.Script.extra.class
SVG.script ::=
	[script]::(string SVG.Core.attrib SVG.XLink.attrib SVG.External.attrib [type]::SVG.ContentType.datatype)
SVG.Points.datatype ::=
	string
SVG.Shape.extra.class ::=
	ε
SVG.Shape.class ::=
	SVG.path
	SVG.rect
	SVG.circle
	SVG.line
	SVG.ellipse
	SVG.polyline
	SVG.polygon
	SVG.Shape.extra.class
SVG.path ::=
	[path]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Marker.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [d]::SVG.PathData.datatype [pathLength]::SVG.Number.datatype? [transform]::SVG.TransformList.datatype?)
SVG.rect ::=
	[rect]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [x]::SVG.Coordinate.datatype? [y]::SVG.Coordinate.datatype? [width]::SVG.Length.datatype [height]::SVG.Length.datatype [rx]::SVG.Length.datatype? [ry]::SVG.Length.datatype? [transform]::SVG.TransformList.datatype?)
SVG.circle ::=
	[circle]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [cx]::SVG.Coordinate.datatype? [cy]::SVG.Coordinate.datatype? [r]::SVG.Length.datatype [transform]::SVG.TransformList.datatype?)
SVG.line ::=
	[line]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Marker.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [x1]::SVG.Coordinate.datatype? [y1]::SVG.Coordinate.datatype? [x2]::SVG.Coordinate.datatype? [y2]::SVG.Coordinate.datatype? [transform]::SVG.TransformList.datatype?)
SVG.ellipse ::=
	[ellipse]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [cx]::SVG.Coordinate.datatype? [cy]::SVG.Coordinate.datatype? [rx]::SVG.Length.datatype [ry]::SVG.Length.datatype [transform]::SVG.TransformList.datatype?)
SVG.polyline ::=
	[polyline]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Marker.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [points]::SVG.Points.datatype [transform]::SVG.TransformList.datatype?)
SVG.polygon ::=
	[polygon]::(SVG.Description.class* SVG.Animation.class* SVG.Core.attrib SVG.Conditional.attrib SVG.Style.attrib SVG.Paint.attrib SVG.Color.attrib SVG.Opacity.attrib SVG.Graphics.attrib SVG.Marker.attrib SVG.Clip.attrib SVG.Mask.attrib SVG.Filter.attrib SVG.GraphicalEvents.attrib SVG.Cursor.attrib SVG.External.attrib [points]::SVG.Points.datatype [transform]::SVG.TransformList.datatype?)
SVG.ClassList.datatype ::=
	string
SVG.MediaDesc.datatype ::=
	string
SVG.StyleSheet.datatype ::=
	string
SVG.Style.extra.class ::=
	ε
SVG.Style.class ::=
	SVG.style
	SVG.Style.extra.class
SVG.Style.extra.attrib ::=
	ε
SVG.Style.attrib ::=
	[style]::SVG.StyleSheet.datatype? [class]::SVG.ClassList.datatype? SVG.Style.extra.attrib
SVG.style ::=
	[style]::(string SVG.Core.attrib [type]::SVG.ContentType.datatype [media]::SVG.MediaDesc.datatype? [title]::SVG.Text.datatype?)
SVG.Cursor.class ::=
	ε
SVG.Pattern.class ::=
	ε
SVG.Mask.class ::=
	ε
SVG.Marker.class ::=
	ε
SVG.Profile.class ::=
	ε
SVG.Gradient.class ::=
	ε
SVG.Filter.class ::=
	ε
SVG.Clip.class ::=
	ε
SVG.DocumentEvents.attrib ::=
	ε
SVG.View.extra.class ::=
	ε
SVG.View.class ::=
	SVG.view
	SVG.View.extra.class
SVG.view ::=
	[view]::(SVG.Description.class* SVG.Core.attrib SVG.External.attrib [viewBox]::SVG.ViewBoxSpec.datatype? [preserveAspectRatio]::SVG.PreserveAspectRatioSpec.datatype? [zoomAndPan]::("disable" | "magnify")? [viewTarget]::string?)
SVG.XLink.extra.attrib ::=
	ε
SVG.XLink.attrib ::=
	[xlink:type]::"simple"? [xlink:href]::SVG.URI.datatype? [xlink:role]::SVG.URI.datatype? [xlink:arcrole]::SVG.URI.datatype? [xlink:title]::string? [xlink:show]::"other"? [xlink:actuate]::"onLoad"? SVG.XLink.extra.attrib
SVG.XLinkRequired.extra.attrib ::=
	ε
SVG.XLinkRequired.attrib ::=
	[xlink:type]::"simple"? [xlink:href]::SVG.URI.datatype [xlink:role]::SVG.URI.datatype? [xlink:arcrole]::SVG.URI.datatype? [xlink:title]::string? [xlink:show]::"other"? [xlink:actuate]::"onLoad"? SVG.XLinkRequired.extra.attrib
SVG.XLinkEmbed.extra.attrib ::=
	ε
SVG.XLinkEmbed.attrib ::=
	[xlink:type]::"simple"? [xlink:href]::SVG.URI.datatype [xlink:role]::SVG.URI.datatype? [xlink:arcrole]::SVG.URI.datatype? [xlink:title]::string? [xlink:show]::"embed"? [xlink:actuate]::"onLoad"? SVG.XLinkEmbed.extra.attrib
SVG.XLinkReplace.extra.attrib ::=
	ε
SVG.XLinkReplace.attrib ::=
	[xlink:type]::"simple"? [xlink:href]::SVG.URI.datatype [xlink:role]::SVG.URI.datatype? [xlink:arcrole]::SVG.URI.datatype? [xlink:title]::string? [xlink:show]::("new" | "replace")? [xlink:actuate]::"onRequest"? SVG.XLinkReplace.extra.attrib

GrammarLabMaintained by Dr. Vadim Zaytsev a.k.a. @grammarware. Last updated in September 2015. []