<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright (C) 2013 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/addon/6"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sdk="http://schemas.android.com/sdk/android/addon/6"
    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 Addon repository is a web site that contains an "addon.xml"
         file that conforms to this XML Schema.

         History:
         - v1 is used by the SDK Updater in Tools r8. It is split out of the
           main SDK Repository XML Schema and can only contain <addon> and
           <extra> packages.

         - v2 is used by the SDK Updater in Tools r12.
            - <extra> element now has a <project-files> element that contains 1 or
              or more <path>, each indicating the relative path of a file that this package
              can contribute to installed projects.
            - <addon> element now has an optional <layoutlib> that indicates the API
              and revision of the layout library for this particular add-on, if any.

         - v3 is used by the SDK Manager in Tools r14:
            - <extra> now has an <old-paths> element, a ;-separated list of old paths that
              should be detected and migrated to the new <path> for that package.

         - v4 is used by the SDK Manager in Tools r18:
            - <extra> and <addon> are not in the Repository XSD v6 anymore.
            - <extra> get a new field <name-display>, which is used by the SDK Manager to
              customize the name of the extra in the list display. The single <vendor>
              field becomes <vendor-id> and <vendor-display>, the id being used internally
              and the display in the UI.
            - <addon> does the same, where <name> is replaced by <name-id> and <name-display>
              and <vendor> is replaced by <vendor-id> and <vendor-display>.

         - v5 is used by the SDK Manager in Tools r20:
            - The <beta-rc> element is no longer supported. It was never implemented anyway.
            - For <tool> and <platform-tool> packages, the <revision> element becomes a
              a "full revision" element with <major>, <minor>, <micro> and <preview> sub-elements.
            - <min-tools-rev> for <extra> becomes a full revision element.

         - v6 is used by the SDK Manager in Tools r22.3:
            - <extra> revision is now a "full revision" element with <major>, <minor>, <micro>.
              It does not support the <revision><preview> sub-element though.
    -->

    <xsd:element name="sdk-addon" type="sdk:repositoryType" />

    <xsd:complexType name="repositoryType">
        <xsd:annotation>
            <xsd:documentation>
                The repository contains a collection of downloadable packages.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="add-on"          type="sdk:addonType"        />
            <xsd:element name="extra"           type="sdk:extraType"        />
            <xsd:element name="license"         type="sdk:licenseType"      />
        </xsd:choice>
    </xsd:complexType>


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

    <xsd:complexType name="addonType">
        <xsd:annotation>
            <xsd:documentation>An SDK add-on package.</xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The internal name id of the add-on. Must be unique per vendor. -->
            <xsd:element name="name-id"         type="sdk:idType" />
            <!-- The displayed name of the add-on. -->
            <xsd:element name="name-display"    type="xsd:normalizedString" />

            <!-- The internal vendor id of the add-on. Must be unique amongst vendors. -->
            <xsd:element name="vendor-id"       type="sdk:idType" />
            <!-- The displayed vendor name of the add-on. -->
            <xsd:element name="vendor-display"  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 'codenames' (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" />

            <!-- An add-on can declare 0 or more libraries.
                 This element is mandatory but it can be empty.
            -->

            <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>

            <!-- optional elements -->

            <!-- The optional license of this package. If present, users will have
                 to agree to it before downloading. -->
            <xsd:element name="uses-license" type="sdk:usesLicenseType" 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 optional element indicating the package is obsolete.
                 The string content is however currently not defined and ignored. -->
            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />

            <!-- Optional information on the layoutlib packaged in this platform. -->
            <xsd:element name="layoutlib" type="sdk:layoutlibType"  minOccurs="0" />
        </xsd:all>
    </xsd:complexType>


    <xsd:simpleType name="idType">
        <xsd:annotation>
            <xsd:documentation>
                An ID string for an addon/extra name-id or vendor-id
                can only be simple alphanumeric string.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:pattern value="[a-zA-Z0-9_-]+"/>
        </xsd:restriction>
    </xsd:simpleType>


    <!-- The definition of a layout library used by an addon. -->

    <xsd:complexType name="layoutlibType" >
        <xsd:annotation>
            <xsd:documentation>
                Version information for a layoutlib included in an addon.
            .</xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The layoutlib API level, an int > 0,
                 incremented with each new incompatible lib. -->
            <xsd:element name="api"          type="xsd:positiveInteger" />
            <!-- The incremental minor revision for that API, e.g. in case of bug fixes.
                 Optional. An int >= 0, assumed to be 0 if the element is missing. -->
            <xsd:element name="revision"     type="xsd:nonNegativeInteger" minOccurs="0" />
        </xsd:all>
    </xsd:complexType>


    <!-- The definition of an SDK extra package. This kind of package is for
         "free" content. Such packages are installed in SDK/extras/vendor/path.
    -->

    <xsd:complexType name="extraType" >
        <xsd:annotation>
            <xsd:documentation>
                An SDK extra package. This kind of package is for "free" content.
                Such packages are installed in SDK/vendor/path.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The displayed name of the extra. -->
            <xsd:element name="name-display"    type="xsd:normalizedString" />

            <!-- The internal vendor id of the extra. Must be unique amongst vendors. -->
            <xsd:element name="vendor-id"       type="sdk:idType" />
            <!-- The displayed vendor name of the extra. -->
            <xsd:element name="vendor-display"  type="xsd:normalizedString" />

            <!-- The install path sub-folder name. It must not be empty. -->
            <xsd:element name="path" type="sdk:segmentType" />

            <!-- A semi-colon separated list of "obsolete" path names which are equivalent
                 to the current 'path' name. When a package is seen using an old-paths' name,
                 the package manager will try to upgrade it to the new path. -->
            <xsd:element name="old-paths" type="sdk:segmentListType"  minOccurs="0" />

            <!-- The revision, in major.minor.micro format, incremented each time a new
                 package is generated. -->
            <xsd:element name="revision"     type="sdk:revisionNoPreviewType" minOccurs="0" />

            <!-- A list of file archives for this package. -->
            <xsd:element name="archives"     type="sdk:archivesType" />

            <!--  optional elements -->

            <!-- The optional license of this package. If present, users will have
                 to agree to it before downloading. -->
            <xsd:element name="uses-license" type="sdk:usesLicenseType"  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" />
            <!-- The minimal revision of tools required by this package.
                 Optional. If present, must be a revision element. -->
            <xsd:element name="min-tools-rev" type="sdk:revisionType"    minOccurs="0" />
            <!-- The minimal API level required by this package.
                 Optional. If present, must be an int > 0. -->
            <xsd:element name="min-api-level" type="xsd:positiveInteger" minOccurs="0" />

            <!-- An optional element indicating the package is obsolete.
                 The string content is however currently not defined and ignored. -->
            <xsd:element name="obsolete"      type="xsd:string" minOccurs="0" />

            <!-- A list of project files contributed by this package. Optional. -->
            <xsd:element name="project-files" type="sdk:projectFilesType" minOccurs="0" />
        </xsd:all>
    </xsd:complexType>


    <!-- A full revision, with a major.minor.micro and an optional preview number.
         The major number is mandatory, the other elements are optional.
     -->

    <xsd:complexType name="revisionType">
        <xsd:annotation>
            <xsd:documentation>
                A full revision, with a major.minor.micro and an
                optional preview number. The major number is mandatory.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The major revision, an int > 0, incremented each time a new
                 package is generated. -->
            <xsd:element name="major"      type="xsd:positiveInteger" />
            <!-- The minor revision, an int >= 0, incremented each time a new
                 minor package is generated. Assumed to be 0 if missing. -->
            <xsd:element name="minor"     type="xsd:nonNegativeInteger" minOccurs="0" />
            <!-- The micro revision, an int >= 0, incremented each time a new
                 buf fix is generated. Assumed to be 0 if missing. -->
            <xsd:element name="micro"     type="xsd:nonNegativeInteger" minOccurs="0" />
            <!-- The preview/release candidate revision, an int > 0,
                 incremented each time a new preview is generated.
                 Not present for final releases. -->
            <xsd:element name="preview"   type="xsd:positiveInteger" minOccurs="0" />
        </xsd:all>
    </xsd:complexType>


    <!-- A full revision, with a major.minor.micro but that does not support the
         optional preview number.
         The major number is mandatory, the other elements are optional.
     -->

    <xsd:complexType name="revisionNoPreviewType">
        <xsd:annotation>
            <xsd:documentation>
                A full revision, with a major.minor.micro and no support for
                the optional preview number. The major number is mandatory.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The major revision, an int > 0, incremented each time a new
                 package is generated. -->
            <xsd:element name="major"      type="xsd:positiveInteger" />
            <!-- The minor revision, an int >= 0, incremented each time a new
                 minor package is generated. Assumed to be 0 if missing. -->
            <xsd:element name="minor"     type="xsd:nonNegativeInteger" minOccurs="0" />
            <!-- The micro revision, an int >= 0, incremented each time a new
                 buf fix is generated. Assumed to be 0 if missing. -->
            <xsd:element name="micro"     type="xsd:nonNegativeInteger" minOccurs="0" />
        </xsd:all>
    </xsd:complexType>


    <!-- The definition of a path segment used by the extra element. -->

    <xsd:simpleType name="segmentType">
        <xsd:annotation>
            <xsd:documentation>
                One path segment for the install path of an extra element.
                It must be a single-segment path. It must not be empty.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:pattern value="[a-zA-Z0-9_]+"/>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="segmentListType">
        <xsd:annotation>
            <xsd:documentation>
                A semi-colon separated list of a segmentTypes.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:pattern value="[a-zA-Z0-9_;]+"/>
        </xsd:restriction>
    </xsd:simpleType>


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

    <xsd:complexType name="licenseType">
        <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: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>


    <!-- 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="usesLicenseType">
        <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>


    <!-- A collection of file paths available in an &lt;extra&gt; package
         that can be installed in an Android project.
         If present, the &lt;project-files&gt; collection must contain at least one path.
         Each path is relative to the root directory of the package.
     -->

    <xsd:complexType name="projectFilesType">
        <xsd:annotation>
            <xsd:documentation>
                A collection of file paths available in an &lt;extra&gt; package
                that can be installed in an Android project.
                If present, the &lt;project-files&gt; collection must contain at least one path.
                Each path is relative to the root directory of the package.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
            <!-- One JAR Path, relative to the root folder of the package. -->
            <xsd:element name="path" type="xsd:string" />
        </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>
