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