<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<xsd:schema
    targetNamespace="http://schemas.android.com/sdk/android/repository/1"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sdk="http://schemas.android.com/sdk/android/repository/1"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1">

    <!-- The repository contains a collection of downloadable items known as
         "packages". Each package has a type and various attributes and contains
         a list of file "archives" that can be downloaded for specific OSes.

         An Android SDK repository is a web site that contains a "repository.xml"
         file that conforms to this XML Schema.

         History:
         - v1 is used by the SDK Updater in Tools r3 and Tools r4.
    -->

    <xsd:element name="sdk-repository">
        <xsd:annotation>
            <xsd:documentation>
                The repository contains collections of downloadable packages.
            </xsd:documentation>
        </xsd:annotation>

        <xsd:complexType>
            <xsd:choice minOccurs="0" maxOccurs="unbounded">

                <!-- The definition of an SDK platform package. -->

                <xsd:element name="platform">
                    <xsd:annotation>
                        <xsd:documentation>An SDK platform package.</xsd:documentation>
                    </xsd:annotation>
                    <xsd:complexType>
                        <xsd:all>
                            <!-- The Android platform version. It is string such as "1.0". -->
                            <xsd:element name="version"   type="xsd:normalizedString" />
                            <!-- The Android API Level for the platform. An int > 0. -->
                            <xsd:element name="api-level" type="xsd:positiveInteger"  />
                            <!-- The optional codename for this platform, if it's a preview. -->
                            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />

                            <!-- The revision, an int > 0, incremented each time a new
                                 package is generated. -->
                            <xsd:element name="revision"     type="xsd:positiveInteger" />
                            <!-- The optional license of this package. If present, users will have
                                 to agree to it before downloading. -->
                            <xsd:element name="uses-license" type="sdk:licenseType" minOccurs="0" />
                            <!-- The optional description of this package. -->
                            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
                            <!-- The optional description URL of this package -->
                            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
                            <!-- The optional release note for this package. -->
                            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
                            <!-- The optional release note URL of this package -->
                            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
                            <!-- A list of file archives for this package. -->
                            <xsd:element name="archives"     type="sdk:archivesType" />
                            <!-- The minimal revision of tools required by this package.
                                 Optional. If present, must be an int > 0. -->
                            <xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
                        </xsd:all>
                    </xsd:complexType>
                </xsd:element>


                <!-- The definition of an SDK Add-on package. -->

                <xsd:element name="add-on">
                    <xsd:annotation>
                        <xsd:documentation>An SDK add-on package.</xsd:documentation>
                    </xsd:annotation>
                    <xsd:complexType>
                        <xsd:all>
                            <!-- The name of the add-on. -->
                            <xsd:element name="name"      type="xsd:normalizedString" />
                            <!-- The vendor of the add-on. -->
                            <xsd:element name="vendor"    type="xsd:normalizedString" />
                            <!-- The Android API Level for the add-on. An int > 0. -->
                            <xsd:element name="api-level" type="xsd:positiveInteger"  />
                            <!-- Note: Add-ons do not support 'codename' (a.k.a. API previews). -->

                            <!-- The revision, an int > 0, incremented each time a new
                                 package is generated. -->
                            <xsd:element name="revision"     type="xsd:positiveInteger" />
                            <!-- The optional license of this package. If present, users will have
                                 to agree to it before downloading. -->
                            <xsd:element name="uses-license" type="sdk:licenseType" minOccurs="0" />
                            <!-- The optional description of this package. -->
                            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
                            <!-- The optional description URL of this package -->
                            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
                            <!-- The optional release note for this package. -->
                            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
                            <!-- The optional release note URL of this package -->
                            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
                            <!-- A list of file archives for this package. -->
                            <xsd:element name="archives"     type="sdk:archivesType" />

                            <!-- An add-on can declare 0 or more libraries. -->

                            <xsd:element name="libs">
                                <xsd:complexType>
                                    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                                        <xsd:element name="lib">
                                            <xsd:complexType>
                                                <xsd:all>
                                                    <!-- The name of the library. -->
                                                    <xsd:element name="name" type="xsd:normalizedString" />
                                                    <!-- The optional description of this add-on library. -->
                                                    <xsd:element name="description" type="xsd:string" minOccurs="0" />
                                                </xsd:all>
                                            </xsd:complexType>
                                        </xsd:element>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:all>
                    </xsd:complexType>
                </xsd:element>


                <!-- The definition of an SDK tool package. -->

                <xsd:element name="tool">
                    <xsd:annotation>
                        <xsd:documentation>An SDK tool package.</xsd:documentation>
                    </xsd:annotation>
                    <xsd:complexType>
                        <xsd:all>
                            <!-- The revision, an int > 0, incremented each time a new
                                 package is generated. -->
                            <xsd:element name="revision"     type="xsd:positiveInteger" />
                            <!-- The optional license of this package. If present, users will have
                                 to agree to it before downloading. -->
                            <xsd:element name="uses-license" type="sdk:licenseType" minOccurs="0" />
                            <!-- The optional description of this package. -->
                            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
                            <!-- The optional description URL of this package -->
                            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
                            <!-- The optional release note for this package. -->
                            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
                            <!-- The optional release note URL of this package -->
                            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
                            <!-- A list of file archives for this package. -->
                            <xsd:element name="archives"     type="sdk:archivesType" />
                        </xsd:all>
                    </xsd:complexType>
                </xsd:element>


                <!-- The definition of an SDK doc package. -->

                <xsd:element name="doc">
                    <xsd:annotation>
                        <xsd:documentation>An SDK doc package.</xsd:documentation>
                    </xsd:annotation>
                    <xsd:complexType>
                        <xsd:all>
                            <!-- The Android API Level for the documentation. An int > 0. -->
                            <xsd:element name="api-level" type="xsd:positiveInteger"  />
                            <!-- The optional codename for this doc, if it's a preview. -->
                            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />

                            <!-- The revision, an int > 0, incremented each time a new
                                 package is generated. -->
                            <xsd:element name="revision"     type="xsd:positiveInteger" />
                            <!-- The optional license of this package. If present, users will have
                                 to agree to it before downloading. -->
                            <xsd:element name="uses-license" type="sdk:licenseType" minOccurs="0" />
                            <!-- The optional description of this package. -->
                            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
                            <!-- The optional description URL of this package -->
                            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
                            <!-- The optional release note for this package. -->
                            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
                            <!-- The optional release note URL of this package -->
                            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
                            <!-- A list of file archives for this package. -->
                            <xsd:element name="archives"     type="sdk:archivesType" />
                        </xsd:all>
                    </xsd:complexType>
                </xsd:element>


                <!-- The definition of an SDK extra package. This kind of package is for
                     "free" content and specifies in which fixed root directory it must be
                     installed.
                -->

                <xsd:element name="extra">
                    <xsd:annotation>
                        <xsd:documentation>
                            An SDK extra package. This kind of package is for "free"
                            content and specifies in which fixed root directory it must be
                            installed.
                            The paths "add-ons", "platforms", "tools" and "docs" are
                            reserved and cannot be used.
                        </xsd:documentation>
                    </xsd:annotation>
                    <xsd:complexType>
                        <xsd:all>
                            <!-- The install folder name. It must be a single-segment path.
                                 The paths "add-ons", "platforms", "tools" and "docs" are
                                 reserved and cannot be used.
                            -->
                            <xsd:element name="path">
                                <xsd:simpleType>
                                    <xsd:restriction base="xsd:token">
                                        <xsd:pattern value="[^/\\]+"/>
                                    </xsd:restriction>
                                </xsd:simpleType>
                            </xsd:element>

                            <!-- The revision, an int > 0, incremented each time a new
                                 package is generated. -->
                            <xsd:element name="revision"     type="xsd:positiveInteger" />
                            <!-- The optional license of this package. If present, users will have
                                 to agree to it before downloading. -->
                            <xsd:element name="uses-license" type="sdk:licenseType" minOccurs="0" />
                            <!-- The optional description of this package. -->
                            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
                            <!-- The optional description URL of this package -->
                            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
                            <!-- The optional release note for this package. -->
                            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
                            <!-- The optional release note URL of this package -->
                            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
                            <!-- A list of file archives for this package. -->
                            <xsd:element name="archives"     type="sdk:archivesType" />
                            <!-- The minimal revision of tools required by this package.
                                 Optional. If present, must be an int > 0. -->
                            <xsd:element name="min-tools-rev" type="xsd:positiveInteger" minOccurs="0" />
                        </xsd:all>
                    </xsd:complexType>
                </xsd:element>



                <!-- The definition of a license to be referenced by the uses-license element. -->

                <xsd:element name="license">
                    <xsd:annotation>
                        <xsd:documentation>
                            A license definition. Such a license must be used later as a reference
                            using a uses-license element in one of the package elements.
                        </xsd:documentation>
                    </xsd:annotation>
                    <xsd:complexType>
                        <xsd:simpleContent>
                            <xsd:extension base="xsd:string">
                                <xsd:attribute name="id"   type="xsd:ID" />
                                <xsd:attribute name="type" type="xsd:token" fixed="text" />
                            </xsd:extension>
                        </xsd:simpleContent>
                    </xsd:complexType>
                </xsd:element>
            </xsd:choice>
        </xsd:complexType>
    </xsd:element>


    <!-- Type describing the license used by a package.
         The license MUST be defined using a license node and referenced
         using the ref attribute of the license element inside a package.
     -->

    <xsd:complexType name="licenseType">
        <xsd:annotation>
            <xsd:documentation>
                Describes the license used by a package. The license MUST be defined
                using a license node and referenced using the ref attribute of the
                license element inside a package.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="ref" type="xsd:IDREF" />
    </xsd:complexType>


    <!-- A collection of files that can be downloaded for a given architecture.
         The <archives> node is mandatory in the repository elements and the
         collection must have at least one <archive> declared.
         Each archive is a zip file that will be unzipped in a location that depends
         on its package type.
     -->

    <xsd:complexType name="archivesType">
        <xsd:annotation>
            <xsd:documentation>
                A collection of files that can be downloaded for a given architecture.
                The &lt;archives&gt; node is mandatory in the repository packages and the
                collection must have at least one &lt;archive&gt; declared.
                Each archive is a zip file that will be unzipped in a location that depends
                on its package type.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <!-- One archive file -->
            <xsd:element name="archive">
                <xsd:complexType>
                    <!-- Properties of the archive file -->
                    <xsd:all>
                        <!-- The size in bytes of the archive to download. -->
                        <xsd:element name="size"     type="xsd:positiveInteger" />
                        <!-- The checksum of the archive file. -->
                        <xsd:element name="checksum" type="sdk:checksumType" />
                        <!-- The URL is an absolute URL if it starts with http://, https://
                             or ftp://. Otherwise it is relative to the parent directory that
                             contains this repository.xml -->
                        <xsd:element name="url"      type="xsd:token" />
                    </xsd:all>

                    <!-- Attributes that identify the OS and architecture -->
                    <xsd:attribute name="os" use="required">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:token">
                                <xsd:enumeration value="any" />
                                <xsd:enumeration value="linux" />
                                <xsd:enumeration value="macosx" />
                                <xsd:enumeration value="windows" />
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:attribute>
                    <xsd:attribute name="arch" use="optional">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:token">
                                <xsd:enumeration value="any" />
                                <xsd:enumeration value="ppc" />
                                <xsd:enumeration value="x86" />
                                <xsd:enumeration value="x86_64" />
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:attribute>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>


    <!-- The definition of a file checksum -->

    <xsd:simpleType name="sha1Number">
        <xsd:annotation>
            <xsd:documentation>A SHA1 checksum.</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="([0-9a-fA-F]){40}"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:complexType name="checksumType">
        <xsd:annotation>
            <xsd:documentation>A file checksum, currently only SHA1.</xsd:documentation>
        </xsd:annotation>
        <xsd:simpleContent>
            <xsd:extension base="sdk:sha1Number">
                <xsd:attribute name="type" type="xsd:token" fixed="sha1" />
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>


</xsd:schema>
