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


## 
##     SVG 1.1 Marker Module
##     file: svg-marker.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$
##   

## 
##     Marker
## 
##         marker
## 
##     This module declares markup to provide support for marker.
##   

## 
##     Datatypes
##   
[ xml:lang = "en" ]
grammar {
    MarkerValue.datatype = xsd:string
    a:documentation [ "\x{a}" ~ "    SVG.Marker.attrib\x{a}" ~ "  " ]
    SVG.Marker.extra.attrib = empty
    SVG.Marker.attrib &=
        attribute marker-start { MarkerValue.datatype }?,
        attribute marker-mid { MarkerValue.datatype }?,
        attribute marker-end { MarkerValue.datatype }?,
        SVG.Marker.extra.attrib
    a:documentation [ "\x{a}" ~ "    SVG.Marker.class\x{a}" ~ "  " ]
    SVG.Marker.extra.class = notAllowed
    SVG.Marker.class |= marker | SVG.Marker.extra.class
    a:documentation [
        "\x{a}" ~
        "    marker: Marker Element\x{a}" ~
        "  "
    ]
    SVG.marker.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)*
    marker = element marker { attlist.marker, SVG.marker.content }
    attlist.marker &=
        SVG.Core.attrib,
        SVG.Style.attrib,
        SVG.Presentation.attrib,
        SVG.External.attrib,
        attribute refX { Coordinate.datatype }?,
        attribute refY { Coordinate.datatype }?,
        attribute markerUnits { string "strokeWidth" | string "userSpaceOnUse" }?,
        attribute markerWidth { Length.datatype }?,
        attribute markerHeight { Length.datatype }?,
        attribute orient { text }?,
        attribute viewBox { ViewBoxSpec.datatype }?,
        [ a:defaultValue = "xMidYMid meet" ]
        attribute preserveAspectRatio {
            PreserveAspectRatioSpec.datatype
        }?
}
