<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.exelearning.org/content/v0.1" targetNamespace="http://www.exelearning.org/content/v0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="instance">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="dictionary"/>
      </xs:sequence>
      <xs:attribute name="class" use="required" type="xs:NCName"/>
      <xs:attribute name="reference" type="xs:integer"/>
      <xs:attribute name="version" type="xs:decimal"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="dictionary">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="dictionary"/>
        <xs:element ref="instance"/>
        <xs:element ref="reference"/>
        <xs:element ref="string"/>
        <xs:element ref="unicode"/>
        <xs:element ref="bool"/>
        <xs:element ref="int"/>
        <xs:element ref="list"/>
        <xs:element ref="none"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="bool">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="int">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="list">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="instance"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="tuple"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="reference"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="unicode"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="string"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="int"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="tuple">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="unicode"/>
        <xs:element minOccurs="0" ref="string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="none">
    <xs:complexType/>
  </xs:element>
  <xs:element name="string">
    <xs:complexType>
      <xs:attribute name="content" type="xs:boolean"/>
      <xs:attribute name="role" type="xs:NCName"/>
      <xs:attribute name="value" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="unicode">
    <xs:complexType>
      <xs:attribute name="content" type="xs:boolean"/>
      <xs:attribute name="role" type="xs:NCName"/>
      <xs:attribute name="value" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="reference">
    <xs:complexType>
      <xs:attribute name="key" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
