default namespace = "http://www.w3.org/2000/svg"
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"


## 
##     SVG 1.1 Conditional Processing Module
##     file: svg-conditional.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$
##   

## 
##     Conditional Processing
## 
##         switch
## 
##     This module declares markup to provide support for conditional processing.
##   

## 
##     Datatypes
##   
[ xml:lang = "en" ]
grammar {
    ExtensionList.datatype = xsd:string
    FeatureList.datatype = xsd:string
    a:documentation [
        "\x{a}" ~
        "    SVG.Conditional.attrib\x{a}" ~
        "  "
    ]
    SVG.Conditional.extra.attrib = empty
    SVG.Conditional.attrib &=
        attribute requiredFeatures { FeatureList.datatype }?,
        attribute requiredExtensions { ExtensionList.datatype }?,
        attribute systemLanguage { LanguageCodes.datatype }?,
        SVG.Conditional.extra.attrib
    a:documentation [
        "\x{a}" ~
        "    SVG.Conditional.class\x{a}" ~
        "  "
    ]
    SVG.Conditional.extra.class = notAllowed
    SVG.Conditional.class |= switch | SVG.Conditional.extra.class
    a:documentation [
        "\x{a}" ~
        "    switch: Switch Element\x{a}" ~
        "  "
    ]
    SVG.switch.content =
        SVG.Description.class*,
        (svg
         | g
         | use
         | \text
         | SVG.Animation.class
         | SVG.Conditional.class
         | SVG.Image.class
         | SVG.Shape.class
         | SVG.Hyperlink.class)*
    switch = element switch { attlist.switch, SVG.switch.content }
    attlist.switch &=
        SVG.Core.attrib,
        SVG.Conditional.attrib,
        SVG.Style.attrib,
        SVG.Presentation.attrib,
        SVG.GraphicalEvents.attrib,
        SVG.External.attrib,
        attribute transform { TransformList.datatype }?
}
