blob: 4471528485a8c9295669af201a6bb4aa82136725 [file] [log] [blame]
default namespace = "http://www.w3.org/2000/svg"
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
##
## SVG 1.1 Basic Structure Module
## file: svg-basic-structure.rng
##
## This is SVG, a language for describing two-dimensional graphics in XML.
## Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
##
## Modifications Copyright 2007 Mozilla Foundation
##
## $Id$
##
##
## Basic Structure
##
## svg, g, defs, desc, title, metadata, use
##
## This module declares the major structural elements and their attributes.
##
[ xml:lang = "en" ]
grammar {
# removed start = -- hsivonen
##
## Include core set of modules
##
div {
##
## Datatypes Module
##
include "svg-datatypes.rnc"
##
## Core Attribute Module
##
include "svg-core-attrib.rnc"
}
a:documentation [
"\x{a}" ~
" Content Models (Default)\x{a}" ~
" "
]
SVG.Profile.class = notAllowed
SVG.Gradient.class = notAllowed
SVG.Pattern.class = notAllowed
SVG.Clip.class = notAllowed
SVG.Mask.class = notAllowed
SVG.Filter.class = notAllowed
SVG.Cursor.class = notAllowed
SVG.Marker.class = notAllowed
SVG.View.class = notAllowed
SVG.Script.class = notAllowed
SVG.Font.class = notAllowed
SVG.Extensibility.class = notAllowed
SVG.Conditional.class = notAllowed
SVG.Image.class = notAllowed
SVG.Style.class = notAllowed
SVG.Shape.class = notAllowed
SVG.Text.class = notAllowed
SVG.Hyperlink.class = notAllowed
SVG.Animation.class = notAllowed
a:documentation [
"\x{a}" ~
" Attribute Collections (Default)\x{a}" ~
" "
]
SVG.Container.attrib = empty
SVG.Viewport.attrib = empty
SVG.Text.attrib = empty
SVG.TextContent.attrib = empty
SVG.Opacity.attrib = empty
SVG.Marker.attrib = empty
SVG.Profile.attrib = empty
SVG.Gradient.attrib = empty
SVG.Clip.attrib = empty
SVG.Mask.attrib = empty
SVG.Filter.attrib = empty
SVG.FilterColor.attrib = empty
SVG.Cursor.attrib = empty
SVG.External.attrib = empty
SVG.Conditional.attrib = empty
SVG.Color.attrib = empty
SVG.Paint.attrib = empty
SVG.Graphics.attrib = empty
SVG.DocumentEvents.attrib = empty
SVG.GraphicalEvents.attrib = empty
SVG.onload.attrib = empty
SVG.AnimationEvents.attrib = empty
SVG.XLink.attrib = empty
SVG.XLinkRequired.attrib = empty
SVG.XLinkEmbed.attrib = empty
SVG.XLinkReplace.attrib = empty
SVG.Style.attrib = empty
SVG.Font.attrib = empty
a:documentation [
"\x{a}" ~
" SVG.Description.class\x{a}" ~
" "
]
SVG.Description.extra.class = notAllowed
SVG.Description.class =
desc | title | metadata | SVG.Description.extra.class
a:documentation [ "\x{a}" ~ " SVG.Use.class\x{a}" ~ " " ]
SVG.Use.extra.class = notAllowed
SVG.Use.class = use | SVG.Use.extra.class
a:documentation [ "\x{a}" ~ " SVG.Structure.class\x{a}" ~ " " ]
SVG.Structure.extra.class = notAllowed
SVG.Structure.class =
svg | g | defs | SVG.Use.class | SVG.Structure.extra.class
a:documentation [
"\x{a}" ~
" SVG.Presentation.attrib\x{a}" ~
" "
]
SVG.Presentation.extra.attrib = empty
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,
attribute flood-color { SVGColor.datatype }?,
attribute flood-opacity { OpacityValue.datatype }?,
attribute lighting-color { SVGColor.datatype }?,
SVG.Presentation.extra.attrib
a:documentation [
"\x{a}" ~
" svg: SVG Document Element\x{a}" ~
" "
]
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.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 = element svg { attlist.svg, SVG.svg.content }
attlist.svg &=
SVG.Core.attrib,
SVG.Conditional.attrib,
SVG.Style.attrib,
SVG.Presentation.attrib,
SVG.DocumentEvents.attrib,
SVG.GraphicalEvents.attrib,
SVG.External.attrib,
attribute x { Coordinate.datatype }?,
attribute y { Coordinate.datatype }?,
attribute width { Length.datatype }?,
attribute height { Length.datatype }?,
attribute viewBox { ViewBoxSpec.datatype }?,
[ a:defaultValue = "xMidYMid meet" ]
attribute preserveAspectRatio {
PreserveAspectRatioSpec.datatype
}?,
[ a:defaultValue = "magnify" ]
attribute zoomAndPan { string "disable" | string "magnify" }?,
[ a:defaultValue = "1.1" ]
attribute version { string "1.0" | string "1.1" | string "1.2" }?, # Allow 1.0 and 1.2 -- hsivonen
attribute baseProfile { Text.datatype }?,
[ a:defaultValue = "text/ecmascript" ]
attribute contentScriptType { ContentType.datatype }?,
[ a:defaultValue = "text/css" ]
attribute contentStyleType { ContentType.datatype }?
a:documentation [ "\x{a}" ~ " g: Group Element\x{a}" ~ " " ]
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.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)*
g = element g { attlist.g, SVG.g.content }
attlist.g &=
SVG.Core.attrib,
SVG.Conditional.attrib,
SVG.Style.attrib,
SVG.Presentation.attrib,
SVG.GraphicalEvents.attrib,
SVG.External.attrib,
attribute transform { TransformList.datatype }?
a:documentation [
"\x{a}" ~
" defs: Definisions Element\x{a}" ~
" "
]
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.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)*
defs = element defs { attlist.defs, SVG.defs.content }
attlist.defs &=
SVG.Core.attrib,
SVG.Conditional.attrib,
SVG.Style.attrib,
SVG.Presentation.attrib,
SVG.GraphicalEvents.attrib,
SVG.External.attrib,
attribute transform { TransformList.datatype }?
a:documentation [
"\x{a}" ~
" desc: Description Element\x{a}" ~
" "
]
SVG.desc.content = text
desc = element desc { attlist.desc, SVG.desc.content }
attlist.desc &= SVG.Core.attrib, SVG.Style.attrib
a:documentation [ "\x{a}" ~ " title: Title Element\x{a}" ~ " " ]
SVG.title.content = text
title = element title { attlist.title, SVG.title.content }
attlist.title &= SVG.Core.attrib, SVG.Style.attrib
a:documentation [
"\x{a}" ~
" metadata: Metadata Element\x{a}" ~
" "
]
SVG.metadata.content = empty # bugfix -- hsivonen
metadata =
element metadata { attlist.metadata, SVG.metadata.content }
attlist.metadata &= SVG.Core.attrib
a:documentation [ "\x{a}" ~ " use: Use Element\x{a}" ~ " " ]
SVG.use.content = SVG.Description.class*, SVG.Animation.class*
use = element use { attlist.use, SVG.use.content }
attlist.use &=
SVG.Core.attrib,
SVG.Conditional.attrib,
SVG.Style.attrib,
SVG.Presentation.attrib,
SVG.GraphicalEvents.attrib,
SVG.XLinkEmbed.attrib,
SVG.External.attrib,
attribute x { Coordinate.datatype }?,
attribute y { Coordinate.datatype }?,
attribute width { Length.datatype }?,
attribute height { Length.datatype }?,
attribute transform { TransformList.datatype }?
}