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