default namespace = "http://www.w3.org/2000/svg" namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" ## ## SVG 1.1 Basic Filter Module ## file: svg-basic-filter.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-basic-filter.rng,v 1.1 2003/07/15 07:11:10 dean Exp $ ## ## ## Basic Filter ## ## filter, feBlend, feColorMatrix, feComponentTransfer, feComposite, ## feFlood, feGaussianBlur, feImage, feMerge, feMergeNode, feOffset, ## feTile, feFuncR, feFuncG, feFuncB, feFuncA ## ## This module declares markup to provide support for filter effect. ## ## ## Datatypes ## [ xml:lang = "en" ] grammar { FilterValue.datatype = xsd:string NumberOptionalNumber.datatype = xsd:string a:documentation [ "\x{a}" ~ " SVG.Filter.attrib\x{a}" ~ " " ] SVG.Filter.extra.attrib = empty SVG.Filter.attrib &= attribute filter { FilterValue.datatype }?, SVG.Filter.extra.attrib a:documentation [ "\x{a}" ~ " SVG.FilterColor.attrib\x{a}" ~ " " ] SVG.FilterColor.extra.attrib = empty SVG.FilterColor.attrib &= attribute color-interpolation-filters { "auto" | "sRGB" | "linearRGB" | "inherit" }?, SVG.FilterColor.extra.attrib a:documentation [ "\x{a}" ~ " SVG.Filter.class\x{a}" ~ " " ] SVG.Filter.extra.class = notAllowed SVG.Filter.class |= filter | SVG.Filter.extra.class a:documentation [ "\x{a}" ~ " SVG.FilterPrimitive.class\x{a}" ~ " " ] SVG.FilterPrimitive.extra.class = notAllowed SVG.FilterPrimitive.class = feBlend | feColorMatrix | feComponentTransfer | feComposite | feFlood | feGaussianBlur | feImage | feMerge | feOffset | feTile | SVG.FilterPrimitive.extra.class a:documentation [ "\x{a}" ~ " SVG.FilterPrimitive.attrib\x{a}" ~ " " ] SVG.FilterPrimitive.extra.attrib = empty SVG.FilterPrimitive.attrib = attribute x { Coordinate.datatype }?, attribute y { Coordinate.datatype }?, attribute width { Length.datatype }?, attribute height { Length.datatype }?, attribute result { text }?, SVG.FilterPrimitive.extra.attrib a:documentation [ "\x{a}" ~ " SVG.FilterPrimitiveWithIn.attrib\x{a}" ~ " " ] SVG.FilterPrimitiveWithIn.extra.attrib = empty SVG.FilterPrimitiveWithIn.attrib = SVG.FilterPrimitive.attrib, attribute in { text }?, SVG.FilterPrimitiveWithIn.extra.attrib a:documentation [ "\x{a}" ~ " filter: Filter Element\x{a}" ~ " " ] SVG.filter.content = SVG.Description.class*, (animate | set | SVG.FilterPrimitive.class)* filter = element filter { attlist.filter, SVG.filter.content } attlist.filter &= SVG.Core.attrib, SVG.Style.attrib, SVG.Presentation.attrib, SVG.XLink.attrib, SVG.External.attrib, attribute x { Coordinate.datatype }?, attribute y { Coordinate.datatype }?, attribute width { Length.datatype }?, attribute height { Length.datatype }?, attribute filterRes { NumberOptionalNumber.datatype }?, attribute filterUnits { "userSpaceOnUse" | "objectBoundingBox" }?, attribute primitiveUnits { "userSpaceOnUse" | "objectBoundingBox" }? a:documentation [ "\x{a}" ~ " feBlend: Filter Effect Blend Element\x{a}" ~ " " ] SVG.feBlend.content = (animate | set)* feBlend = element feBlend { attlist.feBlend, SVG.feBlend.content } attlist.feBlend &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib, attribute in2 { text }, [ a:defaultValue = "normal" ] attribute mode { "normal" | "multiply" | "screen" | "darken" | "lighten" }? a:documentation [ "\x{a}" ~ " feColorMatrix: Filter Effect Color Matrix Element\x{a}" ~ " " ] SVG.feColorMatrix.content = (animate | set)* feColorMatrix = element feColorMatrix { attlist.feColorMatrix, SVG.feColorMatrix.content } attlist.feColorMatrix &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib, [ a:defaultValue = "matrix" ] attribute type { "matrix" | "saturate" | "hueRotate" | "luminanceToAlpha" }?, attribute values { text }? a:documentation [ "\x{a}" ~ " feComponentTransfer: Filter Effect Component Transfer Element\x{a}" ~ " " ] SVG.feComponentTransfer.content = feFuncR?, feFuncG?, feFuncB?, feFuncA? feComponentTransfer = element feComponentTransfer { attlist.feComponentTransfer, SVG.feComponentTransfer.content } attlist.feComponentTransfer &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib a:documentation [ "\x{a}" ~ " feComposite: Filter Effect Composite Element\x{a}" ~ " " ] SVG.feComposite.content = (animate | set)* feComposite = element feComposite { attlist.feComposite, SVG.feComposite.content } attlist.feComposite &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib, attribute in2 { text }, [ a:defaultValue = "over" ] attribute operator { "over" | "in" | "out" | "atop" | "xor" | "arithmetic" }?, attribute k1 { Number.datatype }?, attribute k2 { Number.datatype }?, attribute k3 { Number.datatype }?, attribute k4 { Number.datatype }? a:documentation [ "\x{a}" ~ " feFlood: Filter Effect Flood Element\x{a}" ~ " " ] SVG.feFlood.content = (animate | set | animateColor)* feFlood = element feFlood { attlist.feFlood, SVG.feFlood.content } attlist.feFlood &= SVG.Core.attrib, SVG.Style.attrib, SVG.Color.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib, attribute flood-color { SVGColor.datatype }?, attribute flood-opacity { OpacityValue.datatype }? a:documentation [ "\x{a}" ~ " feGaussianBlur: Filter Effect Gaussian Blur Element\x{a}" ~ " " ] SVG.feGaussianBlur.content = (animate | set)* feGaussianBlur = element feGaussianBlur { attlist.feGaussianBlur, SVG.feGaussianBlur.content } attlist.feGaussianBlur &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib, attribute stdDeviation { NumberOptionalNumber.datatype }? a:documentation [ "\x{a}" ~ " feImage: Filter Effect Image Element\x{a}" ~ " " ] SVG.feImage.content = (animate | set | animateTransform)* feImage = element feImage { attlist.feImage, SVG.feImage.content } attlist.feImage &= SVG.Core.attrib, SVG.Style.attrib, SVG.Presentation.attrib, SVG.FilterPrimitive.attrib, SVG.XLinkEmbed.attrib, SVG.External.attrib, [ a:defaultValue = "xMidYMid meet" ] attribute preserveAspectRatio { PreserveAspectRatioSpec.datatype }? a:documentation [ "\x{a}" ~ " feMerge: Filter Effect Merge Element\x{a}" ~ " " ] SVG.feMerge.content = feMergeNode* feMerge = element feMerge { attlist.feMerge, SVG.feMerge.content } attlist.feMerge &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitive.attrib a:documentation [ "\x{a}" ~ " feMergeNode: Filter Effect Merge Node Element\x{a}" ~ " " ] SVG.feMergeNode.content = (animate | set)* feMergeNode = element feMergeNode { attlist.feMergeNode, SVG.feMergeNode.content } attlist.feMergeNode &= SVG.Core.attrib, attribute in { text }? a:documentation [ "\x{a}" ~ " feOffset: Filter Effect Offset Element\x{a}" ~ " " ] SVG.feOffset.content = (animate | set)* feOffset = element feOffset { attlist.feOffset, SVG.feOffset.content } attlist.feOffset &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib, attribute dx { Number.datatype }?, attribute dy { Number.datatype }? a:documentation [ "\x{a}" ~ " feTile: Filter Effect Tile Element\x{a}" ~ " " ] SVG.feTile.content = (animate | set)* feTile = element feTile { attlist.feTile, SVG.feTile.content } attlist.feTile &= SVG.Core.attrib, SVG.FilterColor.attrib, SVG.FilterPrimitiveWithIn.attrib a:documentation [ "\x{a}" ~ " feFuncR: Filter Effect Function Red Element\x{a}" ~ " " ] SVG.feFuncR.content = (animate | set)* feFuncR = element feFuncR { attlist.feFuncR, SVG.feFuncR.content } attlist.feFuncR &= SVG.Core.attrib, attribute type { "identity" | "table" | "discrete" | "linear" | "gamma" }, attribute tableValues { text }?, attribute slope { Number.datatype }?, attribute intercept { Number.datatype }?, attribute amplitude { Number.datatype }?, attribute exponent { Number.datatype }?, attribute offset { Number.datatype }? a:documentation [ "\x{a}" ~ " feFuncG: Filter Effect Function Green Element\x{a}" ~ " " ] SVG.feFuncG.content = (animate | set)* feFuncG = element feFuncG { attlist.feFuncG, SVG.feFuncG.content } attlist.feFuncG &= SVG.Core.attrib, attribute type { "identity" | "table" | "discrete" | "linear" | "gamma" }, attribute tableValues { text }?, attribute slope { Number.datatype }?, attribute intercept { Number.datatype }?, attribute amplitude { Number.datatype }?, attribute exponent { Number.datatype }?, attribute offset { Number.datatype }? a:documentation [ "\x{a}" ~ " feFuncB: Filter Effect Function Blue Element\x{a}" ~ " " ] SVG.feFuncB.content = (animate | set)* feFuncB = element feFuncB { attlist.feFuncB, SVG.feFuncB.content } attlist.feFuncB &= SVG.Core.attrib, attribute type { "identity" | "table" | "discrete" | "linear" | "gamma" }, attribute tableValues { text }?, attribute slope { Number.datatype }?, attribute intercept { Number.datatype }?, attribute amplitude { Number.datatype }?, attribute exponent { Number.datatype }?, attribute offset { Number.datatype }? a:documentation [ "\x{a}" ~ " feFuncA: Filter Effect Function Alpha Element\x{a}" ~ " " ] SVG.feFuncA.content = (animate | set)* feFuncA = element feFuncA { attlist.feFuncA, SVG.feFuncA.content } attlist.feFuncA &= SVG.Core.attrib, attribute type { "identity" | "table" | "discrete" | "linear" | "gamma" }, attribute tableValues { text }?, attribute slope { Number.datatype }?, attribute intercept { Number.datatype }?, attribute amplitude { Number.datatype }?, attribute exponent { Number.datatype }?, attribute offset { Number.datatype }? }