]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/XMLSchema/FDPManifest.xsd
Added ValidImageNames ENUM to FvImageTypes so that we do not break the current usage...
[mirror_edk2.git] / Tools / XMLSchema / FDPManifest.xsd
CommitLineData
878ddf1f 1<?xml version="1.0" encoding="UTF-8"?>\r
2<!--\r
3Filename: SurfaceArea.xsd\r
4\r
5Copyright (c) 2006, Intel Corp.\r
6All rights reserved. This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which may be found at http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13-->\r
14<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"\r
15 targetNamespace="http://www.TianoCore.org/2006/Edk2.0"\r
16 xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
17 <xs:annotation>\r
18 <xs:documentation xml:lang="en"> This schema defines FDP Manifest </xs:documentation>\r
19 </xs:annotation>\r
20 <!--<xs:include schemaLocation="http://nwlxweb02.jf.intel.com/2006/Edk2.0/FrameworkHeaders.xsd"/>-->\r
21 <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
22 <xs:element name="FrameworkDevPkgManifest">\r
23 <xs:annotation>\r
24 <xs:documentation xml:lang="en">At the top level of the Manifest we have four sections:\r
25 Header, Private, Public and Contents.</xs:documentation>\r
26 </xs:annotation>\r
27 <xs:complexType>\r
28 <xs:sequence>\r
29 <xs:element minOccurs="1" maxOccurs="1" ref="Header"/>\r
30 <xs:element minOccurs="0" maxOccurs="1" ref="Private"/>\r
31 <xs:element minOccurs="0" maxOccurs="1" ref="Public"/>\r
32 <xs:element minOccurs="1" maxOccurs="1" ref="Contents"/>\r
33 </xs:sequence>\r
34 </xs:complexType>\r
35 </xs:element>\r
36 <xs:element name="Header">\r
37 <xs:annotation>\r
38 <xs:documentation xml:lang="en"> The Header contains some three elements that can\r
39 uniquely identify this package (PackageName, Guid, Version) as well as several\r
40 fields that identify the licensing and compyright status of the contents of the\r
41 package. The rest of the fields are there to idenify who created the package and\r
42 when it was made. The buid fields are here to identify when the package was created,\r
43 not when the package was compiled. </xs:documentation>\r
44 </xs:annotation>\r
45 <xs:complexType>\r
46 <xs:sequence>\r
47 <xs:element minOccurs="1" maxOccurs="1" ref="PackageName"/>\r
48 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
49 <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
50 <xs:element minOccurs="0" maxOccurs="1" ref="Copyright"/>\r
51 <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
52 <xs:element minOccurs="1" maxOccurs="1" name="PackageType" type="PackageType"/>\r
53 <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
54 <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>\r
55 <xs:element minOccurs="0" maxOccurs="1" ref="Creator"/>\r
56 <xs:element minOccurs="0" maxOccurs="1" ref="Vendor"/>\r
57 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Updated"/>\r
58 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Modifier"/>\r
59 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DefaultInstallDir"/>\r
60 <xs:element minOccurs="0" maxOccurs="1" ref="BuildNumber"/>\r
61 <xs:element minOccurs="0" maxOccurs="unbounded" ref="BuildTarget"/>\r
62 <xs:element minOccurs="0" maxOccurs="1" ref="BuildSystem"/>\r
63 <xs:element minOccurs="0" maxOccurs="1" ref="BuildType"/>\r
64 <xs:element minOccurs="0" maxOccurs="1" ref="ReleaseType"/>\r
65 </xs:sequence>\r
66 </xs:complexType>\r
67 </xs:element>\r
68 <xs:element name="BuildNumber" type="xs:integer">\r
69 <xs:annotation>\r
70 <xs:documentation> The Build number is an integer that is meant to represent the exact\r
71 build of the package. </xs:documentation>\r
72 </xs:annotation>\r
73 </xs:element>\r
74 <xs:element name="Type">\r
75 <xs:annotation>\r
76 <xs:documentation> In the Type field we can record what kinds of modules are contained\r
77 in the package. The possibilities are source, binary and mixed (both source and\r
78 binary.) </xs:documentation>\r
79 </xs:annotation>\r
80 <xs:complexType>\r
81 <xs:attributeGroup ref="attlist.Type"/>\r
82 </xs:complexType>\r
83 </xs:element>\r
84 <xs:attributeGroup name="attlist.Type">\r
85 <xs:attribute name="Value" use="required">\r
86 <xs:simpleType>\r
87 <xs:restriction base="xs:token">\r
88 <xs:enumeration value="Source"/>\r
89 <xs:enumeration value="Binary"/>\r
90 <xs:enumeration value="Mixed"/>\r
91 </xs:restriction>\r
92 </xs:simpleType>\r
93 </xs:attribute>\r
94 </xs:attributeGroup>\r
95 <xs:attributeGroup name="attlist.Guid">\r
96 <xs:attribute name="Value" use="required" type="xs:NMTOKEN"/>\r
97 </xs:attributeGroup>\r
98 <xs:element name="BuildTarget" type="SupportedArchitectures">\r
99 <xs:annotation>\r
100 <xs:documentation> The build target is used to record what target architecture the\r
101 modules within this package were compiled for. </xs:documentation>\r
102 </xs:annotation>\r
103 </xs:element>\r
104 <xs:element name="Creator">\r
105 <xs:annotation>\r
106 <xs:documentation> In the creator field, we can record the name, user id, and email\r
107 address of the person who created this package. </xs:documentation>\r
108 </xs:annotation>\r
109 <xs:complexType>\r
110 <xs:attributeGroup ref="attlist.Creator"/>\r
111 </xs:complexType>\r
112 </xs:element>\r
113 <xs:attributeGroup name="attlist.Creator">\r
114 <xs:attribute name="Name" use="required"/>\r
115 <xs:attribute name="UserId"/>\r
116 <xs:attribute name="Email"/>\r
117 </xs:attributeGroup>\r
118 <xs:element name="Modifier">\r
119 <xs:annotation>\r
120 <xs:documentation> In the Modifier field, we can record the name, user id, and email\r
121 address of the person who changed/updated or modified this package.\r
122 </xs:documentation>\r
123 </xs:annotation>\r
124 <xs:complexType>\r
125 <xs:attributeGroup ref="attlist.Modifier"/>\r
126 </xs:complexType>\r
127 </xs:element>\r
128 <xs:attributeGroup name="attlist.Modifier">\r
129 <xs:attribute name="Name" use="required"/>\r
130 <xs:attribute name="UserId"/>\r
131 <xs:attribute name="Email"/>\r
132 </xs:attributeGroup>\r
133 <xs:element name="Vendor" type="xs:token">\r
134 <xs:annotation>\r
135 <xs:documentation> The name of the company, organization or individual that created or\r
136 distributes the package. </xs:documentation>\r
137 </xs:annotation>\r
138 </xs:element>\r
139 <xs:element name="BuildSystem">\r
140 <xs:annotation>\r
141 <xs:documentation>This is the place to record the name and DNS name of the computer on\r
142 which the package was created.</xs:documentation>\r
143 </xs:annotation>\r
144 <xs:complexType>\r
145 <xs:attributeGroup ref="attlist.BuildSystem"/>\r
146 </xs:complexType>\r
147 </xs:element>\r
148 <xs:attributeGroup name="attlist.BuildSystem">\r
149 <xs:attribute name="Name" use="required"/>\r
150 <xs:attribute name="NetAddr"/>\r
151 </xs:attributeGroup>\r
152 <xs:element name="BuildType">\r
153 <xs:annotation>\r
154 <xs:documentation> The package may be Debug or Production. </xs:documentation>\r
155 </xs:annotation>\r
156 <xs:simpleType>\r
157 <xs:restriction base="xs:token">\r
158 <xs:enumeration value="Debug"/>\r
159 <xs:enumeration value="Production"/>\r
160 </xs:restriction>\r
161 </xs:simpleType>\r
162 </xs:element>\r
163 <xs:element name="ReleaseType">\r
164 <xs:annotation>\r
165 <xs:documentation> We may identify the quality level of the package here.\r
166 </xs:documentation>\r
167 </xs:annotation>\r
168 <xs:simpleType>\r
169 <xs:restriction base="xs:token">\r
170 <xs:enumeration value="Developer Build"/>\r
171 <xs:enumeration value="Experimental Release"/>\r
172 <xs:enumeration value="Alpha Release"/>\r
173 <xs:enumeration value="Beta Release"/>\r
174 <xs:enumeration value="Release Canidate"/>\r
175 <xs:enumeration value="Official Release"/>\r
176 <xs:enumeration value="Patch Release"/>\r
177 <xs:enumeration value="Integration Build Release"/>\r
178 </xs:restriction>\r
179 </xs:simpleType>\r
180 </xs:element>\r
181 <xs:element name="DefaultInstallDir">\r
182 <xs:annotation>\r
183 <xs:documentation> This is the directory, relative to the root of the workspace, where\r
184 the package will be installed by default. </xs:documentation>\r
185 </xs:annotation>\r
186 <xs:complexType>\r
187 <xs:attributeGroup ref="attlist.DefaultInstallDir"/>\r
188 </xs:complexType>\r
189 </xs:element>\r
190 <xs:attributeGroup name="attlist.DefaultInstallDir">\r
191 <xs:attribute name="Name" use="required"/>\r
192 </xs:attributeGroup>\r
193 <xs:element name="Dependencies">\r
194 <xs:annotation>\r
195 <xs:documentation> We can track the pakages that this package provides (these are the\r
196 packages contained in this pacakge.) We also record which packages are required by\r
197 this package. </xs:documentation>\r
198 </xs:annotation>\r
199 <xs:complexType>\r
200 <xs:sequence>\r
201 <xs:element minOccurs="0" ref="Requires"/>\r
202 <xs:element minOccurs="0" ref="Provides"/>\r
203 </xs:sequence>\r
204 </xs:complexType>\r
205 </xs:element>\r
206 <xs:element name="Requires">\r
207 <xs:annotation>\r
208 <xs:documentation> This is a list of the packages that this package requires to be\r
209 installed in the workspace for package to function and/or build correctly. In the\r
210 case of source packages, these are the necessary dependencies for successful\r
211 build-time operation of the package. For binary packages these dependencies are\r
212 necessary for successful runtime operation.</xs:documentation>\r
213 </xs:annotation>\r
214 <xs:complexType mixed="true">\r
215 <xs:choice minOccurs="0" maxOccurs="unbounded">\r
216 <xs:element name="Package">\r
217 <xs:annotation>\r
218 <xs:documentation xml:lang="en">This tag is used in the Framework Package\r
219 Database File to track individual package information. The Path is a\r
220 relative path to the SPD File.</xs:documentation>\r
221 </xs:annotation>\r
222 <xs:complexType>\r
223 <xs:sequence maxOccurs="unbounded">\r
224 <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>\r
225 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
226 <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
227 <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\r
228 <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>\r
229 </xs:sequence>\r
230 <xs:attributeGroup ref="PackageAttributes"/>\r
231 </xs:complexType>\r
232 </xs:element>\r
233 <xs:element ref="Includes"/>\r
234 <xs:element name="Library">\r
235 <xs:complexType>\r
236 <xs:simpleContent>\r
237 <xs:extension base="BaseNameConvention">\r
238 <xs:attributeGroup ref="LibraryAttributes"/>\r
239 </xs:extension>\r
240 </xs:simpleContent>\r
241 </xs:complexType>\r
242 </xs:element>\r
243 <xs:element name="Protocol">\r
244 <xs:complexType>\r
245 <xs:simpleContent>\r
246 <xs:extension base="C_Name">\r
247 <xs:attributeGroup ref="ProtocolAttributes"/>\r
248 </xs:extension>\r
249 </xs:simpleContent>\r
250 </xs:complexType>\r
251 </xs:element>\r
252 <xs:element ref="Guid"/>\r
253 <xs:element ref="File"/>\r
254 </xs:choice>\r
255 </xs:complexType>\r
256 </xs:element>\r
257 <xs:element name="Provides">\r
258 <xs:annotation>\r
259 <xs:documentation>The list of dependencies that the package fulfills.</xs:documentation>\r
260 </xs:annotation>\r
261 <xs:complexType>\r
262 <xs:choice minOccurs="0" maxOccurs="unbounded">\r
263 <xs:element name="Package">\r
264 <xs:annotation>\r
265 <xs:documentation xml:lang="en">This tag is used in the Framework Package\r
266 Database File to track individual package information. The Path is a\r
267 relative path to the SPD File.</xs:documentation>\r
268 </xs:annotation>\r
269 <xs:complexType>\r
270 <xs:sequence maxOccurs="unbounded">\r
271 <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>\r
272 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
273 <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
274 <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\r
275 <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>\r
276 </xs:sequence>\r
277 <xs:attributeGroup ref="PackageAttributes"/>\r
278 </xs:complexType>\r
279 </xs:element>\r
280 <xs:element ref="Includes"/>\r
281 <xs:element name="Library">\r
282 <xs:annotation><xs:documentation>\r
283 A library. It can be provided by or required by this or other packages.\r
284 </xs:documentation></xs:annotation>\r
285 <xs:complexType>\r
286 <xs:simpleContent>\r
287 <xs:extension base="BaseNameConvention">\r
288 <xs:attributeGroup ref="LibraryAttributes"/>\r
289 </xs:extension>\r
290 </xs:simpleContent>\r
291 </xs:complexType>\r
292 </xs:element>\r
293 <xs:element name="Protocol">\r
294 <xs:annotation>\r
295 <xs:documentation>\r
296 A protocol. It can be provided by or required by this or other packages.\r
297 </xs:documentation>\r
298 </xs:annotation>\r
299 <xs:complexType>\r
300 <xs:simpleContent>\r
301 <xs:extension base="C_Name">\r
302 <xs:attributeGroup ref="ProtocolAttributes"/>\r
303 </xs:extension>\r
304 </xs:simpleContent>\r
305 </xs:complexType>\r
306 </xs:element>\r
307 <xs:element ref="Guid"/>\r
308 <xs:element ref="File"/>\r
309 </xs:choice>\r
310 </xs:complexType>\r
311 </xs:element>\r
312 <xs:attributeGroup name="attlist.Library">\r
313 <xs:attribute name="Name" use="required"/>\r
314 </xs:attributeGroup>\r
315 <xs:attributeGroup name="attlist.Protocol">\r
316 <xs:attribute name="Name" use="required"/>\r
317 <xs:attribute name="Guid" use="required" type="xs:NMTOKEN"/>\r
318 </xs:attributeGroup>\r
319 <xs:element name="Private">\r
320 <xs:annotation>\r
321 <xs:documentation> The Private section is a place where the files are listed that should\r
322 not be seen by the users of this package. </xs:documentation>\r
323 </xs:annotation>\r
324 <xs:complexType mixed="true">\r
325 <xs:sequence>\r
326 <xs:element minOccurs="0" maxOccurs="unbounded" ref="File"/>\r
327 </xs:sequence>\r
328 </xs:complexType>\r
329 </xs:element>\r
330 <xs:element name="Public">\r
331 <xs:annotation>\r
332 <xs:documentation> The Public section is a list of files that are meant to be seen by\r
333 the users of the package. </xs:documentation>\r
334 </xs:annotation>\r
335 <xs:complexType mixed="true">\r
336 <xs:sequence>\r
337 <xs:element minOccurs="0" maxOccurs="unbounded" ref="File"/>\r
338 </xs:sequence>\r
339 </xs:complexType>\r
340 </xs:element>\r
341 <xs:element name="Contents">\r
342 <xs:annotation>\r
343 <xs:documentation>This is a list of all the files within this package. Each file is\r
344 identified by its path relative to the workspace root.</xs:documentation>\r
345 </xs:annotation>\r
346 <xs:complexType>\r
347 <xs:sequence>\r
348 <xs:element maxOccurs="unbounded" ref="File"/>\r
349 </xs:sequence>\r
350 </xs:complexType>\r
351 </xs:element>\r
352 <xs:element name="File">\r
353 <xs:annotation>\r
354 <xs:documentation xml:lang="en">Specify a filename including the path</xs:documentation>\r
355 </xs:annotation>\r
356 <xs:complexType>\r
357 <xs:simpleContent>\r
358 <xs:extension base="xs:normalizedString">\r
359 <xs:attributeGroup ref="attlist.File"/>\r
360 </xs:extension>\r
361 </xs:simpleContent>\r
362 </xs:complexType>\r
363 </xs:element>\r
364 <xs:attributeGroup name="attlist.File">\r
365 <xs:attribute name="Type"/>\r
366 <xs:attribute name="Desc"/>\r
367 <xs:attribute name="Size" type="xs:NMTOKEN"/>\r
368 <xs:attribute name="CDate" type="xs:NMTOKEN"/>\r
369 <xs:attribute name="CTime" type="xs:NMTOKEN"/>\r
370 <xs:attribute name="MDate" type="xs:NMTOKEN"/>\r
371 <xs:attribute name="MTime" type="xs:NMTOKEN"/>\r
372 <xs:attribute name="ADate" type="xs:NMTOKEN"/>\r
373 <xs:attribute name="ATime" type="xs:NMTOKEN"/>\r
374 <xs:attribute name="Checksum" type="xs:NMTOKEN"/>\r
375 </xs:attributeGroup>\r
376</xs:schema>\r