Added More Comments and started doing data type checking so that if a ModuleName...
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataElements.xsd
CommitLineData
878ddf1f 1<?xml version="1.0" encoding="UTF-8"?>\r
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
f29b8a33 3 <!--\r
878ddf1f 4 Filename: FrameworkDataElements.xsd\r
5 \r
6 Copyright (c) 2006, Intel Corp.\r
7 All rights reserved. This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which may be found at http://opensource.org/licenses/bsd-license.php\r
10 \r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 \r
14 -->\r
15 <xs:annotation>\r
f29b8a33 16 <xs:documentation xml:lang="en"> This schema defines EFI and Framework Data Elements </xs:documentation>\r
878ddf1f 17 </xs:annotation>\r
f29b8a33 18 <xs:include schemaLocation="NamingConvention.xsd"/>\r
19 <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
20 <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
21 <xs:element name="Abstract">\r
22 <xs:annotation>\r
23 <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>\r
24 <xs:documentation xml:lang="en">This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section.</xs:documentation>\r
25 </xs:annotation>\r
26 <xs:complexType>\r
27 <xs:simpleContent>\r
28 <xs:extension base="Sentence">\r
29 <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
30 </xs:extension>\r
31 </xs:simpleContent>\r
32 </xs:complexType>\r
33 </xs:element>\r
34 <xs:element name="AntCmd">\r
35 <xs:annotation>\r
36 <xs:documentation xml:lang="en">This is a sub-element of AntTask</xs:documentation>\r
37 <xs:documentation xml:lang="en">This is an ant command that will be inserted into a biuld sequence. Since ant commands are valid XML statements, special care must be taken to use the correct tokens for reserved words and escape quote characters.</xs:documentation>\r
38 </xs:annotation>\r
39 <xs:complexType>\r
40 <xs:sequence>\r
41 <xs:element minOccurs="0" name="Id" type="xs:int"/>\r
42 <xs:element name="ExecutionOrder">\r
43 <xs:simpleType>\r
44 <xs:list itemType="xs:normalizedString"/>\r
45 </xs:simpleType>\r
46 </xs:element>\r
47 </xs:sequence>\r
48 <xs:attributeGroup ref="SectionAttributes"/>\r
49 </xs:complexType>\r
878ddf1f 50 </xs:element>\r
51 <xs:element name="AntTask">\r
52 <xs:annotation>\r
53 <xs:documentation xml:lang="en">This is a sub-element of UserDefinedAntTasks</xs:documentation>\r
54 <xs:documentation xml:lang="en">Define a file that contains one or more ant tasks that are to be added into or replacing of sequences of build steps. These files will be called using the ant-call task on a file name. These files must be valid apache-ant formatted task files.</xs:documentation>\r
55 </xs:annotation>\r
56 <xs:complexType>\r
57 <xs:choice>\r
58 <xs:element ref="AntCmd"/>\r
59 <xs:element ref="Filename"/>\r
60 </xs:choice>\r
61 <xs:attribute name="Id" type="xs:int" use="required"/>\r
62 </xs:complexType>\r
63 </xs:element>\r
64 <xs:element name="BaseName">\r
65 <xs:annotation>\r
66 <xs:documentation xml:lang="en">BaseName is valid for all Description Files</xs:documentation>\r
67 <xs:documentation xml:lang="en"> We need to be able to permit different attributes for every basename </xs:documentation>\r
68 </xs:annotation>\r
69 <xs:complexType>\r
70 <xs:simpleContent>\r
71 <xs:extension base="BaseNameConvention">\r
72 <xs:attributeGroup ref="BaseNameAttributes"/>\r
73 </xs:extension>\r
74 </xs:simpleContent>\r
75 </xs:complexType>\r
76 </xs:element>\r
77 <xs:element name="BootModes">\r
78 <xs:annotation>\r
79 <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>\r
80 <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>\r
81 </xs:annotation>\r
82 <xs:complexType>\r
83 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
84 <xs:element name="BootMode">\r
85 <xs:complexType>\r
86 <xs:attributeGroup ref="BootModeAttributes"/>\r
87 </xs:complexType>\r
88 </xs:element>\r
89 </xs:sequence>\r
90 </xs:complexType>\r
91 </xs:element>\r
92 <xs:element name="BuildOptions">\r
93 <xs:annotation>\r
94 <xs:documentation xml:lang="en">BuildOptions is valid for MBD and FPD files.</xs:documentation>\r
95 <xs:documentation xml:lang="en">Specific Build Options, by Tool Chain, than should be applied, overriding any global options</xs:documentation>\r
96 </xs:annotation>\r
97 <xs:complexType>\r
98 <xs:sequence>\r
99 <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>\r
100 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ImageEntryPoint"/>\r
101 <xs:element minOccurs="0" maxOccurs="1" ref="OutputDirectory"/>\r
102 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Ffs"/>\r
103 <xs:element minOccurs="0" maxOccurs="1" ref="Sections"/>\r
104 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filenames"/>\r
105 <xs:sequence minOccurs="0">\r
106 <xs:element minOccurs="0" maxOccurs="unbounded" name="Option">\r
107 <xs:complexType>\r
108 <xs:simpleContent>\r
109 <xs:extension base="xs:normalizedString">\r
110 <xs:attributeGroup ref="OptionAttributes"/>\r
111 </xs:extension>\r
112 </xs:simpleContent>\r
113 </xs:complexType>\r
114 </xs:element>\r
115 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
116 <xs:complexType>\r
117 <xs:sequence minOccurs="1">\r
118 <xs:element maxOccurs="unbounded" name="Option">\r
119 <xs:complexType>\r
120 <xs:simpleContent>\r
121 <xs:extension base="xs:normalizedString">\r
122 <xs:attributeGroup ref="OptionAttributes"/>\r
123 </xs:extension>\r
124 </xs:simpleContent>\r
125 </xs:complexType>\r
126 </xs:element>\r
127 </xs:sequence>\r
128 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
129 </xs:complexType>\r
130 </xs:element>\r
131 </xs:sequence>\r
132 </xs:sequence>\r
133 <xs:attribute name="ToolChain" type="ToolChains"/>\r
134 </xs:complexType>\r
135 </xs:element>\r
136 <xs:element name="C_Name" type="C_Name">\r
137 <xs:annotation>\r
138 <xs:documentation xml:lang="en">C_Name is valid for all Description Files</xs:documentation>\r
139 </xs:annotation>\r
140 </xs:element>\r
141 <xs:element name="ComponentName" type="C_Name">\r
142 <xs:annotation>\r
143 <xs:documentation xml:lang="en">ComponentName is valid for all Description Files</xs:documentation>\r
144 </xs:annotation>\r
145 </xs:element>\r
146 <xs:element name="ComponentType" type="FrameworkComponentTypes">\r
147 <xs:annotation>\r
148 <xs:documentation xml:lang="en">Describe the valid Framework Component Type</xs:documentation>\r
149 </xs:annotation>\r
150 </xs:element>\r
151 <xs:element name="Condition">\r
152 <xs:annotation>\r
153 <xs:documentation xml:lang="en">A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean.</xs:documentation>\r
154 </xs:annotation>\r
155 <xs:complexType mixed="true">\r
156 <xs:sequence minOccurs="0" maxOccurs="1">\r
157 <xs:element minOccurs="0" maxOccurs="1" name="Condition" type="xs:normalizedString"/>\r
158 </xs:sequence>\r
159 <xs:attribute name="ConditionalTarget" type="ConditionalTarget" use="optional"/>\r
160 </xs:complexType>\r
161 </xs:element>\r
162 <xs:element name="ConditionalExpression">\r
163 <xs:annotation>\r
164 <xs:documentation xml:lang="en">A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean.</xs:documentation>\r
165 </xs:annotation>\r
166 <xs:complexType>\r
167 <xs:sequence>\r
168 <xs:element minOccurs="1" maxOccurs="unbounded" name="Condition" type="xs:normalizedString"/>\r
169 </xs:sequence>\r
170 <xs:attribute name="ConditionalTarget" type="ConditionalTarget" use="optional"/>\r
171 </xs:complexType>\r
172 </xs:element>\r
173 <xs:element name="Constructor" type="C_Name"/>\r
174 <xs:element name="Copyright" type="Sentence"/>\r
175 <xs:element name="Created" type="DateType"/>\r
0fce57e7 176 <xs:element name="CreatedDate" type="DateType"/>\r
878ddf1f 177 <xs:element name="CreatedBy" type="UserName"/>\r
178 <xs:element name="DataHubs">\r
179 <xs:annotation>\r
180 <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>\r
181 </xs:annotation>\r
182 <xs:complexType>\r
183 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
184 <xs:element name="DataHubRecord">\r
185 <xs:complexType>\r
186 <xs:simpleContent>\r
187 <xs:extension base="xs:normalizedString">\r
188 <xs:attributeGroup ref="DataHubAttributes"/>\r
189 </xs:extension>\r
190 </xs:simpleContent>\r
191 </xs:complexType>\r
192 </xs:element>\r
193 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
194 <xs:complexType>\r
195 <xs:sequence>\r
196 <xs:element name="DataHubRecord">\r
197 <xs:complexType>\r
198 <xs:simpleContent>\r
199 <xs:extension base="xs:normalizedString">\r
200 <xs:attributeGroup ref="DataHubAttributes"/>\r
201 </xs:extension>\r
202 </xs:simpleContent>\r
203 </xs:complexType>\r
204 </xs:element>\r
205 </xs:sequence>\r
206 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
207 </xs:complexType>\r
208 </xs:element>\r
209 </xs:sequence>\r
210 </xs:complexType>\r
211 </xs:element>\r
212 <xs:element name="DatabaseName">\r
213 <xs:annotation>\r
214 <xs:documentation xml:lang="en">The Name of the Database, "FrameworkDatabase"</xs:documentation>\r
215 </xs:annotation>\r
216 <xs:complexType>\r
217 <xs:simpleContent>\r
218 <xs:extension base="BaseNameConvention">\r
219 <xs:attributeGroup ref="BaseNameAttributes"/>\r
220 </xs:extension>\r
221 </xs:simpleContent>\r
222 </xs:complexType>\r
223 </xs:element>\r
224 <xs:element name="DefaultValue">\r
225 <xs:annotation>\r
226 <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>\r
227 </xs:annotation>\r
228 <xs:complexType>\r
229 <xs:simpleContent>\r
230 <xs:extension base="xs:normalizedString"/>\r
231 </xs:simpleContent>\r
232 </xs:complexType>\r
233 </xs:element>\r
234 <xs:element name="Description" type="Paragraph">\r
235 <xs:annotation>\r
236 <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>\r
237 </xs:annotation>\r
238 </xs:element>\r
239 <xs:element name="Destructor" type="C_Name"/>\r
240 <xs:element name="DriverBinding" type="C_Name"/>\r
241 <xs:element name="DriverConfig" type="C_Name"/>\r
242 <xs:element name="DriverDiag" type="C_Name"/>\r
243 <xs:element name="E-Mail" type="E-Mail"/>\r
244 <xs:element name="Events">\r
245 <xs:annotation>\r
246 <xs:documentation xml:lang="en">This is a list of Events</xs:documentation>\r
247 </xs:annotation>\r
248 <xs:complexType>\r
249 <xs:sequence>\r
250 <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">\r
251 <xs:complexType>\r
252 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
253 <xs:element name="Event">\r
254 <xs:complexType>\r
255 <xs:sequence>\r
256 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
257 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
258 </xs:sequence>\r
259 <xs:attributeGroup ref="EventAttributes"/>\r
260 </xs:complexType>\r
261 </xs:element>\r
262 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
263 <xs:complexType>\r
264 <xs:sequence>\r
265 <xs:element name="Event">\r
266 <xs:complexType>\r
267 <xs:sequence>\r
268 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
269 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
270 </xs:sequence>\r
271 <xs:attributeGroup ref="EventAttributes"/>\r
272 </xs:complexType>\r
273 </xs:element>\r
274 </xs:sequence>\r
275 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
276 </xs:complexType>\r
277 </xs:element>\r
278 </xs:sequence>\r
279 </xs:complexType>\r
280 </xs:element>\r
281 <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">\r
282 <xs:annotation>\r
283 <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>\r
284 </xs:annotation>\r
285 <xs:complexType>\r
286 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
287 <xs:element name="Event">\r
288 <xs:complexType>\r
289 <xs:sequence>\r
290 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
291 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
292 </xs:sequence>\r
293 <xs:attributeGroup ref="EventAttributes"/>\r
294 </xs:complexType>\r
295 </xs:element>\r
296 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
297 <xs:complexType>\r
298 <xs:sequence>\r
299 <xs:element name="Event">\r
300 <xs:complexType>\r
301 <xs:sequence>\r
302 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
303 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
304 </xs:sequence>\r
305 <xs:attributeGroup ref="EventAttributes"/>\r
306 </xs:complexType>\r
307 </xs:element>\r
308 </xs:sequence>\r
309 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
310 </xs:complexType>\r
311 </xs:element>\r
312 </xs:sequence>\r
313 </xs:complexType>\r
314 </xs:element>\r
315 </xs:sequence>\r
316 </xs:complexType>\r
317 </xs:element>\r
318 <xs:element name="ExitBootServicesCallBack" type="C_Name"/>\r
319 <xs:element name="Externs">\r
320 <xs:annotation>\r
321 <xs:documentation xml:lang="en">This is a child of MSA files, both Library and Module.</xs:documentation>\r
322 <xs:documentation xml:lang="en">This is a list of Extern statements, right now, only Driver Binding information is provided.</xs:documentation>\r
323 </xs:annotation>\r
324 <xs:complexType>\r
f29b8a33 325 <xs:sequence minOccurs="1">\r
326 <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
327 <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
878ddf1f 328 <xs:complexType>\r
329 <xs:choice minOccurs="1">\r
330 <xs:sequence minOccurs="0" maxOccurs="1">\r
331 <xs:annotation>\r
332 <xs:documentation xml:lang="en">Driver Module</xs:documentation>\r
333 </xs:annotation>\r
334 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleEntryPoint"/>\r
335 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleUnloadImage"/>\r
336 </xs:sequence>\r
337 <xs:sequence minOccurs="0" maxOccurs="1">\r
338 <xs:annotation>\r
339 <xs:documentation xml:lang="en">Library Module</xs:documentation>\r
340 </xs:annotation>\r
341 <xs:element minOccurs="0" maxOccurs="1" ref="Constructor"/>\r
342 <xs:element minOccurs="0" maxOccurs="1" ref="Destructor"/>\r
343 </xs:sequence>\r
344 <xs:sequence minOccurs="0" maxOccurs="1">\r
345 <xs:annotation>\r
346 <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>\r
347 <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>\r
348 </xs:annotation>\r
349 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverBinding"/>\r
350 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ComponentName"/>\r
351 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverConfig"/>\r
352 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverDiag"/>\r
353 </xs:sequence>\r
354 <xs:sequence minOccurs="0" maxOccurs="1">\r
355 <xs:annotation>\r
356 <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>\r
357 </xs:annotation>\r
358 <xs:element minOccurs="0" maxOccurs="unbounded" ref="SetVirtualAddressMapCallBack"/>\r
359 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ExitBootServicesCallBack"/>\r
360 </xs:sequence>\r
361 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDefined" type="C_Name"/>\r
362 </xs:choice>\r
363 <xs:attributeGroup ref="ExternAttributes"/>\r
364 </xs:complexType>\r
365 </xs:element>\r
366 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
367 <xs:complexType>\r
368 <xs:sequence>\r
369 <xs:element name="Extern">\r
370 <xs:complexType>\r
371 <xs:choice minOccurs="1">\r
372 <xs:sequence minOccurs="0" maxOccurs="1">\r
373 <xs:annotation>\r
374 <xs:documentation xml:lang="en">Driver Module</xs:documentation>\r
375 </xs:annotation>\r
376 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleEntryPoint"/>\r
377 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleUnloadImage"/>\r
378 </xs:sequence>\r
379 <xs:sequence minOccurs="0" maxOccurs="1">\r
380 <xs:annotation>\r
381 <xs:documentation xml:lang="en">Library Module</xs:documentation>\r
382 </xs:annotation>\r
383 <xs:element minOccurs="0" maxOccurs="1" ref="Constructor"/>\r
384 <xs:element minOccurs="0" maxOccurs="1" ref="Destructor"/>\r
385 </xs:sequence>\r
386 <xs:sequence minOccurs="0" maxOccurs="1">\r
387 <xs:annotation>\r
388 <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>\r
389 <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>\r
390 </xs:annotation>\r
391 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverBinding"/>\r
392 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ComponentName"/>\r
393 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverConfig"/>\r
394 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverDiag"/>\r
395 </xs:sequence>\r
396 <xs:sequence minOccurs="0" maxOccurs="1">\r
397 <xs:annotation>\r
398 <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>\r
399 </xs:annotation>\r
400 <xs:element minOccurs="0" maxOccurs="unbounded" ref="SetVirtualAddressMapCallBack"/>\r
401 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ExitBootServicesCallBack"/>\r
402 </xs:sequence>\r
403 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDefined" type="C_Name"/>\r
404 </xs:choice>\r
405 <xs:attributeGroup ref="ExternAttributes"/>\r
406 </xs:complexType>\r
407 </xs:element>\r
408 </xs:sequence>\r
409 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
410 </xs:complexType>\r
411 </xs:element>\r
412 </xs:sequence>\r
413 </xs:complexType>\r
414 </xs:element>\r
415 <xs:element name="Ffs">\r
416 <xs:annotation>\r
417 <xs:documentation xml:lang="en">Define the FFS File attributes within a sections and containing sections information</xs:documentation>\r
418 </xs:annotation>\r
419 <xs:complexType>\r
420 <xs:sequence>\r
421 <xs:element minOccurs="0" maxOccurs="unbounded" name="Attribute">\r
422 <xs:complexType>\r
423 <xs:sequence>\r
424 <xs:element minOccurs="1" maxOccurs="1" name="Name" type="C_Name"/>\r
425 <xs:element minOccurs="1" maxOccurs="1" name="Value" type="C_Name"/>\r
426 </xs:sequence>\r
427 </xs:complexType>\r
428 </xs:element>\r
429 <xs:element minOccurs="0" maxOccurs="1" ref="Sections"/>\r
430 </xs:sequence>\r
431 </xs:complexType>\r
432 </xs:element>\r
433 <xs:element name="Filename">\r
434 <xs:annotation>\r
435 <xs:documentation xml:lang="en">Describe the valid content of a filename</xs:documentation>\r
436 </xs:annotation>\r
437 <xs:complexType>\r
438 <xs:simpleContent>\r
439 <xs:extension base="VariableConvention">\r
440 <xs:attributeGroup ref="FilenameAttributes"/>\r
441 </xs:extension>\r
442 </xs:simpleContent>\r
443 </xs:complexType>\r
444 </xs:element>\r
445 <xs:element name="Filenames">\r
446 <xs:annotation>\r
447 <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>\r
448 </xs:annotation>\r
449 <xs:complexType>\r
450 <xs:sequence minOccurs="1">\r
451 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
452 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
453 <xs:complexType>\r
454 <xs:sequence minOccurs="1">\r
455 <xs:element maxOccurs="unbounded" ref="Filename"/>\r
456 </xs:sequence>\r
457 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
458 </xs:complexType>\r
459 </xs:element>\r
460 </xs:sequence>\r
461 </xs:complexType>\r
462 </xs:element>\r
463 <xs:element name="Formsets">\r
464 <xs:annotation>\r
465 <xs:documentation xml:lang="en">Describe the list of a Formset elements</xs:documentation>\r
466 </xs:annotation>\r
467 <xs:complexType>\r
468 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
469 <xs:element name="Formset">\r
470 <xs:annotation>\r
471 <xs:documentation xml:lang="en">Describe the valid content of a Formset</xs:documentation>\r
472 </xs:annotation>\r
473 <xs:complexType>\r
474 <xs:simpleContent>\r
475 <xs:extension base="C_Name">\r
476 <xs:attributeGroup ref="FormsetAttributes"/>\r
477 </xs:extension>\r
478 </xs:simpleContent>\r
479 </xs:complexType>\r
480 </xs:element>\r
481 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
482 <xs:complexType>\r
483 <xs:sequence>\r
484 <xs:element name="Formset">\r
485 <xs:annotation>\r
486 <xs:documentation xml:lang="en">Describe the valid content of a Formset</xs:documentation>\r
487 </xs:annotation>\r
488 <xs:complexType>\r
489 <xs:simpleContent>\r
490 <xs:extension base="C_Name">\r
491 <xs:attributeGroup ref="FormsetAttributes"/>\r
492 </xs:extension>\r
493 </xs:simpleContent>\r
494 </xs:complexType>\r
495 </xs:element>\r
496 </xs:sequence>\r
497 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
498 </xs:complexType>\r
499 </xs:element>\r
500 </xs:sequence>\r
501 </xs:complexType>\r
502 </xs:element>\r
503 <xs:element name="Guid">\r
504 <xs:annotation>\r
505 <xs:documentation xml:lang="en">Describe the valid content of a GUID</xs:documentation>\r
506 </xs:annotation>\r
507 <xs:complexType>\r
508 <xs:simpleContent>\r
509 <xs:extension base="GuidType">\r
510 <xs:attributeGroup ref="GuidAttributes"/>\r
511 </xs:extension>\r
512 </xs:simpleContent>\r
513 </xs:complexType>\r
514 </xs:element>\r
515 <xs:element name="GuidDeclarations">\r
516 <xs:complexType>\r
517 <xs:sequence>\r
518 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
519 <xs:complexType>\r
520 <xs:sequence>\r
521 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
522 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
523 <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
524 </xs:sequence>\r
525 <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
526 </xs:complexType>\r
527 </xs:element>\r
528 </xs:sequence>\r
529 </xs:complexType>\r
530 </xs:element>\r
531 <xs:element name="Guids">\r
532 <xs:complexType>\r
533 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
534 <xs:element name="GuidEntry">\r
535 <xs:annotation>\r
536 <xs:documentation xml:lang="en">Describe the valid content of a PCD GUID element</xs:documentation>\r
537 </xs:annotation>\r
538 <xs:complexType>\r
539 <xs:sequence minOccurs="0" maxOccurs="1">\r
540 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
541 <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
542 <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
543 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConditionalExpression"/>\r
544 <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>\r
545 <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
546 </xs:sequence>\r
547 <xs:attributeGroup ref="GuidAttributes"/>\r
548 </xs:complexType>\r
549 </xs:element>\r
550 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
551 <xs:complexType>\r
552 <xs:sequence>\r
553 <xs:element name="GuidEntry">\r
554 <xs:annotation>\r
555 <xs:documentation xml:lang="en">Describe the valid content of a PCD GUID element</xs:documentation>\r
556 </xs:annotation>\r
557 <xs:complexType>\r
558 <xs:sequence minOccurs="0" maxOccurs="1">\r
559 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
560 <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
561 <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
562 <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConditionalExpression"/>\r
563 <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>\r
564 <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
565 </xs:sequence>\r
566 <xs:attributeGroup ref="GuidAttributes"/>\r
567 </xs:complexType>\r
568 </xs:element>\r
569 </xs:sequence>\r
570 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
571 </xs:complexType>\r
572 </xs:element>\r
573 </xs:sequence>\r
574 </xs:complexType>\r
575 </xs:element>\r
576 <xs:element name="GuidValue" type="GuidType"/>\r
577 <xs:element name="HelpText" type="Paragraph">\r
578 <xs:annotation>\r
579 <xs:documentation xml:lang="en">This section is used to describe how a GUID, PPI or PROTOCOL is to be used within the context of PCDs.</xs:documentation>\r
580 </xs:annotation>\r
581 </xs:element>\r
582 <xs:element name="Hobs">\r
583 <xs:complexType>\r
584 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
585 <xs:element name="Hob">\r
586 <xs:complexType>\r
587 <xs:sequence>\r
588 <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>\r
589 <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>\r
590 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
591 </xs:sequence>\r
592 <xs:attributeGroup ref="HobAttributes"/>\r
593 </xs:complexType>\r
594 </xs:element>\r
595 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
596 <xs:complexType>\r
597 <xs:sequence>\r
598 <xs:element name="Hob">\r
599 <xs:complexType>\r
600 <xs:sequence>\r
601 <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>\r
602 <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>\r
603 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
604 </xs:sequence>\r
605 <xs:attributeGroup ref="HobAttributes"/>\r
606 </xs:complexType>\r
607 </xs:element>\r
608 </xs:sequence>\r
609 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
610 </xs:complexType>\r
611 </xs:element>\r
612 </xs:sequence>\r
613 </xs:complexType>\r
614 </xs:element>\r
615 <xs:element name="ImageEntryPoint" type="C_Name"/>\r
616 <xs:element name="IncludeHeader">\r
617 <xs:complexType>\r
618 <xs:simpleContent>\r
619 <xs:extension base="FileNameConvention">\r
620 <xs:attributeGroup ref="IncludeAttributes"/>\r
621 </xs:extension>\r
622 </xs:simpleContent>\r
623 </xs:complexType>\r
624 </xs:element>\r
625 <xs:element name="Includes">\r
626 <xs:annotation>\r
627 <xs:documentation xml:lang="en">One or More Package Names or Arch sections is required. Includes are not files, but paths to where header files are located.</xs:documentation>\r
628 </xs:annotation>\r
629 <xs:complexType>\r
630 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
631 <xs:element minOccurs="0" maxOccurs="unbounded" ref="PackageName"/>\r
0675decb 632 <!-- remove Arch element, start using the Arch attribute for the PackageName element above. -->\r
878ddf1f 633 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
634 <xs:complexType>\r
635 <xs:sequence minOccurs="1">\r
636 <xs:element maxOccurs="unbounded" ref="PackageName"/>\r
637 </xs:sequence>\r
638 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
639 </xs:complexType>\r
640 </xs:element>\r
641 </xs:sequence>\r
642 </xs:complexType>\r
643 </xs:element>\r
644 <xs:element name="InstalledDate" type="DateType"/>\r
645 <xs:element name="Libraries">\r
646 <xs:annotation>\r
0675decb 647 <xs:documentation xml:lang="en">Different (Module) Instances of Libraries used ONLY in FPD Files.</xs:documentation>\r
878ddf1f 648 </xs:annotation>\r
649 <xs:complexType>\r
650 <xs:sequence minOccurs="1">\r
651 <xs:element minOccurs="0" maxOccurs="unbounded" name="Library">\r
652 <xs:complexType>\r
653 <xs:simpleContent>\r
0675decb 654 <xs:extension base="xs:NCName">\r
878ddf1f 655 <xs:attributeGroup ref="LibraryAttributes"/>\r
656 </xs:extension>\r
657 </xs:simpleContent>\r
658 </xs:complexType>\r
659 </xs:element>\r
0675decb 660 <!-- remove Arch Element HERE, start using the Arch attribute in Library element above. -->\r
878ddf1f 661 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
662 <xs:complexType>\r
663 <xs:choice minOccurs="1" maxOccurs="unbounded">\r
664 <xs:element minOccurs="0" maxOccurs="unbounded" name="Library">\r
665 <xs:complexType>\r
666 <xs:simpleContent>\r
667 <xs:extension base="BaseNameConvention">\r
668 <xs:attributeGroup ref="LibraryAttributes"/>\r
669 </xs:extension>\r
670 </xs:simpleContent>\r
671 </xs:complexType>\r
672 </xs:element>\r
673 </xs:choice>\r
674 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
675 </xs:complexType>\r
676 </xs:element>\r
0675decb 677 <!-- /remove Arch Element -->\r
878ddf1f 678 </xs:sequence>\r
679 </xs:complexType>\r
680 </xs:element>\r
681 <xs:element name="LibraryClass">\r
682 <xs:annotation>\r
0675decb 683 <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
878ddf1f 684 </xs:annotation>\r
685 <xs:complexType>\r
686 <xs:simpleContent>\r
687 <xs:extension base="BaseNameConvention">\r
2fdd0c7d 688 <xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
0675decb 689 <xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>\r
2fdd0c7d 690 <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
878ddf1f 691 </xs:extension>\r
692 </xs:simpleContent>\r
693 </xs:complexType>\r
694 </xs:element>\r
695 <xs:element name="LibraryClassDeclaration">\r
696 <xs:annotation>\r
697 <xs:documentation xml:lang="en">This element defines a class of library, along with the path to the Include Header for this library</xs:documentation>\r
698 </xs:annotation>\r
699 <xs:complexType>\r
700 <xs:sequence minOccurs="0">\r
2fdd0c7d 701 <xs:element minOccurs="1" maxOccurs="1" name="LibraryClass">\r
702 <xs:annotation>\r
0675decb 703 <xs:documentation xml:lang="en">Used in MSA and SPD files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
2fdd0c7d 704 </xs:annotation>\r
705 <xs:complexType>\r
706 <xs:simpleContent>\r
707 <xs:extension base="BaseNameConvention">\r
0675decb 708 <xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>\r
2fdd0c7d 709 <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
710 </xs:extension>\r
711 </xs:simpleContent>\r
712 </xs:complexType>\r
713 </xs:element>\r
878ddf1f 714 <xs:element minOccurs="1" maxOccurs="1" ref="IncludeHeader"/>\r
715 </xs:sequence>\r
716 </xs:complexType>\r
717 </xs:element>\r
718 <xs:element name="LibraryClassDeclarations">\r
719 <xs:annotation>\r
720 <xs:documentation xml:lang="en">This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes.</xs:documentation>\r
721 </xs:annotation>\r
722 <xs:complexType mixed="true">\r
723 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
724 <xs:element ref="LibraryClassDeclaration"/>\r
725 </xs:sequence>\r
726 </xs:complexType>\r
727 </xs:element>\r
728 <xs:element name="LibraryClassDefinitions">\r
729 <xs:annotation>\r
730 <xs:documentation xml:lang="en">This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes.</xs:documentation>\r
731 </xs:annotation>\r
732 <xs:complexType mixed="true">\r
733 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
734 <xs:element ref="LibraryClass"/>\r
735 </xs:sequence>\r
736 </xs:complexType>\r
737 </xs:element>\r
738 <xs:element name="License">\r
739 <xs:complexType>\r
740 <xs:simpleContent>\r
741 <xs:extension base="Paragraph">\r
fbf910a5 742 <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
878ddf1f 743 </xs:extension>\r
744 </xs:simpleContent>\r
745 </xs:complexType>\r
746 </xs:element>\r
747 <xs:element name="Modified" type="DateType"/>\r
2558d455 748 <xs:element name="ModifiedDate" type="DateType"/>\r
878ddf1f 749 <xs:element name="Module">\r
750 <xs:annotation>\r
751 <xs:documentation xml:lang="en">This is record format for a Module entry in the Framework Database file.</xs:documentation>\r
752 </xs:annotation>\r
753 <xs:complexType>\r
754 <xs:annotation>\r
755 <xs:documentation xml:lang="en">This describes the fields in an Module record in the Framework Database. The Path field is relative to the workspace to Module Surface Area (MSA) files.</xs:documentation>\r
756 </xs:annotation>\r
757 <xs:sequence>\r
758 <xs:element minOccurs="1" maxOccurs="1" ref="ModuleName"/>\r
759 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
760 <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
761 <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\r
762 </xs:sequence>\r
763 </xs:complexType>\r
764 </xs:element>\r
765 <xs:element name="ModuleEntryPoint" type="xs:normalizedString"/>\r
766 <xs:element name="ModuleList">\r
767 <xs:annotation>\r
768 <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track package installation</xs:documentation>\r
769 </xs:annotation>\r
770 <xs:complexType>\r
771 <xs:sequence maxOccurs="unbounded">\r
772 <xs:element minOccurs="1" maxOccurs="unbounded" ref="Module"/>\r
773 </xs:sequence>\r
774 </xs:complexType>\r
775 </xs:element>\r
776 <xs:element name="ModuleName">\r
777 <xs:annotation>\r
778 <xs:documentation xml:lang="en">This is the valid content of a Module Name</xs:documentation>\r
779 </xs:annotation>\r
780 <xs:complexType>\r
781 <xs:simpleContent>\r
0675decb 782 <xs:extension base="xs:NCName">\r
878ddf1f 783 <xs:attributeGroup ref="ModuleNameAttributes"/>\r
784 </xs:extension>\r
785 </xs:simpleContent>\r
786 </xs:complexType>\r
787 </xs:element>\r
788 <xs:element name="ModuleType" type="ModuleTypeDef">\r
789 <xs:annotation>\r
790 <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>\r
791 </xs:annotation>\r
792 </xs:element>\r
793 <xs:element name="ModuleUnloadImage" type="xs:normalizedString"/>\r
794 <xs:element name="MsaFiles">\r
795 <xs:complexType>\r
796 <xs:sequence minOccurs="1">\r
797 <xs:element minOccurs="0" maxOccurs="unbounded" name="MsaFile">\r
798 <xs:annotation>\r
2fdd0c7d 799 <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
878ddf1f 800 </xs:annotation>\r
801 <xs:complexType>\r
802 <xs:sequence minOccurs="0" maxOccurs="1">\r
803 <xs:element minOccurs="0" ref="Filename"/>\r
804 <xs:element minOccurs="0" ref="BuildOptions"/>\r
805 </xs:sequence>\r
806 <xs:attributeGroup ref="MsaAttributes"/>\r
807 </xs:complexType>\r
808 </xs:element>\r
809 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
810 <xs:complexType>\r
811 <xs:sequence minOccurs="1">\r
812 <xs:element maxOccurs="unbounded" name="MsaFile">\r
813 <xs:annotation>\r
814 <xs:documentation xml:lang="en">Describe the valid content of a Surface Area Package Description (SPD) file</xs:documentation>\r
815 </xs:annotation>\r
816 <xs:complexType>\r
817 <xs:sequence minOccurs="0" maxOccurs="1">\r
818 <xs:element minOccurs="0" ref="Filename"/>\r
819 <xs:element minOccurs="0" ref="BuildOptions"/>\r
820 </xs:sequence>\r
821 <xs:attributeGroup ref="MsaAttributes"/>\r
822 </xs:complexType>\r
823 </xs:element>\r
824 </xs:sequence>\r
825 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
826 </xs:complexType>\r
827 </xs:element>\r
828 </xs:sequence>\r
829 </xs:complexType>\r
830 </xs:element>\r
2fdd0c7d 831 <xs:element name="MsaFileList">\r
832 <xs:annotation>\r
833 <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
834 </xs:annotation>\r
835 <xs:complexType>\r
836 <xs:sequence>\r
0675decb 837 <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">\r
838 <xs:complexType>\r
839 <xs:simpleContent>\r
840 <xs:extension base="xs:anyURI">\r
841 <xs:attributeGroup ref="ModuleNameSaAttributes"/>\r
842 </xs:extension>\r
843 </xs:simpleContent>\r
2fdd0c7d 844 </xs:complexType>\r
845 </xs:element>\r
846 </xs:sequence>\r
847 </xs:complexType>\r
848 </xs:element>\r
878ddf1f 849 <xs:element name="OutputDirectory">\r
850 <xs:annotation>\r
851 <xs:documentation xml:lang="en">Define where we want our output to go. The Attribute, IntermediateDirectories, default MODULE, says that intermediate files will be local to the module, versus a unified directory structure.</xs:documentation>\r
852 </xs:annotation>\r
853 <xs:complexType>\r
854 <xs:simpleContent>\r
855 <xs:extension base="DirectoryNamingConvention">\r
856 <xs:attribute default="MODULE" name="IntermediateDirectories">\r
857 <xs:simpleType>\r
858 <xs:restriction base="UCNameType">\r
859 <xs:enumeration value="MODULE"/>\r
860 <xs:enumeration value="UNIFIED"/>\r
861 </xs:restriction>\r
862 </xs:simpleType>\r
863 </xs:attribute>\r
864 </xs:extension>\r
865 </xs:simpleContent>\r
866 </xs:complexType>\r
867 </xs:element>\r
868 <xs:element name="PCDs">\r
869 <xs:annotation>\r
870 <xs:documentation xml:lang="en">Child of Module Surface Area documents, MSA and MBD files, Library Modules and Other Modules</xs:documentation>\r
871 <xs:documentation xml:lang="en">One or more PcdData or PcdBuildData Elements Only one type is permitted</xs:documentation>\r
872 </xs:annotation>\r
873 <xs:complexType>\r
874 <xs:sequence minOccurs="1">\r
875 <xs:element maxOccurs="unbounded" name="PcdData">\r
876 <xs:annotation>\r
877 <xs:documentation xml:lang="en">This is a child of PCDs and can occur in the MSA and MBD files.</xs:documentation>\r
878 <xs:documentation xml:lang="en">This is date element is used in the Module Surface Area (MSA) file and contains references to be used by a Platform Build</xs:documentation>\r
879 <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
880 </xs:annotation>\r
881 <xs:complexType>\r
882 <xs:sequence>\r
883 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
884 <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>\r
cb9f0b9e 885 <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
878ddf1f 886 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
887 <xs:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
888 <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
889 <xs:element default="false" minOccurs="0" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>\r
890 <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
891 <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
892 <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>\r
893 <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
894 <xs:element minOccurs="0" maxOccurs="1" name="DatumSize">\r
895 <xs:annotation>\r
896 <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
897 </xs:annotation>\r
898 <xs:simpleType>\r
899 <xs:restriction base="xs:int">\r
900 <xs:minInclusive value="1"/>\r
901 <xs:maxInclusive value="16777215"/>\r
902 </xs:restriction>\r
903 </xs:simpleType>\r
904 </xs:element>\r
905 <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
906 <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
907 <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
908 <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>\r
909 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
910 <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
911 </xs:sequence>\r
912 <xs:attributeGroup ref="PcdAttributes"/>\r
f29b8a33 913 <xs:attribute name="PcdIsDriver" use="optional"/>\r
878ddf1f 914 </xs:complexType>\r
915 </xs:element>\r
916 </xs:sequence>\r
917 </xs:complexType>\r
918 </xs:element>\r
919 <xs:element name="PackageDependencies">\r
920 <xs:annotation>\r
921 <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module</xs:documentation>\r
922 </xs:annotation>\r
923 <xs:complexType>\r
924 <xs:sequence maxOccurs="unbounded">\r
925 <xs:element minOccurs="1" maxOccurs="unbounded" ref="PackageName"/>\r
926 </xs:sequence>\r
927 <xs:attributeGroup ref="PackageNameAttributes"/>\r
928 </xs:complexType>\r
929 </xs:element>\r
930 <xs:element name="PackageHeaders">\r
931 <xs:annotation>\r
932 <xs:documentation xml:lang="en">This defines the minimum header file needed to support a given ModuleType.</xs:documentation>\r
933 </xs:annotation>\r
934 <xs:complexType>\r
935 <xs:sequence>\r
936 <xs:element minOccurs="1" maxOccurs="unbounded" ref="IncludeHeader"/>\r
937 </xs:sequence>\r
938 </xs:complexType>\r
939 </xs:element>\r
940 <xs:element name="PackageList">\r
941 <xs:annotation>\r
0675decb 942 <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages installed in a workspace. (Database)</xs:documentation>\r
878ddf1f 943 </xs:annotation>\r
944 <xs:complexType>\r
945 <xs:sequence maxOccurs="unbounded">\r
946 <xs:element minOccurs="1" name="Package">\r
947 <xs:annotation>\r
948 <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>\r
949 </xs:annotation>\r
950 <xs:complexType>\r
951 <xs:sequence maxOccurs="unbounded">\r
952 <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>\r
0675decb 953 <xs:choice minOccurs="1">\r
954 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
955 <!-- DO NOT USE Guid should be removed, use PackageGuid instead -->\r
956 <xs:element minOccurs="0" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
957 </xs:choice>\r
958 <xs:choice minOccurs="1">\r
959 <xs:element minOccurs="0" maxOccurs="1" ref="Version"/>\r
960 <xs:element minOccurs="0" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
961 </xs:choice>\r
878ddf1f 962 <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\r
963 <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>\r
964 </xs:sequence>\r
965 <xs:attributeGroup ref="PackageAttributes"/>\r
966 </xs:complexType>\r
967 </xs:element>\r
968 </xs:sequence>\r
969 </xs:complexType>\r
970 </xs:element>\r
971 <xs:element name="PackageName">\r
972 <xs:annotation>\r
0675decb 973 <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module (SPD) </xs:documentation>\r
878ddf1f 974 </xs:annotation>\r
975 <xs:complexType>\r
976 <xs:simpleContent>\r
977 <xs:extension base="BaseNameConvention">\r
978 <xs:attributeGroup ref="PackageAttributes"/>\r
979 </xs:extension>\r
980 </xs:simpleContent>\r
981 </xs:complexType>\r
982 </xs:element>\r
983 <xs:element name="PackageType" type="PackageType"/>\r
984 <xs:element name="Path">\r
985 <xs:annotation>\r
986 <xs:documentation xml:lang="en">Describe the valid content of a filename</xs:documentation>\r
987 </xs:annotation>\r
988 <xs:complexType>\r
989 <xs:simpleContent>\r
990 <xs:extension base="DirectoryNamingConvention">\r
991 <xs:attributeGroup ref="DirectoryAttributes"/>\r
992 </xs:extension>\r
993 </xs:simpleContent>\r
994 </xs:complexType>\r
995 </xs:element>\r
996 <xs:element name="PcdBuildDeclarations">\r
997 <xs:annotation>\r
2558d455 998 <xs:documentation xml:lang="en">NEW: Will become a child of ModuleSA in the FPD</xs:documentation>\r
878ddf1f 999 </xs:annotation>\r
1000 <xs:complexType>\r
1001 <xs:choice minOccurs="1">\r
1002 <xs:element minOccurs="0" maxOccurs="1" ref="Filename"/>\r
1003 <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
1004 <xs:annotation>\r
1005 <xs:documentation xml:lang="en">Child of PcdBuildDeclarations</xs:documentation>\r
1006 <xs:documentation xml:lang="en">This is date element is used in the platform build description file and contains valid data for a Platform Build</xs:documentation>\r
1007 <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
1008 </xs:annotation>\r
1009 <xs:complexType>\r
1010 <xs:sequence>\r
1011 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
2558d455 1012 <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
878ddf1f 1013 <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
1014 <xs:annotation>\r
1015 <xs:documentation xml:lang="en">This as a unique identifier defined for either this name space.</xs:documentation>\r
1016 <xs:documentation xml:lang="en">The Target Attribute may be used to define a Target name space, such as PCI.</xs:documentation>\r
1017 </xs:annotation>\r
1018 <xs:complexType>\r
1019 <xs:simpleContent>\r
1020 <xs:extension base="HexDoubleWordDataType">\r
1021 <xs:attribute name="Target" type="C_Name" use="optional"/>\r
1022 </xs:extension>\r
1023 </xs:simpleContent>\r
1024 </xs:complexType>\r
1025 </xs:element>\r
cb9f0b9e 1026 <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
878ddf1f 1027 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">\r
1028 <xs:annotation>\r
1029 <xs:documentation xml:lang="en">This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID*</xs:documentation>\r
1030 </xs:annotation>\r
1031 </xs:element>\r
1032 <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean">\r
1033 <xs:annotation>\r
1034 <xs:documentation xml:lang="en">This Bit means that the Variable data is associated with HII</xs:documentation>\r
1035 </xs:annotation>\r
1036 </xs:element>\r
1037 <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean">\r
1038 <xs:annotation>\r
1039 <xs:documentation xml:lang="en">This bit enables the Vital Product Data area within flash for maintaining PCD information</xs:documentation>\r
1040 </xs:annotation>\r
1041 </xs:element>\r
1042 <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean">\r
1043 <xs:annotation>\r
1044 <xs:documentation>This is only applicable to ItemType DYNAMIC_EX</xs:documentation>\r
1045 </xs:annotation>\r
1046 </xs:element>\r
1047 <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
1048 <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
1049 <xs:choice minOccurs="0">\r
1050 <xs:element minOccurs="0" maxOccurs="1" name="SkuDataArray">\r
1051 <xs:annotation>\r
1052 <xs:documentation xml:lang="en">This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value</xs:documentation>\r
1053 </xs:annotation>\r
1054 <xs:simpleType>\r
1055 <xs:list itemType="xs:normalizedString"/>\r
1056 </xs:simpleType>\r
1057 </xs:element>\r
1058 <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\r
1059 <xs:annotation>\r
1060 <xs:documentation xml:lang="en">This section is for a list of SkuData Elements, ID and Value</xs:documentation>\r
1061 </xs:annotation>\r
1062 <xs:complexType>\r
1063 <xs:sequence minOccurs="1">\r
1064 <xs:element name="Id" type="xs:int"/>\r
1065 <xs:element name="Value" type="xs:normalizedString"/>\r
1066 </xs:sequence>\r
1067 </xs:complexType>\r
1068 </xs:element>\r
1069 </xs:choice>\r
1070 <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="MaxSku" type="HexByteDataType">\r
1071 <xs:annotation>\r
1072 <xs:documentation xml:lang="en">This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined.</xs:documentation>\r
1073 </xs:annotation>\r
1074 </xs:element>\r
1075 <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType">\r
1076 <xs:annotation>\r
1077 <xs:documentation xml:lang="en">This is the specific Sku ID for this build.</xs:documentation>\r
1078 </xs:annotation>\r
1079 </xs:element>\r
1080 <xs:element minOccurs="1" maxOccurs="1" name="DatumSize">\r
1081 <xs:annotation>\r
1082 <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
1083 </xs:annotation>\r
1084 <xs:simpleType>\r
1085 <xs:restriction base="xs:int">\r
1086 <xs:minInclusive value="1"/>\r
1087 <xs:maxInclusive value="16777215"/>\r
1088 </xs:restriction>\r
1089 </xs:simpleType>\r
1090 </xs:element>\r
1091 <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType">\r
1092 <xs:annotation>\r
1093 <xs:documentation xml:lang="en">This is the Variable's GUID if and only if HII is enabled.</xs:documentation>\r
1094 </xs:annotation>\r
1095 </xs:element>\r
1096 <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString">\r
1097 <xs:annotation>\r
1098 <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>\r
1099 </xs:annotation>\r
1100 </xs:element>\r
2558d455 1101 <xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>\r
878ddf1f 1102 <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">\r
1103 <xs:annotation>\r
1104 <xs:documentation xml:lang="en">If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.)</xs:documentation>\r
1105 </xs:annotation>\r
1106 </xs:element>\r
0df1e610 1107 <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
878ddf1f 1108 <xs:annotation>\r
0df1e610 1109 <xs:documentation xml:lang="en">FIELD IS NOT USED! REMOVE in FINAL!</xs:documentation>\r
878ddf1f 1110 </xs:annotation>\r
1111 </xs:element>\r
1112 <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
1113 </xs:sequence>\r
1114 <xs:attributeGroup ref="PcdAttributes"/>\r
eebf7983 1115 <xs:attribute name="PcdIsDriver">\r
f29b8a33 1116 <xs:simpleType>\r
1117 <xs:annotation>\r
1118 <xs:documentation xml:lang="en">This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only</xs:documentation>\r
1119 </xs:annotation>\r
1120 <xs:restriction base="UCNameType">\r
1121 <xs:enumeration value="PEI_PCD_DRIVER"/>\r
1122 <xs:enumeration value="DXE_PCD_DRIVER"/>\r
1123 </xs:restriction>\r
1124 </xs:simpleType>\r
1125 </xs:attribute>\r
878ddf1f 1126 </xs:complexType>\r
1127 </xs:element>\r
1128 </xs:choice>\r
1129 </xs:complexType>\r
f29b8a33 1130 </xs:element>\r
1131 <!-- PcdBuildDeclarations -->\r
1132 <xs:element name="PcdDynamicBuildDeclarations">\r
1133 <xs:annotation>\r
1134 <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
1135 <xs:documentation xml:lang="en">We permit the FPD to use an external XML file for PCD information or else the information must be contained within the XML data element, PcdBuildData.</xs:documentation>\r
1136 </xs:annotation>\r
1137 <xs:complexType>\r
1138 <xs:sequence>\r
1139 <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
1140 <xs:annotation>\r
1141 <xs:documentation xml:lang="en">Child of PcdBuildDeclarations</xs:documentation>\r
1142 <xs:documentation xml:lang="en">This is date element is used in the platform build description file and contains valid data for a Platform Build</xs:documentation>\r
1143 <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
1144 </xs:annotation>\r
1145 <xs:complexType>\r
1146 <xs:sequence>\r
1147 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
1148 <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
1149 <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
1150 <xs:annotation>\r
1151 <xs:documentation xml:lang="en">This as a unique identifier defined for either this name space.</xs:documentation>\r
1152 <xs:documentation xml:lang="en">The Target Attribute may be used to define a Target name space, such as PCI.</xs:documentation>\r
1153 </xs:annotation>\r
1154 <xs:complexType>\r
1155 <xs:simpleContent>\r
1156 <xs:extension base="HexDoubleWordDataType">\r
1157 <xs:attribute name="Target" type="C_Name" use="optional"/>\r
1158 </xs:extension>\r
1159 </xs:simpleContent>\r
1160 </xs:complexType>\r
1161 </xs:element>\r
cb9f0b9e 1162 <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
f29b8a33 1163 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">\r
1164 <xs:annotation>\r
1165 <xs:documentation xml:lang="en">This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID*</xs:documentation>\r
1166 </xs:annotation>\r
1167 </xs:element>\r
1168 <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean">\r
1169 <xs:annotation>\r
1170 <xs:documentation xml:lang="en">This Bit means that the Variable data is associated with HII</xs:documentation>\r
1171 </xs:annotation>\r
1172 </xs:element>\r
1173 <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean">\r
1174 <xs:annotation>\r
1175 <xs:documentation xml:lang="en">This bit enables the Vital Product Data area within flash for maintaining PCD information</xs:documentation>\r
1176 </xs:annotation>\r
1177 </xs:element>\r
1178 <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean">\r
1179 <xs:annotation>\r
1180 <xs:documentation>This is only applicable to ItemType DYNAMIC_EX</xs:documentation>\r
1181 </xs:annotation>\r
1182 </xs:element>\r
1183 <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
1184 <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
1185 <xs:choice minOccurs="0">\r
1186 <xs:element minOccurs="0" maxOccurs="1" name="SkuDataArray">\r
1187 <xs:annotation>\r
1188 <xs:documentation xml:lang="en">This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value</xs:documentation>\r
1189 </xs:annotation>\r
1190 <xs:simpleType>\r
1191 <xs:list itemType="xs:normalizedString"/>\r
1192 </xs:simpleType>\r
1193 </xs:element>\r
1194 <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\r
1195 <xs:annotation>\r
1196 <xs:documentation xml:lang="en">This section is for a list of SkuData Elements, ID and Value</xs:documentation>\r
1197 </xs:annotation>\r
1198 <xs:complexType>\r
1199 <xs:sequence minOccurs="1">\r
1200 <xs:element name="Id" type="xs:int"/>\r
1201 <xs:element name="Value" type="xs:normalizedString"/>\r
1202 </xs:sequence>\r
1203 </xs:complexType>\r
1204 </xs:element>\r
1205 </xs:choice>\r
1206 <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="MaxSku" type="HexByteDataType">\r
1207 <xs:annotation>\r
1208 <xs:documentation xml:lang="en">This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined.</xs:documentation>\r
1209 </xs:annotation>\r
1210 </xs:element>\r
1211 <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType">\r
1212 <xs:annotation>\r
1213 <xs:documentation xml:lang="en">This is the specific Sku ID for this build.</xs:documentation>\r
1214 </xs:annotation>\r
1215 </xs:element>\r
1216 <xs:element minOccurs="1" maxOccurs="1" name="DatumSize">\r
1217 <xs:annotation>\r
1218 <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
1219 </xs:annotation>\r
1220 <xs:simpleType>\r
1221 <xs:restriction base="xs:int">\r
1222 <xs:minInclusive value="1"/>\r
1223 <xs:maxInclusive value="16777215"/>\r
1224 </xs:restriction>\r
1225 </xs:simpleType>\r
1226 </xs:element>\r
1227 <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType">\r
1228 <xs:annotation>\r
1229 <xs:documentation xml:lang="en">This is the Variable's GUID if and only if HII is enabled.</xs:documentation>\r
1230 </xs:annotation>\r
1231 </xs:element>\r
1232 <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString">\r
1233 <xs:annotation>\r
1234 <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>\r
1235 </xs:annotation>\r
1236 </xs:element>\r
1237 <xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>\r
1238 <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">\r
2558d455 1239 <xs:annotation>\r
1240 <xs:documentation xml:lang="en">If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.)</xs:documentation>\r
1241 </xs:annotation>\r
1242 </xs:element>\r
0df1e610 1243 <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
2558d455 1244 <xs:annotation>\r
0df1e610 1245 <xs:documentation xml:lang="en">FIELD IS NOT USED! REMOVE in FINAL!</xs:documentation>\r
2558d455 1246 </xs:annotation>\r
1247 </xs:element>\r
1248 <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
1249 </xs:sequence>\r
1250 <xs:attributeGroup ref="PcdAttributes"/>\r
eebf7983 1251 <xs:attribute name="PcdIsDriver">\r
f29b8a33 1252 <xs:simpleType>\r
1253 <xs:annotation>\r
1254 <xs:documentation xml:lang="en">This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only</xs:documentation>\r
1255 </xs:annotation>\r
1256 <xs:restriction base="UCNameType">\r
1257 <xs:enumeration value="PEI_PCD_DRIVER"/>\r
1258 <xs:enumeration value="DXE_PCD_DRIVER"/>\r
1259 </xs:restriction>\r
1260 </xs:simpleType>\r
1261 </xs:attribute>\r
2558d455 1262 </xs:complexType>\r
1263 </xs:element>\r
1264 </xs:sequence>\r
1265 </xs:complexType>\r
f29b8a33 1266 </xs:element>\r
1267 <!-- PcdDynamicBuildDeclarations -->\r
878ddf1f 1268 <xs:element name="PcdDefinitions">\r
1269 <xs:annotation>\r
1270 <xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>\r
1271 <xs:documentation xml:lang="en">This permits entering information about a package's PCD information</xs:documentation>\r
1272 </xs:annotation>\r
1273 <xs:complexType>\r
1274 <xs:sequence minOccurs="1">\r
1275 <xs:element maxOccurs="unbounded" name="PcdEntry">\r
1276 <xs:annotation>\r
1277 <xs:documentation xml:lang="en">This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules.</xs:documentation>\r
1278 <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>\r
1279 <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
1280 </xs:annotation>\r
1281 <xs:complexType>\r
1282 <xs:sequence>\r
1283 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
1284 <xs:element minOccurs="1" maxOccurs="1" name="Token" type="Token"/>\r
cb9f0b9e 1285 <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
878ddf1f 1286 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
1287 <xs:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
1288 <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
1289 <xs:element default="false" minOccurs="0" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>\r
1290 <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
1291 <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
1292 <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>\r
1293 <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
1294 <xs:element minOccurs="0" maxOccurs="1" name="DatumSize">\r
1295 <xs:annotation>\r
1296 <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
1297 </xs:annotation>\r
1298 <xs:simpleType>\r
1299 <xs:restriction base="xs:int">\r
1300 <xs:minInclusive value="1"/>\r
1301 <xs:maxInclusive value="16777215"/>\r
1302 </xs:restriction>\r
1303 </xs:simpleType>\r
1304 </xs:element>\r
1305 <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
1306 <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
1307 <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
1308 <xs:element default="0" minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>\r
1309 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>\r
1310 </xs:sequence>\r
1311 <xs:attributeGroup ref="PcdAttributes"/>\r
1312 </xs:complexType>\r
1313 </xs:element>\r
1314 </xs:sequence>\r
1315 </xs:complexType>\r
1316 </xs:element>\r
1317 <xs:element name="Platform">\r
1318 <xs:annotation>\r
1319 <xs:documentation xml:lang="en">Database Entry to locate the Platform Build Tips - path to FPD file.</xs:documentation>\r
1320 </xs:annotation>\r
1321 <xs:complexType>\r
1322 <xs:sequence>\r
2558d455 1323 <xs:element minOccurs="0" maxOccurs="1" name="PlatformName">\r
878ddf1f 1324 <xs:annotation>\r
1325 <xs:documentation xml:lang="en">Define the Name of a Platform</xs:documentation>\r
1326 </xs:annotation>\r
1327 <xs:complexType>\r
1328 <xs:simpleContent>\r
1329 <xs:extension base="PlatformNamingConvention">\r
1330 <xs:attributeGroup ref="PlatformAttributes"/>\r
1331 </xs:extension>\r
1332 </xs:simpleContent>\r
1333 </xs:complexType>\r
1334 </xs:element>\r
2558d455 1335 <xs:element minOccurs="0" maxOccurs="1" ref="Path"/>\r
eebf7983 1336 <!--\r
2558d455 1337 <xs:element minOccurs="0" maxOccurs="1" ref="File"/>\r
eebf7983 1338 -->\r
2558d455 1339 <xs:element minOccurs="0" maxOccurs="1" ref="InstalledDate"/>\r
1340 <xs:element minOccurs="0" maxOccurs="1" ref="ModifiedDate"/>\r
878ddf1f 1341 <xs:element minOccurs="0" maxOccurs="1" name="AlternatePcdFile" type="FileNameConvention"/>\r
1342 <xs:element minOccurs="0" maxOccurs="1" name="AlternateFdfFile" type="FileNameConvention"/>\r
1343 </xs:sequence>\r
1344 <xs:attributeGroup ref="PlatformAttributes"/>\r
1345 </xs:complexType>\r
1346 </xs:element>\r
1347 <xs:element name="PpiDeclarations">\r
1348 <xs:complexType>\r
1349 <xs:sequence>\r
1350 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
1351 <xs:complexType>\r
1352 <xs:sequence>\r
1353 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
1354 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
1355 <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
1356 </xs:sequence>\r
1357 <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
1358 </xs:complexType>\r
1359 </xs:element>\r
1360 </xs:sequence>\r
1361 </xs:complexType>\r
1362 </xs:element>\r
1363 <xs:element name="PPIs">\r
1364 <xs:annotation>\r
1365 <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>\r
1366 </xs:annotation>\r
1367 <xs:complexType>\r
1368 <xs:sequence minOccurs="1">\r
1369 <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">\r
1370 <xs:complexType>\r
1371 <xs:simpleContent>\r
1372 <xs:extension base="C_Name">\r
1373 <xs:attributeGroup ref="PpiAttributes"/>\r
1374 </xs:extension>\r
1375 </xs:simpleContent>\r
1376 </xs:complexType>\r
1377 </xs:element>\r
1378 <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">\r
1379 <xs:complexType>\r
1380 <xs:simpleContent>\r
1381 <xs:extension base="C_Name">\r
1382 <xs:attributeGroup ref="PpiNotifyAttributes"/>\r
1383 </xs:extension>\r
1384 </xs:simpleContent>\r
1385 </xs:complexType>\r
1386 </xs:element>\r
1387 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
1388 <xs:complexType>\r
1389 <xs:sequence>\r
1390 <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">\r
1391 <xs:complexType>\r
1392 <xs:simpleContent>\r
1393 <xs:extension base="C_Name">\r
1394 <xs:attributeGroup ref="PpiAttributes"/>\r
1395 </xs:extension>\r
1396 </xs:simpleContent>\r
1397 </xs:complexType>\r
1398 </xs:element>\r
1399 <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">\r
1400 <xs:complexType>\r
1401 <xs:simpleContent>\r
1402 <xs:extension base="C_Name">\r
1403 <xs:attributeGroup ref="PpiNotifyAttributes"/>\r
1404 </xs:extension>\r
1405 </xs:simpleContent>\r
1406 </xs:complexType>\r
1407 </xs:element>\r
1408 </xs:sequence>\r
1409 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
1410 </xs:complexType>\r
1411 </xs:element>\r
1412 </xs:sequence>\r
1413 </xs:complexType>\r
1414 </xs:element>\r
1415 <xs:element name="ProtocolDeclarations">\r
1416 <xs:complexType>\r
1417 <xs:sequence>\r
1418 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
1419 <xs:complexType>\r
1420 <xs:sequence>\r
1421 <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
1422 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
1423 <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
1424 </xs:sequence>\r
1425 <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
1426 </xs:complexType>\r
1427 </xs:element>\r
1428 </xs:sequence>\r
1429 </xs:complexType>\r
1430 </xs:element>\r
1431 <xs:element name="Protocols">\r
1432 <xs:annotation>\r
1433 <xs:documentation xml:lang="en">If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section</xs:documentation>\r
1434 </xs:annotation>\r
1435 <xs:complexType>\r
1436 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
1437 <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">\r
1438 <xs:complexType>\r
1439 <xs:simpleContent>\r
1440 <xs:extension base="C_Name">\r
1441 <xs:attributeGroup ref="ProtocolAttributes"/>\r
1442 </xs:extension>\r
1443 </xs:simpleContent>\r
1444 </xs:complexType>\r
1445 </xs:element>\r
1446 <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">\r
1447 <xs:complexType>\r
1448 <xs:simpleContent>\r
1449 <xs:extension base="C_Name">\r
1450 <xs:attributeGroup ref="ProtocolNotifyAttributes"/>\r
1451 </xs:extension>\r
1452 </xs:simpleContent>\r
1453 </xs:complexType>\r
1454 </xs:element>\r
1455 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
1456 <xs:complexType>\r
1457 <xs:sequence>\r
1458 <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">\r
1459 <xs:complexType>\r
1460 <xs:simpleContent>\r
1461 <xs:extension base="C_Name">\r
1462 <xs:attributeGroup ref="ProtocolAttributes"/>\r
1463 </xs:extension>\r
1464 </xs:simpleContent>\r
1465 </xs:complexType>\r
1466 </xs:element>\r
1467 <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">\r
1468 <xs:complexType>\r
1469 <xs:simpleContent>\r
1470 <xs:extension base="C_Name">\r
1471 <xs:attributeGroup ref="ProtocolNotifyAttributes"/>\r
1472 </xs:extension>\r
1473 </xs:simpleContent>\r
1474 </xs:complexType>\r
1475 </xs:element>\r
1476 </xs:sequence>\r
1477 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
1478 </xs:complexType>\r
1479 </xs:element>\r
1480 </xs:sequence>\r
1481 </xs:complexType>\r
1482 </xs:element>\r
1483 <xs:element default="false" name="ReadOnly" type="xs:boolean"/>\r
1484 <xs:element default="false" name="RePackage" type="xs:boolean"/>\r
1485 <xs:element name="Sections">\r
1486 <xs:annotation>\r
1487 <xs:documentation xml:lang="en">Sections refers to the Firmware Filesystem sections, PE32, UI, VER, DXS, etc. and how they are made</xs:documentation>\r
1488 </xs:annotation>\r
1489 <xs:complexType>\r
1490 <xs:sequence minOccurs="1">\r
1491 <xs:element minOccurs="0" maxOccurs="unbounded" name="Section">\r
1492 <xs:complexType>\r
1493 <xs:sequence>\r
1494 <xs:element minOccurs="0" ref="Filenames"/>\r
1495 <xs:element minOccurs="0" name="Args" type="ArgsType"/>\r
1496 <xs:element minOccurs="0" name="OutFile" type="FileNameConvention"/>\r
1497 <xs:element minOccurs="0" name="OutputFileExtension" type="xs:string"/>\r
1498 <xs:element minOccurs="0" name="ToolName" type="ToolType"/>\r
1499 </xs:sequence>\r
1500 <xs:attributeGroup ref="SectionAttributes"/>\r
1501 </xs:complexType>\r
1502 </xs:element>\r
1503 <xs:element minOccurs="0" maxOccurs="unbounded" name="Sections">\r
1504 <xs:complexType>\r
1505 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
1506 <xs:element name="Section">\r
1507 <xs:complexType>\r
1508 <xs:sequence>\r
1509 <xs:element minOccurs="0" ref="Filenames"/>\r
1510 <xs:element minOccurs="0" name="Args" type="ArgsType"/>\r
1511 <xs:element minOccurs="0" name="OutFile" type="FileNameConvention"/>\r
1512 <xs:element minOccurs="0" name="OutputFileExtension" type="xs:string"/>\r
1513 <xs:element minOccurs="0" name="ToolName" type="ToolType"/>\r
1514 </xs:sequence>\r
1515 <xs:attributeGroup ref="SectionAttributes"/>\r
1516 </xs:complexType>\r
1517 </xs:element>\r
1518 </xs:sequence>\r
1519 <xs:attributeGroup ref="SectionsAttributes"/>\r
1520 </xs:complexType>\r
1521 </xs:element>\r
1522 </xs:sequence>\r
1523 <xs:attributeGroup ref="SectionsAttributes"/>\r
1524 </xs:complexType>\r
1525 </xs:element>\r
1526 <xs:element name="SetVirtualAddressMapCallBack" type="C_Name"/>\r
1527 <xs:element name="SourceFiles">\r
1528 <xs:annotation>\r
1529 <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
1530 </xs:annotation>\r
1531 <xs:complexType>\r
1532 <xs:sequence minOccurs="1">\r
1533 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
1534 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
1535 <xs:complexType>\r
1536 <xs:sequence minOccurs="1">\r
1537 <xs:element maxOccurs="unbounded" ref="Filename"/>\r
1538 </xs:sequence>\r
1539 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
1540 </xs:complexType>\r
1541 </xs:element>\r
1542 </xs:sequence>\r
1543 </xs:complexType>\r
1544 </xs:element>\r
1545 <xs:element name="Specification">\r
1546 <xs:annotation>\r
1547 <xs:documentation xml:lang="en">This string is used to provide the name and version of the Specification that the component conforms to.</xs:documentation>\r
1548 </xs:annotation>\r
1549 <xs:complexType>\r
1550 <xs:simpleContent>\r
1551 <xs:extension base="xs:normalizedString">\r
1552 <xs:attribute name="Version" type="xs:normalizedString" use="optional"/>\r
1553 </xs:extension>\r
1554 </xs:simpleContent>\r
1555 </xs:complexType>\r
1556 </xs:element>\r
1557 <xs:element name="SystemTables">\r
1558 <xs:annotation>\r
1559 <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>\r
1560 </xs:annotation>\r
1561 <xs:complexType>\r
1562 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
1563 <xs:element name="SystemTable">\r
1564 <xs:complexType>\r
1565 <xs:sequence>\r
1566 <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>\r
1567 </xs:sequence>\r
1568 <xs:attributeGroup ref="SystemTableAttributes"/>\r
1569 </xs:complexType>\r
1570 </xs:element>\r
1571 </xs:sequence>\r
1572 </xs:complexType>\r
1573 </xs:element>\r
1574 <xs:element name="Updated" type="DateType"/>\r
f29b8a33 1575 <xs:element name="UpdatedDate" type="DateType"/>\r
878ddf1f 1576 <xs:element name="URL" type="xs:anyURI"/>\r
1577 <xs:element name="URI" type="xs:anyURI"/>\r
1578 <xs:element name="UserDefinedAntTasks">\r
1579 <xs:annotation>\r
1580 <xs:documentation xml:lang="en">This is a sub-element of BuildOptions</xs:documentation>\r
1581 <xs:documentation xml:lang="en">Permit Users to define their own custom ANT tasks.</xs:documentation>\r
1582 </xs:annotation>\r
1583 <xs:complexType>\r
1584 <xs:sequence maxOccurs="unbounded">\r
1585 <xs:element minOccurs="1" ref="AntTask"/>\r
1586 </xs:sequence>\r
1587 </xs:complexType>\r
1588 </xs:element>\r
1589 <xs:element name="Variables">\r
1590 <xs:annotation>\r
1591 <xs:documentation xml:lang="en">A list of EFI Variables described by GUID string pair.</xs:documentation>\r
1592 </xs:annotation>\r
1593 <xs:complexType>\r
1594 <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
1595 <xs:element name="Variable">\r
1596 <xs:annotation>\r
1597 <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>\r
1598 </xs:annotation>\r
1599 <xs:complexType>\r
1600 <xs:sequence>\r
1601 <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>\r
1602 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
1603 <xs:element minOccurs="0" maxOccurs="1" name="ByteOffset" type="HexWordDataType">\r
1604 <xs:annotation>\r
1605 <xs:documentation xml:lang="en">This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts.</xs:documentation>\r
1606 </xs:annotation>\r
1607 </xs:element>\r
1608 <xs:element minOccurs="0" maxOccurs="1" name="BitOffset">\r
1609 <xs:annotation>\r
1610 <xs:documentation xml:lang="en">This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte.</xs:documentation>\r
1611 </xs:annotation>\r
1612 <xs:simpleType>\r
1613 <xs:restriction base="xs:int">\r
1614 <xs:minInclusive value="0"/>\r
1615 <xs:maxInclusive value="8"/>\r
1616 </xs:restriction>\r
1617 </xs:simpleType>\r
1618 </xs:element>\r
1619 <xs:element minOccurs="0" maxOccurs="1" name="OffsetBitSize">\r
1620 <xs:annotation>\r
1621 <xs:documentation xml:lang="en">This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used.</xs:documentation>\r
1622 </xs:annotation>\r
1623 <xs:simpleType>\r
1624 <xs:restriction base="xs:int">\r
1625 <xs:minInclusive value="0"/>\r
1626 <xs:maxInclusive value="7"/>\r
1627 </xs:restriction>\r
1628 </xs:simpleType>\r
1629 </xs:element>\r
1630 </xs:sequence>\r
1631 <xs:attributeGroup ref="VariableAttributes"/>\r
1632 </xs:complexType>\r
1633 </xs:element>\r
1634 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
1635 <xs:complexType>\r
1636 <xs:sequence>\r
1637 <xs:element name="Variable">\r
1638 <xs:annotation>\r
1639 <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>\r
1640 </xs:annotation>\r
1641 <xs:complexType>\r
1642 <xs:sequence>\r
1643 <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>\r
1644 <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
1645 <xs:element minOccurs="0" maxOccurs="1" name="ByteOffset" type="HexWordDataType">\r
1646 <xs:annotation>\r
1647 <xs:documentation xml:lang="en">This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts.</xs:documentation>\r
1648 </xs:annotation>\r
1649 </xs:element>\r
1650 <xs:element minOccurs="0" maxOccurs="1" name="BitOffset">\r
1651 <xs:annotation>\r
1652 <xs:documentation xml:lang="en">This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte.</xs:documentation>\r
1653 </xs:annotation>\r
1654 <xs:simpleType>\r
1655 <xs:restriction base="xs:int">\r
1656 <xs:minInclusive value="0"/>\r
1657 <xs:maxInclusive value="8"/>\r
1658 </xs:restriction>\r
1659 </xs:simpleType>\r
1660 </xs:element>\r
1661 <xs:element minOccurs="0" maxOccurs="1" name="OffsetBitSize">\r
1662 <xs:annotation>\r
1663 <xs:documentation xml:lang="en">This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used.</xs:documentation>\r
1664 </xs:annotation>\r
1665 <xs:simpleType>\r
1666 <xs:restriction base="xs:int">\r
1667 <xs:minInclusive value="0"/>\r
1668 <xs:maxInclusive value="7"/>\r
1669 </xs:restriction>\r
1670 </xs:simpleType>\r
1671 </xs:element>\r
1672 </xs:sequence>\r
1673 <xs:attributeGroup ref="VariableAttributes"/>\r
1674 </xs:complexType>\r
1675 </xs:element>\r
1676 </xs:sequence>\r
1677 <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
1678 </xs:complexType>\r
1679 </xs:element>\r
1680 </xs:sequence>\r
1681 </xs:complexType>\r
1682 </xs:element>\r
1683 <xs:element name="Version" type="xs:normalizedString"/>\r
1684</xs:schema>\r