sdk-repository-10.xsd revision 4c3b19c11bed6972f2ebf758af4025607b41b11b
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 * Copyright (C) 2014 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16-->
17<xsd:schema
18    targetNamespace="http://schemas.android.com/sdk/android/repository/10"
19    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
20    xmlns:sdk="http://schemas.android.com/sdk/android/repository/10"
21    elementFormDefault="qualified"
22    attributeFormDefault="unqualified"
23    version="1">
24
25    <!-- The repository contains a collection of downloadable items known as
26         "packages". Each package has a type and various attributes and contains
27         a list of file "archives" that can be downloaded for specific OSes.
28
29         An Android SDK repository is a web site that contains a "repository.xml"
30         file that conforms to this XML Schema.
31
32         History:
33         - v1 is used by the SDK Updater in Tools r3 and r4.
34
35         - v2 is used by the SDK Updater in Tools r5:
36            - It introduces a new <sample> repository type. Previously samples
37              were included in the <platform> packages. Instead this package is used
38              and and the samples are installed in $SDK/samples.
39            - All repository types have a new <obsolete> node. It works as a marker
40              to indicate the package is obsolete and should not be selected by default.
41              The UI also hides these out by default.
42
43         - v3 is used by the SDK Updater in Tools r8:
44            - It introduces a new <platform-tool> repository type. Previously platform-specific
45              tools were included in the <platform> packages. Instead this package is used
46              and platform-specific tools are installed in $SDK/platform-tools
47            - There's a new element <min-platform-tools-rev> in <tool>. The tool package now
48              requires that at least some minimal version of <platform-tool> be installed.
49            - It removes the <addon> repository type, which is now in its own XML Schema.
50
51         - v4 is used by the SDK Updater in Tools r12:
52            - <extra> element now has a <project-files> element that contains 1 or
53              or more <path>, each indicating the relative path of a file that this package
54              can contribute to installed projects.
55            - <platform> element now has a mandatory <layoutlib> that indicates the API
56              and revision of that layout library for this particular platform.
57
58         - v5 is used by the SDK Manager in Tools r14:
59            - <extra> now has an <old-paths> element, a ;-separated list of old paths that
60              should be detected and migrated to the new <path> for that package.
61            - <platform> has a new optional <abi-included> that describes the ABI of the
62              system image included in the platform, if any.
63            - New <system-image> package type, to store system images outside of <platform>s.
64            - New <source> package type.
65
66         - v6 is used by the SDK Manager in Tools r18:
67            - <extra> packages are removed. They are served only by the addon XML.
68            - <platform>, <system-image>, <source>, <tool>, <platform-tool>, <doc>
69              and <sample> get a new optional field <beta-rc> which can be used to indicate
70              the package is a Beta Release Candidate and not a final release.
71
72         - v7 is used by the SDK Manager in Tools r20:
73            - For <tool> and <platform-tool> packages, the <revision> element becomes a
74              a "full revision" element with <major>, <minor>, <micro> and <preview> sub-elements.
75            - The <beta-rc> element is no longer supported, it is replaced by
76              <revision> -> <preview> and is only for <tool> and <platform-tool> packages.
77            - <min-tools-rev> and <min-platform-tools-rev> also become a full revision element.
78
79         - v8 is used by the SDK Manager in Tools r22.0:
80            - It introduces the new <build-tool> repository type, which contains build-specific
81              tools that were before placed in either <tool> or <platform-tool> (e.g. ant,
82              aapt, aidl, etc.)
83            - <tool> has a new "min-build-tool" attribute.
84
85         - v9 is used by the SDK Manager in Tools r22.6:
86            - It introduces a sub-tag for the <system-image> repository type.
87
88         - v10 is used by the SDK Manager in Tools r22.6.4:
89            - It introduces a <list-display> string for all package types.
90            - It removes the <system-image> type (system images are handled by sdk-sys-img-3.xsd)
91            - it changes <archive os=... arch=...> to sub-elements: <host-os>, <host-bits>,
92              <jvm-bits> and <min-jvm-version>.
93    -->
94
95    <xsd:element name="sdk-repository" type="sdk:repositoryType" />
96
97    <xsd:complexType name="repositoryType">
98        <xsd:annotation>
99            <xsd:documentation>
100                The repository contains a collection of downloadable packages.
101            </xsd:documentation>
102        </xsd:annotation>
103        <xsd:choice minOccurs="0" maxOccurs="unbounded">
104            <xsd:element name="platform"        type="sdk:platformType"     />
105            <xsd:element name="source"          type="sdk:sourceType"       />
106            <xsd:element name="tool"            type="sdk:toolType"         />
107            <xsd:element name="platform-tool"   type="sdk:platformToolType" />
108            <xsd:element name="build-tool"      type="sdk:buildToolType"    />
109            <xsd:element name="doc"             type="sdk:docType"          />
110            <xsd:element name="sample"          type="sdk:sampleType"       />
111            <xsd:element name="license"         type="sdk:licenseType"      />
112        </xsd:choice>
113    </xsd:complexType>
114
115
116    <!-- The definition of an SDK platform package. -->
117
118    <xsd:complexType name="platformType">
119        <xsd:annotation>
120            <xsd:documentation>An SDK platform package.</xsd:documentation>
121        </xsd:annotation>
122        <xsd:all>
123            <!-- The Android platform version. It is string such as "1.0". -->
124            <xsd:element name="version"   type="xsd:normalizedString" />
125            <!-- The Android API Level for the platform. An int > 0. -->
126            <xsd:element name="api-level" type="xsd:positiveInteger"  />
127            <!-- The optional codename for this platform, if it's a preview. -->
128            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
129            <!-- The revision, an int > 0, incremented each time a new
130                 package is generated. -->
131            <xsd:element name="revision"  type="xsd:positiveInteger" />
132
133            <!-- The optional display list item. When missing, it is auto-computed. -->
134            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
135
136            <!-- Information on the layoutlib packaged in this platform. -->
137            <xsd:element name="layoutlib" type="sdk:layoutlibType" />
138
139            <!-- optional elements -->
140
141            <!-- The optional license of this package. If present, users will have
142                 to agree to it before downloading. -->
143            <xsd:element name="uses-license"  type="sdk:usesLicenseType" minOccurs="0" />
144            <!-- The optional description of this package. -->
145            <xsd:element name="description"   type="xsd:string"      minOccurs="0" />
146            <!-- The optional description URL of this package -->
147            <xsd:element name="desc-url"      type="xsd:token"       minOccurs="0" />
148            <!-- The optional release note for this package. -->
149            <xsd:element name="release-note"  type="xsd:string"      minOccurs="0" />
150            <!-- The optional release note URL of this package -->
151            <xsd:element name="release-url"   type="xsd:token"       minOccurs="0" />
152            <!-- A list of file archives for this package. -->
153            <xsd:element name="archives"      type="sdk:archivesType" />
154            <!-- The minimal revision of tools required by this package.
155                 Optional. If present, must be a revision element. -->
156            <xsd:element name="min-tools-rev" type="sdk:revisionType" minOccurs="0" />
157
158            <!-- The ABI of the system image *included* in this platform, if any.
159                 When the field is present, it means the platform already embeds one
160                 system image. A platform can also have any number of external
161                 &lt;system-image&gt; associated with it.  -->
162            <xsd:element name="included-abi"  type="sdk:abiType" minOccurs="0" />
163
164            <!-- An optional element indicating the package is obsolete.
165                 The string content is however currently not defined and ignored. -->
166            <xsd:element name="obsolete"      type="xsd:string" minOccurs="0" />
167        </xsd:all>
168    </xsd:complexType>
169
170
171    <!-- The definition of a layout library used by a platform. -->
172
173    <xsd:complexType name="layoutlibType" >
174        <xsd:annotation>
175            <xsd:documentation>
176                Version information for a layoutlib included in a platform.
177            </xsd:documentation>
178        </xsd:annotation>
179        <xsd:all>
180            <!-- The layoutlib API level, an int > 0,
181                 incremented with each new incompatible lib. -->
182            <xsd:element name="api"          type="xsd:positiveInteger" />
183            <!-- The incremental minor revision for that API, e.g. in case of bug fixes.
184                 Optional. An int >= 0, assumed to be 0 if the element is missing. -->
185            <xsd:element name="revision"     type="xsd:nonNegativeInteger" minOccurs="0" />
186        </xsd:all>
187    </xsd:complexType>
188
189
190    <!-- The definition of the ABI supported by a platform's system image. -->
191
192    <xsd:simpleType name="abiType">
193        <xsd:annotation>
194            <xsd:documentation>The ABI of a platform's system image.</xsd:documentation>
195        </xsd:annotation>
196        <xsd:restriction base="xsd:token">
197            <xsd:enumeration value="armeabi"     />
198            <xsd:enumeration value="armeabi-v7a" />
199            <xsd:enumeration value="x86"         />
200            <xsd:enumeration value="mips"        />
201        </xsd:restriction>
202    </xsd:simpleType>
203
204
205    <!-- The definition of a source package. -->
206
207    <xsd:complexType name="sourceType" >
208        <xsd:annotation>
209            <xsd:documentation>
210                Sources for a platform.
211            </xsd:documentation>
212        </xsd:annotation>
213        <xsd:all>
214            <!-- api-level + codename identifies the platform to which this source belongs. -->
215
216            <!-- The Android API Level for the platform. An int > 0. -->
217            <xsd:element name="api-level" type="xsd:positiveInteger"  />
218            <!-- The optional codename for this platform, if it's a preview. -->
219            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
220
221            <!-- The revision, an int > 0, incremented each time a new
222                 package is generated. -->
223            <xsd:element name="revision"  type="xsd:positiveInteger" />
224
225            <!-- The optional display list item. When missing, it is auto-computed. -->
226            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
227
228            <!-- The optional license of this package. If present, users will have
229                 to agree to it before downloading. -->
230            <xsd:element name="uses-license"  type="sdk:usesLicenseType" minOccurs="0" />
231            <!-- The optional description of this package. -->
232            <xsd:element name="description"   type="xsd:string"      minOccurs="0" />
233            <!-- The optional description URL of this package -->
234            <xsd:element name="desc-url"      type="xsd:token"       minOccurs="0" />
235            <!-- The optional release note for this package. -->
236            <xsd:element name="release-note"  type="xsd:string"      minOccurs="0" />
237            <!-- The optional release note URL of this package -->
238            <xsd:element name="release-url"   type="xsd:token"       minOccurs="0" />
239
240            <!-- A list of file archives for this package. -->
241            <xsd:element name="archives"  type="sdk:archivesType" />
242
243            <!-- An optional element indicating the package is obsolete.
244                 The string content is however currently not defined and ignored. -->
245            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
246        </xsd:all>
247    </xsd:complexType>
248
249
250    <!-- The definition of an SDK tool package. -->
251
252    <xsd:complexType name="toolType" >
253        <xsd:annotation>
254            <xsd:documentation>An SDK tool package.</xsd:documentation>
255        </xsd:annotation>
256        <xsd:all>
257            <!-- The full revision (major.minor.micro.preview), incremented each
258                 time a new package is generated. -->
259            <xsd:element name="revision"      type="sdk:revisionType" />
260
261            <!-- The optional display list item. When missing, it is auto-computed. -->
262            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
263
264            <!-- The optional license of this package. If present, users will have
265                 to agree to it before downloading. -->
266            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
267            <!-- The optional description of this package. -->
268            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
269            <!-- The optional description URL of this package -->
270            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
271            <!-- The optional release note for this package. -->
272            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
273            <!-- The optional release note URL of this package -->
274            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
275            <!-- A list of file archives for this package. -->
276            <xsd:element name="archives"     type="sdk:archivesType" />
277
278            <!-- The minimal revision of platform-tools required by this package.
279                 Mandatory. Must be a revision element. -->
280            <xsd:element name="min-platform-tools-rev" type="sdk:revisionType" />
281
282            <!-- An optional element indicating the package is obsolete.
283                 The string content is however currently not defined and ignored. -->
284            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
285        </xsd:all>
286    </xsd:complexType>
287
288
289    <!-- The definition of an SDK platform-tool package. -->
290
291    <xsd:complexType name="platformToolType" >
292        <xsd:annotation>
293            <xsd:documentation>An SDK platform-tool package.</xsd:documentation>
294        </xsd:annotation>
295        <xsd:all>
296            <!-- The full revision (major.minor.micro.preview), incremented each
297                 time a new package is generated. -->
298            <xsd:element name="revision"      type="sdk:revisionType" />
299
300            <!-- The optional display list item. When missing, it is auto-computed. -->
301            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
302
303            <!-- The optional license of this package. If present, users will have
304                 to agree to it before downloading. -->
305            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
306            <!-- The optional description of this package. -->
307            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
308            <!-- The optional description URL of this package -->
309            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
310            <!-- The optional release note for this package. -->
311            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
312            <!-- The optional release note URL of this package -->
313            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
314            <!-- A list of file archives for this package. -->
315            <xsd:element name="archives"     type="sdk:archivesType" />
316
317            <!-- An optional element indicating the package is obsolete.
318                 The string content is however currently not defined and ignored. -->
319            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
320        </xsd:all>
321    </xsd:complexType>
322
323    <!-- The definition of an SDK build-tool package. -->
324
325    <xsd:complexType name="buildToolType">
326        <xsd:annotation>
327            <xsd:documentation>An SDK build-tool package.</xsd:documentation>
328        </xsd:annotation>
329        <xsd:all>
330            <!-- The full revision (major.minor.micro.preview), incremented each
331                 time a new package is generated. -->
332            <xsd:element name="revision"      type="sdk:revisionType" />
333
334            <!-- optional elements -->
335
336            <!-- The optional display list item. When missing, it is auto-computed. -->
337            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
338
339            <!-- The optional license of this package. If present, users will have
340                 to agree to it before downloading. -->
341            <xsd:element name="uses-license"  type="sdk:usesLicenseType" minOccurs="0" />
342            <!-- The optional description of this package. -->
343            <xsd:element name="description"   type="xsd:string"      minOccurs="0" />
344            <!-- The optional description URL of this package -->
345            <xsd:element name="desc-url"      type="xsd:token"       minOccurs="0" />
346            <!-- The optional release note for this package. -->
347            <xsd:element name="release-note"  type="xsd:string"      minOccurs="0" />
348            <!-- The optional release note URL of this package -->
349            <xsd:element name="release-url"   type="xsd:token"       minOccurs="0" />
350            <!-- A list of file archives for this package. -->
351            <xsd:element name="archives"      type="sdk:archivesType" />
352
353            <!-- An optional element indicating the package is obsolete.
354                 The string content is however currently not defined and ignored. -->
355            <xsd:element name="obsolete"      type="xsd:string" minOccurs="0" />
356        </xsd:all>
357    </xsd:complexType>
358
359
360    <!-- The definition of an SDK doc package. -->
361
362    <xsd:complexType name="docType" >
363        <xsd:annotation>
364            <xsd:documentation>An SDK doc package.</xsd:documentation>
365        </xsd:annotation>
366        <xsd:all>
367            <!-- The Android API Level for the documentation. An int > 0. -->
368            <xsd:element name="api-level" type="xsd:positiveInteger"  />
369            <!-- The optional codename for this doc, if it's a preview. -->
370            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
371
372            <!-- The optional display list item. When missing, it is auto-computed. -->
373            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
374
375            <!-- The revision, an int > 0, incremented each time a new
376                 package is generated. -->
377            <xsd:element name="revision"     type="xsd:positiveInteger" />
378            <!-- The optional license of this package. If present, users will have
379                 to agree to it before downloading. -->
380            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
381            <!-- The optional description of this package. -->
382            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
383            <!-- The optional description URL of this package -->
384            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
385            <!-- The optional release note for this package. -->
386            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
387            <!-- The optional release note URL of this package -->
388            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
389            <!-- A list of file archives for this package. -->
390            <xsd:element name="archives"     type="sdk:archivesType" />
391
392
393            <!-- An optional element indicating the package is obsolete.
394                 The string content is however currently not defined and ignored. -->
395            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
396        </xsd:all>
397    </xsd:complexType>
398
399
400    <!-- The definition of an SDK sample package. -->
401
402    <xsd:complexType name="sampleType" >
403        <xsd:annotation>
404            <xsd:documentation>An SDK sample package.</xsd:documentation>
405        </xsd:annotation>
406        <xsd:all>
407            <!-- The Android API Level for the documentation. An int > 0. -->
408            <xsd:element name="api-level" type="xsd:positiveInteger"  />
409            <!-- The optional codename for this doc, if it's a preview. -->
410            <xsd:element name="codename"  type="xsd:string" minOccurs="0" />
411
412            <!-- The optional display list item. When missing, it is auto-computed. -->
413            <xsd:element name="list-display"   type="xsd:normalizedString" minOccurs="0" />
414
415            <!-- The revision, an int > 0, incremented each time a new
416                 package is generated. -->
417            <xsd:element name="revision"     type="xsd:positiveInteger" />
418            <!-- The optional license of this package. If present, users will have
419                 to agree to it before downloading. -->
420            <xsd:element name="uses-license" type="sdk:usesLicenseType" minOccurs="0" />
421            <!-- The optional description of this package. -->
422            <xsd:element name="description"  type="xsd:string"      minOccurs="0" />
423            <!-- The optional description URL of this package -->
424            <xsd:element name="desc-url"     type="xsd:token"       minOccurs="0" />
425            <!-- The optional release note for this package. -->
426            <xsd:element name="release-note" type="xsd:string"      minOccurs="0" />
427            <!-- The optional release note URL of this package -->
428            <xsd:element name="release-url"  type="xsd:token"       minOccurs="0" />
429            <!-- A list of file archives for this package. -->
430            <xsd:element name="archives"     type="sdk:archivesType" />
431            <!-- The minimal revision of tools required by this package.
432                 Optional. If present, must be a revision element. -->
433            <xsd:element name="min-tools-rev" type="sdk:revisionType" minOccurs="0" />
434
435
436            <!-- An optional element indicating the package is obsolete.
437                 The string content is however currently not defined and ignored. -->
438            <xsd:element name="obsolete"  type="xsd:string" minOccurs="0" />
439        </xsd:all>
440    </xsd:complexType>
441
442
443    <!-- The definition of a path segment used by the extra element. -->
444
445    <xsd:simpleType name="segmentType">
446        <xsd:annotation>
447            <xsd:documentation>
448                One path segment for the install path of an extra element.
449                It must be a single-segment path.
450            </xsd:documentation>
451        </xsd:annotation>
452        <xsd:restriction base="xsd:token">
453            <xsd:pattern value="[a-zA-Z0-9_]+"/>
454        </xsd:restriction>
455    </xsd:simpleType>
456
457    <xsd:simpleType name="segmentListType">
458        <xsd:annotation>
459            <xsd:documentation>
460                A semi-colon separated list of a segmentTypes.
461            </xsd:documentation>
462        </xsd:annotation>
463        <xsd:restriction base="xsd:token">
464            <xsd:pattern value="[a-zA-Z0-9_;]+"/>
465        </xsd:restriction>
466    </xsd:simpleType>
467
468
469    <!-- The definition of a license to be referenced by the uses-license element. -->
470
471    <xsd:complexType name="licenseType">
472        <xsd:annotation>
473            <xsd:documentation>
474                A license definition. Such a license must be used later as a reference
475                using a uses-license element in one of the package elements.
476            </xsd:documentation>
477        </xsd:annotation>
478        <xsd:simpleContent>
479            <xsd:extension base="xsd:string">
480                <xsd:attribute name="id"   type="xsd:ID" />
481                <xsd:attribute name="type" type="xsd:token" fixed="text" />
482            </xsd:extension>
483        </xsd:simpleContent>
484    </xsd:complexType>
485
486
487    <!-- Type describing the license used by a package.
488         The license MUST be defined using a license node and referenced
489         using the ref attribute of the license element inside a package.
490     -->
491
492    <xsd:complexType name="usesLicenseType">
493        <xsd:annotation>
494            <xsd:documentation>
495                Describes the license used by a package. The license MUST be defined
496                using a license node and referenced using the ref attribute of the
497                license element inside a package.
498            </xsd:documentation>
499        </xsd:annotation>
500        <xsd:attribute name="ref" type="xsd:IDREF" />
501    </xsd:complexType>
502
503
504    <!-- A collection of files that can be downloaded for a given architecture.
505         The <archives> node is mandatory in the repository elements and the
506         collection must have at least one <archive> declared.
507         Each archive is a zip file that will be unzipped in a location that depends
508         on its package type.
509     -->
510
511    <xsd:complexType name="archivesType">
512        <xsd:annotation>
513            <xsd:documentation>
514                A collection of files that can be downloaded for a given architecture.
515                The &lt;archives&gt; node is mandatory in the repository packages and the
516                collection must have at least one &lt;archive&gt; declared.
517                Each archive is a zip file that will be unzipped in a location that depends
518                on its package type.
519            </xsd:documentation>
520        </xsd:annotation>
521        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
522            <!-- One archive file -->
523            <xsd:element name="archive">
524                <xsd:complexType>
525                    <!-- Properties of the archive file -->
526                    <xsd:all>
527                        <!-- The size in bytes of the archive to download. -->
528                        <xsd:element name="size"     type="xsd:positiveInteger" />
529                        <!-- The checksum of the archive file. -->
530                        <xsd:element name="checksum" type="sdk:checksumType" />
531                        <!-- The URL is an absolute URL if it starts with http://, https://
532                             or ftp://. Otherwise it is relative to the parent directory that
533                             contains this repository.xml -->
534                        <xsd:element name="url"      type="xsd:token" />
535
536                        <xsd:element name="host-os"         type="sdk:osType"         minOccurs="0" />
537                        <xsd:element name="host-bits"       type="sdk:bitSizeType"    minOccurs="0" />
538                        <xsd:element name="jvm-bits"        type="sdk:bitSizeType"    minOccurs="0" />
539                        <xsd:element name="min-jvm-version" type="sdk:jvmVersionType" minOccurs="0" />
540                    </xsd:all>
541                </xsd:complexType>
542            </xsd:element>
543        </xsd:sequence>
544    </xsd:complexType>
545
546
547    <!-- A full revision, with a major.minor.micro and an optional preview number.
548         The major number is mandatory, the other elements are optional.
549     -->
550
551    <xsd:complexType name="revisionType">
552        <xsd:annotation>
553            <xsd:documentation>
554                A full revision, with a major.minor.micro and an
555                optional preview number. The major number is mandatory.
556            </xsd:documentation>
557        </xsd:annotation>
558        <xsd:all>
559            <!-- The major revision, an int > 0, incremented each time a new
560                 package is generated. -->
561            <xsd:element name="major"      type="xsd:positiveInteger" />
562            <!-- The minor revision, an int >= 0, incremented each time a new
563                 minor package is generated. Assumed to be 0 if missing. -->
564            <xsd:element name="minor"     type="xsd:nonNegativeInteger" minOccurs="0" />
565            <!-- The micro revision, an int >= 0, incremented each time a new
566                 buf fix is generated. Assumed to be 0 if missing. -->
567            <xsd:element name="micro"     type="xsd:nonNegativeInteger" minOccurs="0" />
568            <!-- The preview/release candidate revision, an int > 0,
569                 incremented each time a new preview is generated.
570                 Not present for final releases. -->
571            <xsd:element name="preview"   type="xsd:positiveInteger" minOccurs="0" />
572        </xsd:all>
573    </xsd:complexType>
574
575
576    <!-- A collection of file paths available in an &lt;extra&gt; package
577         that can be installed in an Android project.
578         If present, the &lt;project-files&gt; collection must contain at least one path.
579         Each path is relative to the root directory of the package.
580     -->
581
582    <xsd:complexType name="projectFilesType">
583        <xsd:annotation>
584            <xsd:documentation>
585                A collection of file paths available in an &lt;extra&gt; package
586                that can be installed in an Android project.
587                If present, the &lt;project-files&gt; collection must contain at least one path.
588                Each path is relative to the root directory of the package.
589            </xsd:documentation>
590        </xsd:annotation>
591        <xsd:sequence minOccurs="1" maxOccurs="unbounded">
592            <!-- One JAR Path, relative to the root folder of the package. -->
593            <xsd:element name="path" type="xsd:string" />
594        </xsd:sequence>
595    </xsd:complexType>
596
597
598    <!-- The definition of archive filters -->
599
600    <xsd:simpleType name="bitSizeType">
601        <xsd:annotation>
602            <xsd:documentation>A CPU bit size filter.</xsd:documentation>
603        </xsd:annotation>
604        <xsd:restriction base="xsd:token">
605            <xsd:enumeration value="32" />
606            <xsd:enumeration value="64" />
607        </xsd:restriction>
608    </xsd:simpleType>
609
610    <xsd:simpleType name="osType">
611        <xsd:annotation>
612            <xsd:documentation>A host OS filter.</xsd:documentation>
613        </xsd:annotation>
614        <xsd:restriction base="xsd:token">
615            <xsd:enumeration value="linux" />
616            <xsd:enumeration value="macosx" />
617            <xsd:enumeration value="windows" />
618        </xsd:restriction>
619    </xsd:simpleType>
620
621    <xsd:simpleType name="jvmVersionType">
622        <xsd:annotation>
623            <xsd:documentation>A JVM version number, e.g. "1" or "1.6" or "1.14.15".</xsd:documentation>
624        </xsd:annotation>
625        <xsd:restriction base="xsd:string">
626            <xsd:pattern value="([1-9](\.[1-9]{1,2}){0,2})"/>
627        </xsd:restriction>
628    </xsd:simpleType>
629
630
631    <!-- The definition of a file checksum -->
632
633    <xsd:simpleType name="sha1Number">
634        <xsd:annotation>
635            <xsd:documentation>A SHA1 checksum.</xsd:documentation>
636        </xsd:annotation>
637        <xsd:restriction base="xsd:string">
638            <xsd:pattern value="([0-9a-fA-F]){40}"/>
639        </xsd:restriction>
640    </xsd:simpleType>
641
642    <xsd:complexType name="checksumType">
643        <xsd:annotation>
644            <xsd:documentation>A file checksum, currently only SHA1.</xsd:documentation>
645        </xsd:annotation>
646        <xsd:simpleContent>
647            <xsd:extension base="sdk:sha1Number">
648                <xsd:attribute name="type" type="xsd:token" fixed="sha1" />
649            </xsd:extension>
650        </xsd:simpleContent>
651    </xsd:complexType>
652
653</xsd:schema>
654