default namespace = "http://www.w3.org/2004/xbl" namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" [ xml:lang = "en" ] grammar { start = xbl # NOTES: # - this is a simplified schema in that it does not define classes and # other such constructs that would make it easier to integrate into the # rest of the SVG schema # - I seem to remember there was a bug in my RNG namespace wildcards. If # so, it has been copied here (I have no reference handy). # - I have followed the descriptions in the spec, so that if it says "zero # or more foo" and then "zero or more bar", then the foos must occur # before the bars. This can be changed. # - there are some spec issues embedded in the comments # ... common definitions .............................................. id.attrib = attribute id { xsd:ID }? # ... elements ........................................................ xbl = element xbl { definition*, import*, id.attrib } definition = element definition { (attribute ref { xsd:anyURI } | (template?, handlerGroup?, attribute element { xsd:QName })), id.attrib } template = element template { id.attrib, element content { attribute includes { text }?, id.attrib } } handlerGroup = element handlerGroup { # the content model for this element mentions ev:listener and svg:handler # but is rather unclear as to what should be included here id.attrib } import = element import { # this should really be either of xlink:href or src attribute bindings { xsd:anyURI }?, id.attrib } }