summaryrefslogtreecommitdiff
path: root/Tools/XMLSchema/FDPManifest.xsd
blob: 7730742b7fb2bef98a826e83f3c6d0ed3e9e5b17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
<?xml version="1.0" encoding="UTF-8"?>
<!--
Filename: SurfaceArea.xsd

Copyright (c) 2006, Intel Corp.
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which may be found at http://opensource.org/licenses/bsd-license.php

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    targetNamespace="http://www.TianoCore.org/2006/Edk2.0"
    xmlns="http://www.TianoCore.org/2006/Edk2.0">
    <xs:annotation>
        <xs:documentation xml:lang="en"> This schema defines FDP Manifest </xs:documentation>
    </xs:annotation>
    <!--<xs:include schemaLocation="http://nwlxweb02.jf.intel.com/2006/Edk2.0/FrameworkHeaders.xsd"/>-->
    <xs:include schemaLocation="FrameworkDataElements.xsd"/>
    <xs:element name="FrameworkDevPkgManifest">
        <xs:annotation>
            <xs:documentation xml:lang="en">At the top level of the Manifest we have four sections:
                Header, Private, Public and Contents.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="1" ref="Header"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="Private"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="Public"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="Contents"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Header">
        <xs:annotation>
            <xs:documentation xml:lang="en"> The Header contains some three elements that can
                uniquely identify this package (PackageName, Guid, Version) as well as several
                fields that identify the licensing and compyright status of the contents of the
                package. The rest of the fields are there to idenify who created the package and
                when it was made. The buid fields are here to identify when the package was created,
                not when the package was compiled. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="1" ref="PackageName"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="Copyright"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
                <xs:element minOccurs="1" maxOccurs="1" name="PackageType" type="PackageType"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
                <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="Creator"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="Vendor"/>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Updated"/>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Modifier"/>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="DefaultInstallDir"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="BuildNumber"/>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="BuildTarget"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="BuildSystem"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="BuildType"/>
                <xs:element minOccurs="0" maxOccurs="1" ref="ReleaseType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="BuildNumber" type="xs:integer">
        <xs:annotation>
            <xs:documentation> The Build number is an integer that is meant to represent the exact
                build of the package. </xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="Type">
        <xs:annotation>
            <xs:documentation> In the Type field we can record what kinds of modules are contained
                in the package. The possibilities are source, binary and mixed (both source and
                binary.) </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.Type"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.Type">
        <xs:attribute name="Value" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="Source"/>
                    <xs:enumeration value="Binary"/>
                    <xs:enumeration value="Mixed"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:attributeGroup name="attlist.Guid">
        <xs:attribute name="Value" use="required" type="xs:NMTOKEN"/>
    </xs:attributeGroup>
    <xs:element name="BuildTarget" type="SupportedArchitectures">
        <xs:annotation>
            <xs:documentation> The build target is used to record what target architecture the
                modules within this package were compiled for. </xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="Creator">
        <xs:annotation>
            <xs:documentation> In the creator field, we can record the name, user id, and email
                address of the person who created this package. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.Creator"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.Creator">
        <xs:attribute name="Name" use="required"/>
        <xs:attribute name="UserId"/>
        <xs:attribute name="Email"/>
    </xs:attributeGroup>
    <xs:element name="Modifier">
        <xs:annotation>
            <xs:documentation> In the Modifier field, we can record the name, user id, and email
                address of the person who changed/updated or modified this package.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.Modifier"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.Modifier">
        <xs:attribute name="Name" use="required"/>
        <xs:attribute name="UserId"/>
        <xs:attribute name="Email"/>
    </xs:attributeGroup>
    <xs:element name="Vendor" type="xs:token">
        <xs:annotation>
            <xs:documentation> The name of the company, organization or individual that created or
                distributes the package. </xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="BuildSystem">
        <xs:annotation>
            <xs:documentation>This is the place to record the name and DNS name of the computer on
                which the package was created.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.BuildSystem"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.BuildSystem">
        <xs:attribute name="Name" use="required"/>
        <xs:attribute name="NetAddr"/>
    </xs:attributeGroup>
    <xs:element name="BuildType">
        <xs:annotation>
            <xs:documentation> The package may be Debug or Production. </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
            <xs:restriction base="xs:token">
                <xs:enumeration value="Debug"/>
                <xs:enumeration value="Production"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ReleaseType">
        <xs:annotation>
            <xs:documentation> We may identify the quality level of the package here.
            </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
            <xs:restriction base="xs:token">
                <xs:enumeration value="Developer Build"/>
                <xs:enumeration value="Experimental Release"/>
                <xs:enumeration value="Alpha Release"/>
                <xs:enumeration value="Beta Release"/>
                <xs:enumeration value="Release Canidate"/>
                <xs:enumeration value="Official Release"/>
                <xs:enumeration value="Patch Release"/>
                <xs:enumeration value="Integration Build Release"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="DefaultInstallDir">
        <xs:annotation>
            <xs:documentation> This is the directory, relative to the root of the workspace, where
                the package will be installed by default. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.DefaultInstallDir"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.DefaultInstallDir">
        <xs:attribute name="Name" use="required"/>
    </xs:attributeGroup>
    <xs:element name="Dependencies">
        <xs:annotation>
            <xs:documentation> We can track the pakages that this package provides (these are the
                packages contained in this pacakge.) We also record which packages are required by
                this package. </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="Requires"/>
                <xs:element minOccurs="0" ref="Provides"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Requires">
        <xs:annotation>
            <xs:documentation> This is a list of the packages that this package requires to be
                installed in the workspace for package to function and/or build correctly. In the
                case of source packages, these are the necessary dependencies for successful
                build-time operation of the package. For binary packages these dependencies are
                necessary for successful runtime operation.</xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Package">
                    <xs:annotation>
                        <xs:documentation xml:lang="en">This tag is used in the Framework Package
                            Database File to track individual package information. The Path is a
                            relative path to the SPD File.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence maxOccurs="unbounded">
                            <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>
                        </xs:sequence>
                        <xs:attributeGroup ref="PackageAttributes"/>
                    </xs:complexType>
                </xs:element>
                <xs:element ref="Includes"/>
                <xs:element name="Library">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:NCName">
                                <xs:attributeGroup ref="LibraryAttributes"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Protocol">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="C_Name">
                                <xs:attributeGroup ref="ProtocolAttributes"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
                <xs:element ref="Guid"/>
                <xs:element ref="File"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="Provides">
        <xs:annotation>
            <xs:documentation>The list of dependencies that the package fulfills.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Package">
                    <xs:annotation>
                        <xs:documentation xml:lang="en">This tag is used in the Framework Package
                            Database File to track individual package information. The Path is a
                            relative path to the SPD File.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence maxOccurs="unbounded">
                            <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>
                            <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>
                        </xs:sequence>
                        <xs:attributeGroup ref="PackageAttributes"/>
                    </xs:complexType>
                </xs:element>
                <xs:element ref="Includes"/>
                <xs:element name="Library">
                    <xs:annotation><xs:documentation>
                        A library. It can be provided by or required by this or other packages.
                    </xs:documentation></xs:annotation>
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:NCName">
                                <xs:attributeGroup ref="LibraryAttributes"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Protocol">
                    <xs:annotation>
                        <xs:documentation>
                        A protocol. It can be provided by or required by this or other packages.
                    </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="C_Name">
                                <xs:attributeGroup ref="ProtocolAttributes"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
                <xs:element ref="Guid"/>
                <xs:element ref="File"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.Library">
        <xs:attribute name="Name" use="required"/>
    </xs:attributeGroup>
    <xs:attributeGroup name="attlist.Protocol">
        <xs:attribute name="Name" use="required"/>
        <xs:attribute name="Guid" use="required" type="xs:NMTOKEN"/>
    </xs:attributeGroup>
    <xs:element name="Private">
        <xs:annotation>
            <xs:documentation> The Private section is a place where the files are listed that should
                not be seen by the users of this package. </xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="File"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Public">
        <xs:annotation>
            <xs:documentation> The Public section is a list of files that are meant to be seen by
                the users of the package. </xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="File"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Contents">
        <xs:annotation>
            <xs:documentation>This is a list of all the files within this package. Each file is
                identified by its path relative to the workspace root.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="File"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="File">
        <xs:annotation>
            <xs:documentation xml:lang="en">Specify a filename including the path</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:normalizedString">
                    <xs:attributeGroup ref="attlist.File"/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.File">
        <xs:attribute name="Type"/>
        <xs:attribute name="Desc"/>
        <xs:attribute name="Size" type="xs:NMTOKEN"/>
        <xs:attribute name="CDate" type="xs:NMTOKEN"/>
        <xs:attribute name="CTime" type="xs:NMTOKEN"/>
        <xs:attribute name="MDate" type="xs:NMTOKEN"/>
        <xs:attribute name="MTime" type="xs:NMTOKEN"/>
        <xs:attribute name="ADate" type="xs:NMTOKEN"/>
        <xs:attribute name="ATime" type="xs:NMTOKEN"/>
        <xs:attribute name="Checksum" type="xs:NMTOKEN"/>
    </xs:attributeGroup>
</xs:schema>