<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="applications">
    <xsd:complexType>
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="application"/>
      </xsd:choice>
      <xsd:attribute name="version" type="xsd:string" use="required"/>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="application">
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:element ref="id" minOccurs="1" maxOccurs="unbounded"/>
        <xsd:element ref="pkgname" minOccurs="1" maxOccurs="1"/>
        <xsd:element ref="name" minOccurs="1" maxOccurs="unbounded"/>
        <xsd:element ref="summary" minOccurs="1" maxOccurs="unbounded"/>
	<xsd:element ref="description" minOccurs="0" maxOccurs="1"/>
	<xsd:element ref="project_license" minOccurs="0" maxOccurs="1"/>
	<xsd:element ref="project_group" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="keywords" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="icon" minOccurs="1" maxOccurs="unbounded"/>
        <xsd:element ref="appcategories"/>
        <xsd:element ref="mimetypes" minOccurs="0" maxOccurs="1"/>
        <xsd:element ref="url" minOccurs="0" maxOccurs="unbounded"/>
	<xsd:element ref="screenshots" minOccurs="0" maxOccurs="1"/>
	<xsd:element ref="compulsory_for_desktop" minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="id">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="type" use="required">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="desktop"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:attribute>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="pkgname" type="xsd:string"/>
  <xsd:element name="name">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="lang" type="xsd:string"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="summary">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="lang" type="xsd:string"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="description">
    <xsd:complexType mixed="true">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="p" minOccurs="1" maxOccurs="unbounded"/>
        <xsd:element ref="ul" minOccurs="0" maxOccurs="1"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="p">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="lang" type="xsd:string"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="ul">
    <xsd:complexType mixed="true">
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element ref="li" minOccurs="1" maxOccurs="10"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="li">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="lang" type="xsd:string"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="project_group">
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="project_group"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="project_license" type="xsd:string"/>
  <xsd:element name="keywords">
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="keyword"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="keyword">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="lang" type="xsd:string"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="icon">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="type" use="required">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="stock"/>
                <xsd:enumeration value="local"/>
                <xsd:enumeration value="cached"/>
                <xsd:enumeration value="remote"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:attribute>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="appcategories">
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="appcategory"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="appcategory" type="xsd:string"/>
  <xsd:element name="mimetypes">
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="mimetype"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="mimetype" type="xsd:string"/>
  <xsd:element name="url">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="type" use="required">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="homepage"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:attribute>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="screenshots">
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="1">
        <xsd:element ref="screenshot"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="screenshot">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="type" use="optional">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="default"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:attribute>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="1">
        <xsd:element ref="image"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
    <xsd:element name="image">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="type" use="required">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="source"/>
                <xsd:enumeration value="thumbnail"/>
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:attribute>
	  <xs:attribute name="width" type="xsd:positiveInteger" use="required"/>
	  <xs:attribute name="height" type="xsd:positiveInteger" use="required"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="compulsory_for_desktop">
    <xsd:complexType mixed="true">
      <xsd:choice maxOccurs="unbounded" minOccurs="0">
        <xsd:element ref="compulsory_for_desktop"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
