The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

default namespace = "http://www.w3.org/2000/svg"
##
## SVG 1.1 Animation Module
## file: svg-animation.rng
##
## This is SVG, a language for describing two-dimensional graphics in XML.
## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
##
## $Id: svg-animation.rng,v 1.1 2003/07/15 07:11:10 dean Exp $
##
##
## Animation
##
## animate, set, animateMotion, animateColor, animateTransform, mpath
##
## This module declares markup to provide support for animation.
##
##
## SVG.Animation.class
##
[ xml:lang = "en" ]
grammar {
SVG.Animation.extra.class = notAllowed
SVG.Animation.class |=
animate
| set
| animateMotion
| animateColor
| animateTransform
| SVG.Animation.extra.class
a:documentation [ "\x{a}" ~ " SVG.Animation.attrib\x{a}" ~ " " ]
SVG.Animation.extra.attrib = empty
SVG.Animation.attrib = SVG.XLink.attrib, SVG.Animation.extra.attrib
a:documentation [
"\x{a}" ~
" SVG.AnimationAttribute.attrib\x{a}" ~
" "
]
SVG.AnimationAttribute.extra.attrib = empty
SVG.AnimationAttribute.attrib =
attribute attributeName { text },
attribute attributeType { text }?,
SVG.AnimationAttribute.extra.attrib
a:documentation [
"\x{a}" ~
" SVG.AnimationTiming.attrib\x{a}" ~
" "
]
SVG.AnimationTiming.extra.attrib = empty
SVG.AnimationTiming.attrib =
attribute begin { text }?,
attribute dur { text }?,
attribute end { text }?,
attribute min { text }?,
attribute max { text }?,
[ a:defaultValue = "always" ]
attribute restart { "always" | "never" | "whenNotActive" }?,
attribute repeatCount { text }?,
attribute repeatDur { text }?,
[ a:defaultValue = "remove" ]
attribute fill { "remove" | "freeze" }?,
SVG.AnimationTiming.extra.attrib
a:documentation [
"\x{a}" ~
" SVG.AnimationValue.attrib\x{a}" ~
" "
]
SVG.AnimationValue.extra.attrib = empty
SVG.AnimationValue.attrib =
[ a:defaultValue = "linear" ]
attribute calcMode { "discrete" | "linear" | "paced" | "spline" }?,
attribute values { text }?,
attribute keyTimes { text }?,
attribute keySplines { text }?,
attribute from { text }?,
attribute to { text }?,
attribute by { text }?,
SVG.AnimationValue.extra.attrib
a:documentation [
"\x{a}" ~
" SVG.AnimationAddtion.attrib\x{a}" ~
" "
]
SVG.AnimationAddtion.extra.attrib = empty
SVG.AnimationAddtion.attrib =
[ a:defaultValue = "replace" ]
attribute additive { "replace" | "sum" }?,
[ a:defaultValue = "none" ]
attribute accumulate { "none" | "sum" }?,
SVG.AnimationAddtion.extra.attrib
a:documentation [
"\x{a}" ~
" animate: Animate Element\x{a}" ~
" "
]
SVG.animate.content = SVG.Description.class*
animate = element animate { attlist.animate, SVG.animate.content }
attlist.animate &=
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
a:documentation [ "\x{a}" ~ " set: Set Element\x{a}" ~ " " ]
SVG.set.content = SVG.Description.class*
set = element set { attlist.set, SVG.set.content }
attlist.set &=
SVG.Core.attrib,
SVG.Conditional.attrib,
SVG.AnimationEvents.attrib,
SVG.External.attrib,
SVG.Animation.attrib,
SVG.AnimationAttribute.attrib,
SVG.AnimationTiming.attrib,
attribute to { text }?
a:documentation [
"\x{a}" ~
" animateMotion: Animate Motion Element\x{a}" ~
" "
]
SVG.animateMotion.content = SVG.Description.class*, mpath?
animateMotion =
element animateMotion {
attlist.animateMotion, SVG.animateMotion.content
}
attlist.animateMotion &=
SVG.Core.attrib,
SVG.Conditional.attrib,
SVG.AnimationEvents.attrib,
SVG.External.attrib,
SVG.Animation.attrib,
SVG.AnimationTiming.attrib,
SVG.AnimationAddtion.attrib,
[ a:defaultValue = "paced" ]
attribute calcMode { "discrete" | "linear" | "paced" | "spline" }?,
attribute values { text }?,
attribute keyTimes { text }?,
attribute keySplines { text }?,
attribute from { text }?,
attribute to { text }?,
attribute by { text }?,
attribute path { text }?,
attribute keyPoints { text }?,
attribute rotate { text }?,
attribute origin { text }?
a:documentation [
"\x{a}" ~
" animateColor: Animate Color Element\x{a}" ~
" "
]
SVG.animateColor.content = SVG.Description.class*
animateColor =
element animateColor {
attlist.animateColor, SVG.animateColor.content
}
attlist.animateColor &=
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
a:documentation [
"\x{a}" ~
" animateTransform: Animate Transform Element\x{a}" ~
" "
]
SVG.animateTransform.content = SVG.Description.class*
animateTransform =
element animateTransform {
attlist.animateTransform, SVG.animateTransform.content
}
attlist.animateTransform &=
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,
[ a:defaultValue = "translate" ]
attribute type {
"translate" | "scale" | "rotate" | "skewX" | "skewY"
}?
a:documentation [
"\x{a}" ~
" mpath: Motion Path Element\x{a}" ~
" "
]
SVG.mpath.content = SVG.Description.class*
mpath = element mpath { attlist.mpath, SVG.mpath.content }
attlist.mpath &=
SVG.Core.attrib, SVG.XLinkRequired.attrib, SVG.External.attrib
}