<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="http://www.w3.org/2000/svg" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://relaxng.org/ns/structure/1.0">
  <a:documentation>
    SVG 1.1 Extensibility Module
    file: svg-extensibility.rng

    This is SVG, a language for describing two-dimensional graphics in XML.
    Copyright 2001, 2002 W3C (MIT, INRIA, Keio), All Rights Reserved.

    $Id$

</a:documentation>
  <a:documentation>
    Extensibility

        foreignObject

    This module declares markup to provide support for extensibility.
  </a:documentation>
  <a:documentation>
    SVG.Extensibility.class
  </a:documentation>
  <define name="SVG.Extensibility.extra.class">
    <notAllowed/>
  </define>
  <define name="SVG.Extensibility.class" combine="choice">
    <choice>
      <ref name="foreignObject"/>
      <ref name="SVG.Extensibility.extra.class"/>
    </choice>
  </define>
  <a:documentation>
    foreignObject: Foreign Object Element
  </a:documentation>
  <define name="SVG.foreignObject.content">
    <notAllowed/>
  </define>
  <!-- bugfix - - hsivonen -->
  <define name="foreignObject">
    <element name="foreignObject">
      <ref name="attlist.foreignObject"/>
      <ref name="SVG.foreignObject.content"/>
    </element>
  </define>
  <define name="attlist.foreignObject" combine="interleave">
    <ref name="SVG.Core.attrib"/>
    <ref name="SVG.Conditional.attrib"/>
    <ref name="SVG.Style.attrib"/>
    <ref name="SVG.Presentation.attrib"/>
    <ref name="SVG.GraphicalEvents.attrib"/>
    <ref name="SVG.External.attrib"/>
    <optional>
      <choice>
        <ref name="common.attrs.aria.implicit.group"/>
        <ref name="common.attrs.aria"/>
      </choice>
    </optional>
    <optional>
      <attribute name="x">
        <ref name="Coordinate.datatype"/>
      </attribute>
    </optional>
    <optional>
      <attribute name="y">
        <ref name="Coordinate.datatype"/>
      </attribute>
    </optional>
    <attribute name="width">
      <ref name="Length.datatype"/>
    </attribute>
    <attribute name="height">
      <ref name="Length.datatype"/>
    </attribute>
    <optional>
      <attribute name="transform">
        <ref name="TransformList.datatype"/>
      </attribute>
    </optional>
  </define>
  <define name="foreignElement">
    <a:documentation>
      any element in foreign namespace
    </a:documentation>
    <element>
      <anyName>
        <except>
          <nsName/>
        </except>
      </anyName>
      <zeroOrMore>
        <choice>
          <attribute>
            <anyName>
              <except>
                <nsName/>
              </except>
            </anyName>
          </attribute>
          <text/>
          <ref name="foreignElement"/>
        </choice>
      </zeroOrMore>
    </element>
  </define>
  <define name="SVG.a.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.defs.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.glyph.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.g.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.marker.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.mask.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.missing-glyph.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.pattern.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.svg.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.switch.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
  <define name="SVG.symbol.content" combine="interleave">
    <zeroOrMore>
      <ref name="SVG.Extensibility.class"/>
    </zeroOrMore>
  </define>
</grammar>
