<?xml version='1.0' encoding='UTF-8'?>
<xs:schema>

  <xs:element name="top">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist" />
        <xs:element name="include" type="include" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="attributelist">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attribute" type="attribute" maxOccurs="unbounded" />
        <xs:element name="kwargs" type="kwargs" maxOccurs="unbounded" />
        <xs:element name="parmlist" type="parmlist" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="attribute">
    <xs:complexType>
      <xs:sequence>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" />
      <xs:attribute name="value" type="xs:string" />
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="include">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
        <xs:element name="include" type="include" maxOccurs="unbounded" />
        <xs:element name="typemap" type="typemap" maxOccurs="unbounded" />
        <xs:element name="insert" type="insert" maxOccurs="unbounded" />
        <xs:element name="module" type="module" maxOccurs="unbounded" />
        <xs:element name="cdecl" type="cdecl" maxOccurs="unbounded" />
        <xs:element name="class" type="class" maxOccurs="unbounded" />
        <xs:element name="import" type="import" maxOccurs="unbounded" />
        <xs:element name="enum" type="enum" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="import">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
        <xs:element name="include" type="include" maxOccurs="unbounded" />
        <xs:element name="typemap" type="typemap" maxOccurs="unbounded" />
        <xs:element name="insert" type="insert" maxOccurs="unbounded" />
        <xs:element name="module" type="module" maxOccurs="unbounded" />
        <xs:element name="cdecl" type="cdecl" maxOccurs="unbounded" />
        <xs:element name="class" type="class" maxOccurs="unbounded" />
        <xs:element name="import" type="import" maxOccurs="unbounded" />
        <xs:element name="enum" type="enum" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="enum">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
        <xs:element name="enumitem" type="enumitem" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="enumitem">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="kwargs">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="typemap">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
        <xs:element name="typemapitem" type="typemapitem" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="typemapitem">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="class">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist" />
        <xs:element name="cdecl" type="cdecl" maxOccurs="unbounded" />
        <xs:element name="access" type="access" />
        <xs:element name="constructor" type="constructor" maxOccurs="unbounded" />
        <xs:element name="destructor" type="destructor" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="cdecl">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="access">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="parmlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parm" type="parm" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="parm">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist" />
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="constructor">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

  <xs:element name="destructor">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="attributelist" type="attributelist"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" />
      <xs:attribute name="addr" type="xs:string" />
    </xs:complexType>
  </xs:element>

</xs:schema>



