<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright (C) 2014 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/10"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sdk="http://schemas.android.com/sdk/android/repository/10"
    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 r4.

         - v2 is used by the SDK Updater in Tools r5:
            - It introduces a new <sample> repository type. Previously samples
              were included in the <platform> packages. Instead this package is used
              and and the samples are installed in $SDK/samples.
            - All repository types have a new <obsolete> node. It works as a marker
              to indicate the package is obsolete and should not be selected by default.
              The UI also hides these out by default.

         - v3 is used by the SDK Updater in Tools r8:
            - It introduces a new <platform-tool> repository type. Previously platform-specific
              tools were included in the <platform> packages. Instead this package is used
              and platform-specific tools are installed in $SDK/platform-tools
            - There's a new element <min-platform-tools-rev> in <tool>. The tool package now
              requires that at least some minimal version of <platform-tool> be installed.
            - It removes the <addon> repository type, which is now in its own XML Schema.

         - v4 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.
            - <platform> element now has a mandatory <layoutlib> that indicates the API
              and revision of that layout library for this particular platform.

         - v5 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.
            - <platform> has a new optional <abi-included> that describes the ABI of the
              system image included in the platform, if any.
            - New <system-image> package type, to store system images outside of <platform>s.
            - New <source> package type.

         - v6 is used by the SDK Manager in Tools r18:
            - <extra> packages are removed. They are served only by the addon XML.
            - <platform>, <system-image>, <source>, <tool>, <platform-tool>, <doc>
              and <sample> get a new optional field <beta-rc> which can be used to indicate
              the package is a Beta Release Candidate and not a final release.

         - v7 is used by the SDK Manager in Tools r20:
            - For <tool> and <platform-tool> packages, the <revision> element becomes a
              a "full revision" element with <major>, <minor>, <micro> and <preview> sub-elements.
            - The <beta-rc> element is no longer supported, it is replaced by
              <revision> -> <preview> and is only for <tool> and <platform-tool> packages.
            - <min-tools-rev> and <min-platform-tools-rev> also become a full revision element.

         - v8 is used by the SDK Manager in Tools r22.0:
            - It introduces the new <build-tool> repository type, which contains build-specific
              tools that were before placed in either <tool> or <platform-tool> (e.g. ant,
              aapt, aidl, etc.)
            - <tool> has a new "min-build-tool" attribute.

         - v9 is used by the SDK Manager in Tools r22.6:
            - It introduces a sub-tag for the <system-image> repository type.

         - v10 is used by the SDK Manager in Tools r22.6.4:
            - It introduces a <list-display> string for all package types.
            - It removes the <system-image> type (system images are handled by sdk-sys-img-3.xsd)
            - it changes <archive os=... arch=...> to sub-elements: <host-os>, <host-bits>,
              <jvm-bits> and <min-jvm-version>.
    -->

    <xsd:element name="sdk-repository" 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="platform"        type="sdk:platformType"     />
            <xsd:element name="source"          type="sdk:sourceType"       />
            <xsd:element name="tool"            type="sdk:toolType"         />
            <xsd:element name="platform-tool"   type="sdk:platformToolType" />
            <xsd:element name="build-tool"      type="sdk:buildToolType"    />
            <xsd:element name="doc"             type="sdk:docType"          />
            <xsd:element name="sample"          type="sdk:sampleType"       />
            <xsd:element name="license"         type="sdk:licenseType"      />
        </xsd:choice>
    </xsd:complexType>


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

    <xsd:complexType name="platformType">
        <xsd:annotation>
            <xsd:documentation>An SDK platform package.</xsd:documentation>
        </xsd:annotation>
        <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 display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />

            <!-- Information on the layoutlib packaged in this platform. -->
            <xsd:element name="layoutlib" type="sdk:layoutlibType" />

            <!-- 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" />
            <!-- 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 ABI of the system image *included* in this platform, if any.
                 When the field is present, it means the platform already embeds one
                 system image. A platform can also have any number of external
                 &lt;system-image&gt; associated with it.  -->
            <xsd:element name="included-abi"  type="sdk:abiType" 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" />
        </xsd:all>
    </xsd:complexType>


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

    <xsd:complexType name="layoutlibType" >
        <xsd:annotation>
            <xsd:documentation>
                Version information for a layoutlib included in a platform.
            </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 the ABI supported by a platform's system image. -->

    <xsd:simpleType name="abiType">
        <xsd:annotation>
            <xsd:documentation>The ABI of a platform's system image.</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="armeabi"     />
            <xsd:enumeration value="armeabi-v7a" />
            <xsd:enumeration value="x86"         />
            <xsd:enumeration value="mips"        />
        </xsd:restriction>
    </xsd:simpleType>


    <!-- The definition of a source package. -->

    <xsd:complexType name="sourceType" >
        <xsd:annotation>
            <xsd:documentation>
                Sources for a platform.
            </xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- api-level + codename identifies the platform to which this source belongs. -->

            <!-- 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 display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />

            <!-- 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" />
        </xsd:all>
    </xsd:complexType>


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

    <xsd:complexType name="toolType" >
        <xsd:annotation>
            <xsd:documentation>An SDK tool package.</xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The full revision (major.minor.micro.preview), incremented each
                 time a new package is generated. -->
            <xsd:element name="revision"      type="sdk:revisionType" />

            <!-- The optional display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />

            <!-- 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" />

            <!-- The minimal revision of platform-tools required by this package.
                 Mandatory. Must be a revision element. -->
            <xsd:element name="min-platform-tools-rev" type="sdk:revisionType" />

            <!-- 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" />
        </xsd:all>
    </xsd:complexType>


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

    <xsd:complexType name="platformToolType" >
        <xsd:annotation>
            <xsd:documentation>An SDK platform-tool package.</xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The full revision (major.minor.micro.preview), incremented each
                 time a new package is generated. -->
            <xsd:element name="revision"      type="sdk:revisionType" />

            <!-- The optional display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />

            <!-- 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" />
        </xsd:all>
    </xsd:complexType>

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

    <xsd:complexType name="buildToolType">
        <xsd:annotation>
            <xsd:documentation>An SDK build-tool package.</xsd:documentation>
        </xsd:annotation>
        <xsd:all>
            <!-- The full revision (major.minor.micro.preview), incremented each
                 time a new package is generated. -->
            <xsd:element name="revision"      type="sdk:revisionType" />

            <!-- optional elements -->

            <!-- The optional display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />

            <!-- 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" />
        </xsd:all>
    </xsd:complexType>


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

    <xsd:complexType name="docType" >
        <xsd:annotation>
            <xsd:documentation>An SDK doc package.</xsd:documentation>
        </xsd:annotation>
        <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 optional display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" 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: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" />
        </xsd:all>
    </xsd:complexType>


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

    <xsd:complexType name="sampleType" >
        <xsd:annotation>
            <xsd:documentation>An SDK sample package.</xsd:documentation>
        </xsd:annotation>
        <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 optional display list item. When missing, it is auto-computed. -->
            <xsd:element name="list-display"   type="xsd:normalizedString" 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: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" />
            <!-- 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" />


            <!-- 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" />
        </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.
            </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:element name="host-os"         type="sdk:osType"         minOccurs="0" />
                        <xsd:element name="host-bits"       type="sdk:bitSizeType"    minOccurs="0" />
                        <xsd:element name="jvm-bits"        type="sdk:bitSizeType"    minOccurs="0" />
                        <xsd:element name="min-jvm-version" type="sdk:jvmVersionType" minOccurs="0" />
                    </xsd:all>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
    </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 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 archive filters -->

    <xsd:simpleType name="bitSizeType">
        <xsd:annotation>
            <xsd:documentation>A CPU bit size filter.</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="32" />
            <xsd:enumeration value="64" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="osType">
        <xsd:annotation>
            <xsd:documentation>A host OS filter.</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:token">
            <xsd:enumeration value="linux" />
            <xsd:enumeration value="macosx" />
            <xsd:enumeration value="windows" />
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="jvmVersionType">
        <xsd:annotation>
            <xsd:documentation>A JVM version number, e.g. "1" or "1.6" or "1.14.15".</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="([1-9](\.[1-9]{1,2}){0,2})"/>
        </xsd:restriction>
    </xsd:simpleType>


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