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