]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/XMLSchema/FrameworkDataElements.xsd
59bdcbdebe7b5f11f46dce5c33af2ebcbb1cc3ad
[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="AntTask">
29 <xs:annotation>
30 <xs:documentation xml:lang="en">This is a sub-element of UserDefinedAntTasks</xs:documentation>
31 <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>
32 </xs:annotation>
33 <xs:complexType>
34 <xs:sequence>
35 <xs:element minOccurs="0" maxOccurs="1" name="AntCmdOptions" type="xs:normalizedString"/>
36 <xs:element minOccurs="0" maxOccurs="1" name="Filename" type="PathAndFilename"/>
37 </xs:sequence>
38 <xs:attribute name="Id" type="xs:int" use="required"/>
39 </xs:complexType>
40 </xs:element>
41 <xs:element name="BootModes">
42 <xs:annotation>
43 <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>
44 <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>
45 </xs:annotation>
46 <xs:complexType>
47 <xs:sequence>
48 <xs:element minOccurs="1" maxOccurs="unbounded" name="BootMode">
49 <xs:complexType>
50 <xs:sequence minOccurs="0">
51 <xs:element name="HelpText" type="Paragraph"/>
52 </xs:sequence>
53 <xs:attributeGroup ref="BootModeAttributes"/>
54 </xs:complexType>
55 </xs:element>
56 </xs:sequence>
57 </xs:complexType>
58 </xs:element>
59 <xs:element name="BuildOptions">
60 <xs:annotation>
61 <xs:documentation xml:lang="en">BuildOptions is valid for FPD files.</xs:documentation>
62 </xs:annotation>
63 <xs:complexType>
64 <xs:sequence>
65 <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>
66 <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>
67 <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>
68 <!-- The following sections are legacy and will be removed -->
69 <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory">
70 <xs:complexType>
71 <xs:simpleContent>
72 <xs:extension base="xs:anyURI">
73 <xs:attribute default="UNIFIED" name="IntermediateDirectories" use="optional">
74 <xs:simpleType>
75 <xs:restriction base="UCNameType">
76 <xs:enumeration value="MODULE"/>
77 <xs:enumeration value="UNIFIED"/>
78 </xs:restriction>
79 </xs:simpleType>
80 </xs:attribute>
81 </xs:extension>
82 </xs:simpleContent>
83 </xs:complexType>
84 </xs:element>
85 <xs:element minOccurs="0" maxOccurs="unbounded" name="Ffs">
86 <xs:complexType>
87 <xs:sequence>
88 <xs:element minOccurs="0" maxOccurs="unbounded" name="Attribute">
89 <xs:complexType>
90 <xs:attribute name="Name" type="C_NameType"/>
91 <xs:attribute name="Value" type="C_NameType"/>
92 </xs:complexType>
93 </xs:element>
94 <xs:element minOccurs="0" maxOccurs="1" name="Sections">
95 <xs:complexType>
96 <xs:sequence minOccurs="1">
97 <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
98 <xs:complexType>
99 <xs:sequence>
100 <xs:element ref=" Filenames " minOccurs="0"/>
101 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
102 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
103 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
104 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
105 </xs:sequence>
106 <xs:attributeGroup ref=" SectionsAttributes "/>
107 </xs:complexType>
108 </xs:element>
109 <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">
110 <xs:complexType>
111 <xs:sequence minOccurs="1" maxOccurs="unbounded">
112 <xs:element name="Section">
113 <xs:complexType>
114 <xs:sequence>
115 <xs:element ref=" Filenames " minOccurs="0"/>
116 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
117 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
118 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
119 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
120 </xs:sequence>
121 <xs:attributeGroup ref="SectionsAttributes"/>
122 </xs:complexType>
123 </xs:element>
124 </xs:sequence>
125 <xs:attributeGroup ref=" SectionsAttributes "/>
126 </xs:complexType>
127 </xs:element>
128 </xs:sequence>
129 <xs:attributeGroup ref=" SectionsAttributes "/>
130 </xs:complexType>
131 </xs:element>
132 </xs:sequence>
133 <xs:attribute name="FfsKey" type="KeywordType" use="optional"/>
134 </xs:complexType>
135 </xs:element>
136 <xs:element minOccurs="0" maxOccurs="1" name="Sections">
137 <xs:complexType>
138 <xs:sequence minOccurs="1">
139 <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
140 <xs:complexType>
141 <xs:sequence>
142 <xs:element ref=" Filenames " minOccurs="0"/>
143 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
144 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
145 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
146 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
147 </xs:sequence>
148 <xs:attributeGroup ref=" SectionsAttributes "/>
149 </xs:complexType>
150 </xs:element>
151 <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">
152 <xs:complexType>
153 <xs:sequence minOccurs="1" maxOccurs="unbounded">
154 <xs:element name="Section">
155 <xs:complexType>
156 <xs:sequence>
157 <xs:element ref=" Filenames " minOccurs="0"/>
158 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
159 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
160 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
161 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
162 </xs:sequence>
163 <xs:attributeGroup ref=" SectionsAttributes "/>
164 </xs:complexType>
165 </xs:element>
166 </xs:sequence>
167 <xs:attributeGroup ref=" SectionsAttributes "/>
168 </xs:complexType>
169 </xs:element>
170 </xs:sequence>
171 <xs:attributeGroup ref=" SectionsAttributes "/>
172 </xs:complexType>
173 </xs:element>
174 <!-- Remove to Here -->
175 </xs:sequence>
176 </xs:complexType>
177 </xs:element>
178 <xs:element name="Copyright" type="Paragraph"/>
179 <xs:element name="DataHubs">
180 <xs:annotation>
181 <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>
182 </xs:annotation>
183 <xs:complexType>
184 <xs:sequence>
185 <xs:element minOccurs="1" maxOccurs="unbounded" name="DataHubRecord">
186 <xs:complexType>
187 <xs:sequence>
188 <xs:element minOccurs="1" maxOccurs="1" name="DataHubCName" type="C_NameType"/>
189 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
190 </xs:sequence>
191 <xs:attributeGroup ref="DataHubAttributes"/>
192 </xs:complexType>
193 </xs:element>
194 </xs:sequence>
195 </xs:complexType>
196 </xs:element>
197 <xs:element name="DefaultValue">
198 <xs:annotation>
199 <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>
200 </xs:annotation>
201 <xs:complexType>
202 <xs:simpleContent>
203 <xs:extension base="xs:normalizedString"/>
204 </xs:simpleContent>
205 </xs:complexType>
206 </xs:element>
207 <xs:element name="Description" type="Paragraph">
208 <xs:annotation>
209 <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>
210 </xs:annotation>
211 </xs:element>
212 <xs:element name="DynamicPcdBuildDefinitions">
213 <xs:annotation>
214 <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>
215 <xs:documentation xml:lang="en">FPD uses this PCD information for Dynamic PCDs Only</xs:documentation>
216 </xs:annotation>
217 <xs:complexType>
218 <xs:sequence>
219 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdBuildData">
220 <xs:complexType>
221 <xs:sequence>
222 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
223 <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>
224 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>
225 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
226 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>
227 <xs:element minOccurs="1" maxOccurs="unbounded" name="SkuInfo">
228 <xs:complexType>
229 <xs:sequence>
230 <xs:element minOccurs="1" maxOccurs="1" name="SkuId" type="xs:nonNegativeInteger"/>
231 <xs:choice>
232 <xs:group minOccurs="0" maxOccurs="1" ref="HiiEnable"/>
233 <xs:group minOccurs="0" maxOccurs="1" ref="VpdEnable"/>
234 <xs:group minOccurs="0" maxOccurs="1" ref="DefaultGroup"/>
235 </xs:choice>
236 </xs:sequence>
237 </xs:complexType>
238 </xs:element>
239 </xs:sequence>
240 <xs:attributeGroup ref="DynamicBuildPcdAttributes"/>
241 </xs:complexType>
242 </xs:element>
243 </xs:sequence>
244 </xs:complexType>
245 </xs:element>
246 <xs:element name="Events">
247 <xs:annotation>
248 <xs:documentation xml:lang="en">This is a list of MSA Events</xs:documentation>
249 </xs:annotation>
250 <xs:complexType>
251 <xs:sequence>
252 <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">
253 <xs:complexType>
254 <xs:sequence>
255 <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">
256 <xs:complexType>
257 <xs:sequence>
258 <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>
259 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
260 </xs:sequence>
261 <xs:attributeGroup ref="EventAttributes"/>
262 </xs:complexType>
263 </xs:element>
264 </xs:sequence>
265 </xs:complexType>
266 </xs:element>
267 <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">
268 <xs:annotation>
269 <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>
270 </xs:annotation>
271 <xs:complexType>
272 <xs:sequence>
273 <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">
274 <xs:complexType>
275 <xs:sequence>
276 <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>
277 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
278 </xs:sequence>
279 <xs:attributeGroup ref="EventAttributes"/>
280 </xs:complexType>
281 </xs:element>
282 </xs:sequence>
283 </xs:complexType>
284 </xs:element>
285 </xs:sequence>
286 </xs:complexType>
287 </xs:element>
288 <xs:element name="Externs">
289 <xs:annotation>
290 <xs:documentation xml:lang="en">This is a child of MSA files.</xs:documentation>
291 </xs:annotation>
292 <xs:complexType>
293 <xs:sequence minOccurs="1">
294 <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>
295 <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>
296 <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">
297 <xs:complexType>
298 <xs:choice minOccurs="1">
299 <xs:sequence>
300 <xs:annotation>
301 <xs:documentation xml:lang="en">Driver Module</xs:documentation>
302 </xs:annotation>
303 <xs:element minOccurs="0" maxOccurs="1" name="ModuleEntryPoint" type="C_NameType"/>
304 <xs:element minOccurs="0" maxOccurs="1" name="ModuleUnloadImage" type="C_NameType"/>
305 </xs:sequence>
306 <xs:sequence>
307 <xs:annotation>
308 <xs:documentation xml:lang="en">Library Module</xs:documentation>
309 </xs:annotation>
310 <xs:element minOccurs="0" maxOccurs="1" name="Constructor" type="C_NameType"/>
311 <xs:element minOccurs="0" maxOccurs="1" name="Destructor" type="C_NameType"/>
312 </xs:sequence>
313 <xs:sequence>
314 <xs:annotation>
315 <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>
316 <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>
317 </xs:annotation>
318 <xs:element minOccurs="0" maxOccurs="1" name="DriverBinding" type="C_NameType"/>
319 <xs:element minOccurs="0" maxOccurs="1" name="ComponentName" type="C_NameType"/>
320 <xs:element minOccurs="0" maxOccurs="1" name="DriverConfig" type="C_NameType"/>
321 <xs:element minOccurs="0" maxOccurs="1" name="DriverDiag" type="C_NameType"/>
322 </xs:sequence>
323 <xs:sequence>
324 <xs:annotation>
325 <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>
326 </xs:annotation>
327 <xs:element minOccurs="0" maxOccurs="1" name="SetVirtualAddressMapCallBack" type="C_NameType"/>
328 <xs:element minOccurs="0" maxOccurs="1" name="ExitBootServicesCallBack" type="C_NameType"/>
329 </xs:sequence>
330 </xs:choice>
331 <xs:attributeGroup ref="ExternAttributes"/>
332 </xs:complexType>
333 </xs:element>
334 </xs:sequence>
335 </xs:complexType>
336 </xs:element>
337 <xs:element name="Filename">
338 <xs:annotation>
339 <xs:documentation xml:lang="en">Describe the valid content of a filename This should extend PathAndFilename - Variable names not allowed here!</xs:documentation>
340 </xs:annotation>
341 <xs:complexType>
342 <xs:simpleContent>
343 <xs:extension base="PathAndFilename">
344 <xs:attributeGroup ref="FilenameAttributes"/>
345 </xs:extension>
346 </xs:simpleContent>
347 </xs:complexType>
348 </xs:element>
349 <xs:element name="Filenames">
350 <xs:annotation>
351 <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>
352 </xs:annotation>
353 <xs:complexType>
354 <xs:sequence minOccurs="1">
355 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>
356 </xs:sequence>
357 </xs:complexType>
358 </xs:element>
359 <xs:element name="GuidDeclarations">
360 <xs:annotation>
361 <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>
362 </xs:annotation>
363 <xs:complexType>
364 <xs:sequence>
365 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
366 <xs:complexType>
367 <xs:sequence>
368 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
369 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
370 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
371 </xs:sequence>
372 <xs:attributeGroup ref="GuidDeclarationAttributes"/>
373 </xs:complexType>
374 </xs:element>
375 </xs:sequence>
376 </xs:complexType>
377 </xs:element>
378 <xs:element name="Guids">
379 <xs:complexType>
380 <xs:sequence>
381 <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCNames">
382 <xs:annotation>
383 <xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>
384 </xs:annotation>
385 <xs:complexType>
386 <xs:sequence>
387 <xs:element minOccurs="1" maxOccurs="1" name="GuidCName" type="C_NameType"/>
388 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
389 </xs:sequence>
390 <xs:attributeGroup ref="GuidAttributes"/>
391 </xs:complexType>
392 </xs:element>
393 </xs:sequence>
394 </xs:complexType>
395 </xs:element>
396 <xs:element name="HiiPackages">
397 <xs:annotation>
398 <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>
399 </xs:annotation>
400 <xs:complexType>
401 <xs:sequence>
402 <xs:element minOccurs="1" maxOccurs="unbounded" name="HiiPackage">
403 <xs:complexType>
404 <xs:sequence>
405 <xs:element minOccurs="1" maxOccurs="1" name="HiiCName" type="C_NameType"/>
406 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
407 </xs:sequence>
408 <xs:attributeGroup ref="HiiPackageAttributes"/>
409 </xs:complexType>
410 </xs:element>
411 </xs:sequence>
412 </xs:complexType>
413 </xs:element>
414 <xs:element name="Hobs">
415 <xs:complexType>
416 <xs:sequence>
417 <xs:element minOccurs="1" maxOccurs="unbounded" name="HobTypes">
418 <xs:complexType>
419 <xs:sequence>
420 <xs:element minOccurs="1" maxOccurs="1" name="HobType" type="HobTypes"/>
421 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
422 </xs:sequence>
423 <xs:attributeGroup ref="HobAttributes"/>
424 </xs:complexType>
425 </xs:element>
426 </xs:sequence>
427 </xs:complexType>
428 </xs:element>
429 <xs:element name="IncludeHeader">
430 <xs:complexType>
431 <xs:simpleContent>
432 <xs:extension base="PathAndFilename">
433 <xs:attributeGroup ref="IncludeHeaderAttributes"/>
434 </xs:extension>
435 </xs:simpleContent>
436 </xs:complexType>
437 </xs:element>
438 <xs:element name="IndustryStdIncludes">
439 <xs:complexType>
440 <xs:sequence>
441 <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>
442 </xs:sequence>
443 </xs:complexType>
444 </xs:element>
445 <xs:element name="IndustryStdHeader">
446 <xs:complexType>
447 <xs:sequence>
448 <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>
449 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
450 </xs:sequence>
451 <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>
452 </xs:complexType>
453 </xs:element>
454 <xs:element name="Libraries">
455 <xs:annotation>
456 <xs:documentation xml:lang="en">Different (Module) Instances of Libraries used ONLY in FPD Files.</xs:documentation>
457 </xs:annotation>
458 <xs:complexType>
459 <xs:sequence>
460 <xs:element minOccurs="1" maxOccurs="unbounded" name="Instance">
461 <xs:complexType>
462 <xs:attributeGroup ref="LibraryAttributes"/>
463 </xs:complexType>
464 </xs:element>
465 </xs:sequence>
466 </xs:complexType>
467 </xs:element>
468 <xs:element name="LibraryClass">
469 <xs:annotation>
470 <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>
471 </xs:annotation>
472 <xs:complexType>
473 <xs:sequence>
474 <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="KeywordType"/>
475 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
476 </xs:sequence>
477 <xs:attributeGroup ref="LibraryClassAttributes"/>
478 </xs:complexType>
479 </xs:element>
480 <!-- LAH This is SPD LibraryClassDeclarations FINAL version -->
481 <xs:element name="LibraryClassDeclarations">
482 <xs:complexType>
483 <xs:sequence>
484 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
485 <xs:complexType>
486 <xs:sequence>
487 <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>
488 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
489 </xs:sequence>
490 <xs:attributeGroup ref="LibraryClassDeclarationAttributes"/>
491 </xs:complexType>
492 </xs:element>
493 </xs:sequence>
494 </xs:complexType>
495 </xs:element>
496 <xs:element name="LibraryClassDefinitions">
497 <xs:annotation>
498 <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>
499 </xs:annotation>
500 <xs:complexType>
501 <xs:sequence>
502 <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClass"/>
503 </xs:sequence>
504 </xs:complexType>
505 </xs:element>
506 <xs:element name="License">
507 <xs:complexType>
508 <xs:simpleContent>
509 <xs:extension base="Paragraph">
510 <xs:attribute name="URL" type="xs:anyURI" use="optional"/>
511 </xs:extension>
512 </xs:simpleContent>
513 </xs:complexType>
514 </xs:element>
515 <xs:element name="ModuleBuildOptions">
516 <xs:complexType>
517 <xs:sequence>
518 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##local"/>
519 </xs:sequence>
520 </xs:complexType>
521 </xs:element>
522 <xs:element name="ModuleSaBuildOptions">
523 <xs:complexType>
524 <xs:sequence>
525 <xs:element minOccurs="0" maxOccurs="1" name="FvBinding" type="KeywordType"/>
526 <!-- The FfsFileNameGuid allows the Platform Integrator to specify a GUID for the FFS File Name GUID -->
527 <xs:element minOccurs="0" maxOccurs="1" name="FfsFileNameGuid" type="GuidType"/>
528 <!-- If binding is specified, you MUST specify the FfsFormatKey -->
529 <xs:element minOccurs="0" maxOccurs="1" name="FfsFormatKey" type="KeywordType"/>
530 <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>
531 </xs:sequence>
532 </xs:complexType>
533 </xs:element>
534 <xs:element name="ModuleDefinitions">
535 <xs:complexType>
536 <xs:sequence>
537 <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>
538 <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>
539 <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>
540 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
541 <xs:complexType>
542 <xs:sequence>
543 <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">
544 <xs:complexType>
545 <xs:sequence>
546 <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>
547 <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>
548 <xs:element minOccurs="1" maxOccurs="1" name="ModuleGuid" type="GuidType"/>
549 <xs:element minOccurs="1" maxOccurs="1" name="ModuleVersion" type="VersionDataType"/>
550 </xs:sequence>
551 </xs:complexType>
552 </xs:element>
553 </xs:sequence>
554 </xs:complexType>
555 </xs:element>
556 </xs:sequence>
557 </xs:complexType>
558 </xs:element>
559 <xs:element name="ModuleType" type="ModuleTypeDef">
560 <xs:annotation>
561 <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>
562 </xs:annotation>
563 </xs:element>
564 <!-- Use in Final -->
565 <xs:element name="MsaFiles">
566 <xs:annotation>
567 <xs:documentation xml:lang="en">MsaFiles is a child of Surface Area Package Description (SPD) files</xs:documentation>
568 </xs:annotation>
569 <xs:complexType>
570 <xs:sequence>
571 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>
572 </xs:sequence>
573 </xs:complexType>
574 </xs:element>
575 <xs:element name="Options">
576 <xs:complexType>
577 <xs:sequence>
578 <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>
579 </xs:sequence>
580 </xs:complexType>
581 </xs:element>
582 <xs:element name="Option">
583 <!-- This element is used to store flags from the Tools -->
584 <xs:complexType>
585 <xs:simpleContent>
586 <xs:extension base="xs:normalizedString">
587 <xs:attributeGroup ref="OptionAttributes"/>
588 </xs:extension>
589 </xs:simpleContent>
590 </xs:complexType>
591 </xs:element>
592 <xs:element name="PackageDefinitions">
593 <xs:complexType>
594 <xs:sequence>
595 <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>
596 <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>
597 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
598 <xs:complexType>
599 <xs:sequence>
600 <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">
601 <xs:complexType>
602 <xs:sequence>
603 <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>
604 <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>
605 </xs:sequence>
606 </xs:complexType>
607 </xs:element>
608 </xs:sequence>
609 </xs:complexType>
610 </xs:element>
611 </xs:sequence>
612 </xs:complexType>
613 </xs:element>
614 <xs:element name="PackageDependencies">
615 <xs:annotation>
616 <xs:documentation xml:lang="en">This tag is used in the Module Surface Area Description File (MSA) to track package dependencies for a module.</xs:documentation>
617 <xs:documentation xml:lang="en">Attributes to PackageName include Required: Usage PackageGuid PackageVesion, Optional: FeatureFlag</xs:documentation>
618 </xs:annotation>
619 <xs:complexType>
620 <xs:sequence>
621 <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
622 <xs:complexType>
623 <xs:attributeGroup ref="PackageAttributes"/>
624 </xs:complexType>
625 </xs:element>
626 </xs:sequence>
627 </xs:complexType>
628 </xs:element>
629 <xs:element name="PackageHeaders">
630 <xs:annotation>
631 <xs:documentation xml:lang="en">PackageHeaders is a child of PackageSurfaceArea (SPD) </xs:documentation>
632 </xs:annotation>
633 <xs:complexType>
634 <xs:sequence>
635 <xs:element minOccurs="1" maxOccurs="unbounded" name="IncludePkgHeader">
636 <xs:complexType>
637 <xs:simpleContent>
638 <xs:extension base="PathAndFilename">
639 <xs:attributeGroup ref="PackageHeaderAttributes"/>
640 </xs:extension>
641 </xs:simpleContent>
642 </xs:complexType>
643 </xs:element>
644 </xs:sequence>
645 </xs:complexType>
646 </xs:element>
647 <xs:element name="PackageList">
648 <!-- Valid for DB usage only! -->
649 <xs:annotation>
650 <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages (SPD files) installed in a workspace. (Database)</xs:documentation>
651 </xs:annotation>
652 <xs:complexType>
653 <xs:sequence>
654 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>
655 </xs:sequence>
656 </xs:complexType>
657 </xs:element>
658 <!-- PcdBuildDefinition is a child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only! -->
659 <xs:element name="PcdBuildDefinition">
660 <xs:annotation>
661 <xs:documentation xml:lang="en">Child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only!</xs:documentation>
662 </xs:annotation>
663 <xs:complexType>
664 <xs:sequence>
665 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdData">
666 <xs:complexType>
667 <xs:sequence>
668 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
669 <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>
670 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>
671 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
672 <!-- MaxDatumSize is only required if the DatumType is VOID* -->
673 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>
674 <xs:element minOccurs="0" maxOccurs="1" name="Value" type="DefaultValueType"/>
675 </xs:sequence>
676 <xs:attributeGroup ref="PcdBuildDefinitionAttributes"/>
677 </xs:complexType>
678 </xs:element>
679 </xs:sequence>
680 </xs:complexType>
681 </xs:element>
682 <xs:group name="DefaultGroup">
683 <xs:sequence>
684 <xs:element minOccurs="1" maxOccurs="1" name="Value" type="DefaultValueType"/>
685 </xs:sequence>
686 </xs:group>
687 <xs:group name="HiiEnable">
688 <xs:annotation>
689 <xs:documentation xml:lang="en">If HiiEnable group is specified, then HiiEnable is default true</xs:documentation>
690 </xs:annotation>
691 <xs:sequence>
692 <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>
693 <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="C_NameType"/>
694 <xs:element minOccurs="1" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>
695 <xs:element minOccurs="1" maxOccurs="1" name="HiiDefaultValue" type="DefaultValueType"/>
696 </xs:sequence>
697 </xs:group>
698 <xs:group name="VpdEnable">
699 <xs:annotation>
700 <xs:documentation xml:lang="en">If VpdEnable group is specified, then VpdEnable is default true</xs:documentation>
701 </xs:annotation>
702 <xs:sequence>
703 <xs:element minOccurs="1" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>
704 </xs:sequence>
705 </xs:group>
706 <xs:element name="PcdCoded">
707 <xs:annotation>
708 <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>
709 </xs:annotation>
710 <xs:complexType>
711 <xs:sequence>
712 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
713 <xs:complexType>
714 <xs:sequence>
715 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
716 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>
717 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>
718 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
719 </xs:sequence>
720 <!-- 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. -->
721 <xs:attributeGroup ref="PcdCodedAttributes"/>
722 </xs:complexType>
723 </xs:element>
724 </xs:sequence>
725 </xs:complexType>
726 </xs:element>
727 <!-- LAH This is PcdDeclarations FINAL version -->
728 <xs:element name="PcdDeclarations">
729 <xs:annotation>
730 <xs:documentation xml:lang="en">PcdDeclaratins is a child of Package Surface Area Description (SPD)</xs:documentation>
731 </xs:annotation>
732 <xs:complexType>
733 <xs:sequence minOccurs="1">
734 <xs:element maxOccurs="unbounded" name="PcdEntry">
735 <xs:complexType>
736 <xs:sequence>
737 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
738 <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>
739 <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>
740 <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
741 <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>
742 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>
743 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
744 </xs:sequence>
745 <xs:attributeGroup ref="PcdDeclarationAttributes"/>
746 </xs:complexType>
747 </xs:element>
748 </xs:sequence>
749 </xs:complexType>
750 </xs:element>
751 <xs:element name="FarList">
752 <!-- Valid for DB usage only! -->
753 <xs:annotation>
754 <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>
755 </xs:annotation>
756 <xs:complexType>
757 <xs:sequence>
758 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>
759 </xs:sequence>
760 </xs:complexType>
761 </xs:element>
762 <xs:element name="FfsFormatDeclarations">
763 <xs:complexType>
764 <xs:sequence>
765 <xs:element minOccurs="1" maxOccurs="unbounded" name="FfsFormatDeclaration">
766 <!-- Required Attributes are the FfsFormatKeyword and SupModuleList -->
767 <xs:complexType>
768 <xs:sequence>
769 <xs:element minOccurs="1" maxOccurs="unbounded" ref="ProcessStep"/>
770 </xs:sequence>
771 <xs:attributeGroup ref="FfsAttributes"/>
772 </xs:complexType>
773 </xs:element>
774 </xs:sequence>
775 </xs:complexType>
776 </xs:element>
777 <xs:element name="PpiDeclarations">
778 <xs:annotation>
779 <xs:documentation xml:lang="en">PpiDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>
780 </xs:annotation>
781 <xs:complexType>
782 <xs:sequence>
783 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
784 <xs:complexType>
785 <xs:sequence>
786 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
787 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
788 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
789 </xs:sequence>
790 <xs:attributeGroup ref="PpiDeclarationAttributes"/>
791 </xs:complexType>
792 </xs:element>
793 </xs:sequence>
794 </xs:complexType>
795 </xs:element>
796 <xs:element name="PPIs">
797 <xs:annotation>
798 <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>
799 </xs:annotation>
800 <xs:complexType>
801 <xs:sequence minOccurs="1">
802 <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">
803 <xs:complexType>
804 <xs:sequence>
805 <xs:element minOccurs="1" maxOccurs="1" name="PpiCName" type="C_NameType"/>
806 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
807 </xs:sequence>
808 <xs:attributeGroup ref="PpiAttributes"/>
809 </xs:complexType>
810 </xs:element>
811 <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">
812 <xs:complexType>
813 <xs:sequence>
814 <xs:element minOccurs="1" maxOccurs="1" name="PpiNotifyCName" type="C_NameType"/>
815 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
816 </xs:sequence>
817 <xs:attributeGroup ref="PpiNotifyAttributes"/>
818 </xs:complexType>
819 </xs:element>
820 </xs:sequence>
821 </xs:complexType>
822 </xs:element>
823 <xs:element name="ProtocolDeclarations">
824 <xs:annotation>
825 <xs:documentation xml:lang="en">ProtocolDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>
826 </xs:annotation>
827 <xs:complexType>
828 <xs:sequence>
829 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
830 <xs:complexType>
831 <xs:sequence>
832 <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>
833 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>
834 <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>
835 </xs:sequence>
836 <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>
837 </xs:complexType>
838 </xs:element>
839 </xs:sequence>
840 </xs:complexType>
841 </xs:element>
842 <xs:element name="Protocols">
843 <xs:annotation>
844 <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>
845 </xs:annotation>
846 <xs:complexType>
847 <xs:sequence>
848 <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">
849 <xs:complexType>
850 <xs:sequence>
851 <xs:element minOccurs="1" maxOccurs="1" name="ProtocolCName" type="C_NameType"/>
852 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
853 </xs:sequence>
854 <xs:attributeGroup ref="ProtocolAttributes"/>
855 </xs:complexType>
856 </xs:element>
857 <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">
858 <xs:complexType>
859 <xs:sequence>
860 <xs:element minOccurs="1" maxOccurs="1" name="ProtocolNotifyCName" type="C_NameType"/>
861 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
862 </xs:sequence>
863 <xs:attributeGroup ref="ProtocolNotifyAttributes"/>
864 </xs:complexType>
865 </xs:element>
866 </xs:sequence>
867 </xs:complexType>
868 </xs:element>
869 <xs:element name="ProcessStep">
870 <xs:complexType>
871 <xs:sequence>
872 <xs:element minOccurs="1" maxOccurs="1" name="ToolName" type="xs:string"/>
873 <xs:element minOccurs="0" maxOccurs="1" name="ToolArgs" type="xs:string"/>
874 <!-- Input patterns to be processed by the tool above -->
875 <xs:element minOccurs="0" maxOccurs="1" name="InputPattern" type="xs:string"/>
876 <!-- A pattern to match for the output -->
877 <xs:element minOccurs="1" maxOccurs="1" name="OutputPattern" type="xs:string"/>
878 </xs:sequence>
879 <xs:attributeGroup ref="ProcessStepAttributes"/>
880 </xs:complexType>
881 </xs:element>
882 <xs:element name="SourceFiles">
883 <xs:annotation>
884 <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>
885 </xs:annotation>
886 <xs:complexType>
887 <xs:sequence>
888 <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>
889 </xs:sequence>
890 </xs:complexType>
891 </xs:element>
892 <xs:element name="SkuInfo">
893 <xs:complexType>
894 <xs:sequence>
895 <xs:element minOccurs="1" maxOccurs="unbounded" name="UiSkuName">
896 <xs:complexType>
897 <xs:simpleContent>
898 <xs:extension base="UiNameType">
899 <xs:attribute name="SkuID" type="xs:nonNegativeInteger" use="required"/>
900 </xs:extension>
901 </xs:simpleContent>
902 </xs:complexType>
903 </xs:element>
904 </xs:sequence>
905 </xs:complexType>
906 </xs:element>
907 <xs:element name="SystemTables">
908 <xs:annotation>
909 <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>
910 </xs:annotation>
911 <xs:complexType>
912 <xs:sequence>
913 <xs:element minOccurs="1" maxOccurs="unbounded" name="SystemTableCNames">
914 <xs:complexType>
915 <xs:sequence>
916 <xs:element minOccurs="1" maxOccurs="1" name="SystemTableCName" type="C_NameType"/>
917 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
918 </xs:sequence>
919 <xs:attributeGroup ref="SystemTableAttributes"/>
920 </xs:complexType>
921 </xs:element>
922 </xs:sequence>
923 </xs:complexType>
924 </xs:element>
925 <xs:element name="UserDefinedAntTasks">
926 <xs:annotation>
927 <xs:documentation xml:lang="en">This is a sub-element of BuildOptions</xs:documentation>
928 <xs:documentation xml:lang="en">Permit Users to define their own custom ANT tasks.</xs:documentation>
929 </xs:annotation>
930 <xs:complexType>
931 <xs:sequence>
932 <xs:element minOccurs="1" maxOccurs="unbounded" ref="AntTask"/>
933 </xs:sequence>
934 </xs:complexType>
935 </xs:element>
936 <xs:element name="UserExtensions">
937 <xs:complexType>
938 <xs:sequence>
939 <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##local"/>
940 </xs:sequence>
941 <xs:attribute name="UserID" type="xs:NCName" use="required"/>
942 <xs:attribute name="Identifier" type="xs:nonNegativeInteger" use="required"/>
943 </xs:complexType>
944 </xs:element>
945 <xs:element name="Variables">
946 <xs:annotation>
947 <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>
948 </xs:annotation>
949 <xs:complexType>
950 <xs:sequence>
951 <xs:element minOccurs="1" maxOccurs="unbounded" name="Variable">
952 <xs:annotation>
953 <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>
954 </xs:annotation>
955 <xs:complexType>
956 <xs:sequence>
957 <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>
958 <xs:element minOccurs="1" maxOccurs="1" name="GuidC_Name" type="C_NameType"/>
959 <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>
960 </xs:sequence>
961 <xs:attributeGroup ref="VariableAttributes"/>
962 </xs:complexType>
963 </xs:element>
964 </xs:sequence>
965 </xs:complexType>
966 </xs:element>
967 <xs:element name="Version" type="VersionDataType"/>
968 </xs:schema>