56608d90472b6547df726ca8ba1d49ab6d5ae3d7
[people/mcb30/edk2.git] / edk2 / BaseTools / Conf / XMLSchema / FrameworkDataElements.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">\r
3   <!--\r
4     Filename: FrameworkDataElements.xsd\r
5     \r
6     Copyright (c) 2007, Intel Corp.\r
7     All rights reserved. This program and the accompanying materials\r
8     are licensed and made available under the terms and conditions of the BSD License\r
9     which may be found at http://opensource.org/licenses/bsd-license.php\r
10     \r
11     THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12     WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13     \r
14   -->\r
15   <xs:annotation>\r
16     <xs:documentation xml:lang="en"> This schema defines EFI and Framework Data Elements </xs:documentation>\r
17   </xs:annotation>\r
18   <xs:include schemaLocation="NamingConvention.xsd"/>\r
19   <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
20     <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
21   <xs:element name="Abstract" type="Sentence">\r
22     <xs:annotation>\r
23       <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>\r
24       <xs:documentation xml:lang="en">This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section.</xs:documentation>\r
25     </xs:annotation>\r
26   </xs:element>\r
27   <xs:element name="BootModes">\r
28     <xs:annotation>\r
29       <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>\r
30       <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>\r
31     </xs:annotation>\r
32     <xs:complexType>\r
33       <xs:sequence>\r
34         <xs:element minOccurs="1" maxOccurs="unbounded" name="BootMode">\r
35           <xs:complexType>\r
36             <xs:sequence minOccurs="0">\r
37               <xs:element name="HelpText" type="Paragraph"/>\r
38             </xs:sequence>\r
39             <xs:attributeGroup ref="BootModeAttributes"/>\r
40           </xs:complexType>\r
41         </xs:element>\r
42       </xs:sequence>\r
43     </xs:complexType>\r
44   </xs:element>\r
45    <xs:element name="Copyright" type="Paragraph"/>\r
46   <xs:element name="DataHubs">\r
47     <xs:annotation>\r
48       <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>\r
49     </xs:annotation>\r
50     <xs:complexType>\r
51       <xs:sequence>\r
52         <xs:element minOccurs="1" maxOccurs="unbounded" name="DataHubRecord">\r
53           <xs:complexType>\r
54             <xs:sequence>\r
55               <xs:element minOccurs="1" maxOccurs="1" name="DataHubCName" type="C_NameType"/>\r
56               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
57             </xs:sequence>\r
58             <xs:attributeGroup ref="DataHubAttributes"/>\r
59           </xs:complexType>\r
60         </xs:element>\r
61       </xs:sequence>\r
62     </xs:complexType>\r
63   </xs:element>\r
64   <xs:element name="DefaultValue">\r
65     <xs:annotation>\r
66       <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>\r
67     </xs:annotation>\r
68     <xs:complexType>\r
69       <xs:simpleContent>\r
70         <xs:extension base="xs:normalizedString"/>\r
71       </xs:simpleContent>\r
72     </xs:complexType>\r
73   </xs:element>\r
74   <xs:element name="Description" type="Paragraph">\r
75     <xs:annotation>\r
76       <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>\r
77     </xs:annotation>\r
78   </xs:element>\r
79   <xs:element name="BinaryFiles">\r
80     <xs:annotation>\r
81       <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
82     </xs:annotation>\r
83     <xs:complexType>\r
84       <xs:sequence>\r
85         <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
86         <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
87           <xs:complexType>\r
88             <xs:simpleContent>\r
89               <xs:extension base="PathAndFilename"> \r
90                 <xs:attributeGroup ref="BinaryFileAttributes"/>\r
91               </xs:extension>\r
92             </xs:simpleContent>\r
93           </xs:complexType>\r
94         </xs:element>\r
95       </xs:sequence>\r
96     </xs:complexType>\r
97   </xs:element>\r
98    <xs:element name="Events">\r
99     <xs:annotation>\r
100       <xs:documentation xml:lang="en">This is a list of MSA Events</xs:documentation>\r
101     </xs:annotation>\r
102     <xs:complexType>\r
103       <xs:sequence>\r
104         <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">\r
105           <xs:complexType>\r
106             <xs:sequence>\r
107               <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">\r
108                 <xs:complexType>\r
109                   <xs:sequence>\r
110                     <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>\r
111                     <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
112                   </xs:sequence>\r
113                   <xs:attributeGroup ref="EventAttributes"/>\r
114                 </xs:complexType>\r
115               </xs:element>\r
116             </xs:sequence>\r
117           </xs:complexType>\r
118         </xs:element>\r
119         <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">\r
120           <xs:annotation>\r
121             <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>\r
122           </xs:annotation>\r
123           <xs:complexType>\r
124             <xs:sequence>\r
125               <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">\r
126                 <xs:complexType>\r
127                   <xs:sequence>\r
128                     <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>\r
129                     <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
130                   </xs:sequence>\r
131                   <xs:attributeGroup ref="EventAttributes"/>\r
132                 </xs:complexType>\r
133               </xs:element>\r
134             </xs:sequence>\r
135           </xs:complexType>\r
136         </xs:element>\r
137       </xs:sequence>\r
138     </xs:complexType>\r
139   </xs:element>\r
140   <xs:element name="Externs">\r
141     <xs:annotation>\r
142       <xs:documentation xml:lang="en">This is a child of MSA files.</xs:documentation>\r
143     </xs:annotation>\r
144     <xs:complexType>\r
145       <xs:sequence minOccurs="1">\r
146         <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
147         <xs:element minOccurs="0" maxOccurs="1" name="TianoR8FlashMap_h" type="xs:boolean" default="false"/>\r
148         <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\r
149         <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
150           <xs:complexType>\r
151             <xs:choice minOccurs="1" maxOccurs="1">\r
152               <xs:sequence minOccurs="0" maxOccurs="1">\r
153                 <xs:annotation>\r
154                   <xs:documentation xml:lang="en">Driver Module</xs:documentation>\r
155                 </xs:annotation>\r
156                 <xs:element minOccurs="0" maxOccurs="1" name="ModuleEntryPoint" type="C_NameType"/>\r
157                 <xs:element minOccurs="0" maxOccurs="1" name="ModuleUnloadImage" type="C_NameType"/>\r
158               </xs:sequence>\r
159               <xs:sequence minOccurs="0" maxOccurs="1">\r
160                 <xs:annotation>\r
161                   <xs:documentation xml:lang="en">Library Module</xs:documentation>\r
162                 </xs:annotation>\r
163                 <xs:element minOccurs="0" maxOccurs="1" name="Constructor" type="C_NameType"/>\r
164                 <xs:element minOccurs="0" maxOccurs="1" name="Destructor" type="C_NameType"/>\r
165               </xs:sequence>\r
166               <xs:sequence minOccurs="0" maxOccurs="1">\r
167                 <xs:annotation>\r
168                   <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>\r
169                   <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>\r
170                 </xs:annotation>\r
171                 <xs:element minOccurs="1" maxOccurs="1" name="DriverBinding" type="C_NameType"/>\r
172                 <xs:element minOccurs="0" maxOccurs="1" name="ComponentName" type="C_NameType"/>\r
173                 <xs:element minOccurs="0" maxOccurs="1" name="DriverConfig" type="C_NameType"/>\r
174                 <xs:element minOccurs="0" maxOccurs="1" name="DriverDiag" type="C_NameType"/>\r
175               </xs:sequence>\r
176               <xs:sequence minOccurs="0" maxOccurs="1">\r
177                 <xs:annotation>\r
178                   <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>\r
179                 </xs:annotation>\r
180                 <xs:element minOccurs="0" maxOccurs="1" name="SetVirtualAddressMapCallBack" type="C_NameType"/>\r
181                 <xs:element minOccurs="0" maxOccurs="1" name="ExitBootServicesCallBack" type="C_NameType"/>\r
182               </xs:sequence>\r
183             </xs:choice>\r
184             <xs:attributeGroup ref="ExternAttributes"/>\r
185           </xs:complexType>\r
186         </xs:element>\r
187       </xs:sequence>\r
188     </xs:complexType>\r
189   </xs:element>\r
190   <xs:element name="Filename">\r
191     <xs:annotation>\r
192       <xs:documentation xml:lang="en">Describe the valid content of a filename This should extend PathAndFilename - Variable names not allowed here!</xs:documentation>\r
193     </xs:annotation>\r
194     <xs:complexType>\r
195       <xs:simpleContent>\r
196         <xs:extension base="PathAndFilename">\r
197           <xs:attributeGroup ref="FilenameAttributes"/>\r
198         </xs:extension>\r
199       </xs:simpleContent>\r
200     </xs:complexType>\r
201   </xs:element>\r
202   <xs:element name="Filenames">\r
203     <xs:annotation>\r
204       <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>\r
205     </xs:annotation>\r
206     <xs:complexType>\r
207       <xs:sequence minOccurs="1">\r
208         <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
209       </xs:sequence>\r
210     </xs:complexType>\r
211   </xs:element>\r
212   <xs:element name="GuidDeclarations">\r
213     <xs:annotation>\r
214       <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
215     </xs:annotation>\r
216     <xs:complexType>\r
217       <xs:sequence>\r
218         <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
219           <xs:complexType>\r
220             <xs:sequence>\r
221               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
222               <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
223               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
224             </xs:sequence>\r
225             <xs:attributeGroup ref="GuidDeclarationAttributes"/>\r
226           </xs:complexType>\r
227         </xs:element>\r
228       </xs:sequence>\r
229     </xs:complexType>\r
230   </xs:element>\r
231   <xs:element name="Guids">\r
232     <xs:complexType>\r
233       <xs:sequence>\r
234         <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCNames">\r
235           <xs:annotation>\r
236             <xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>\r
237           </xs:annotation>\r
238           <xs:complexType>\r
239             <xs:sequence>\r
240               <xs:element minOccurs="1" maxOccurs="1" name="GuidCName" type="C_NameType"/>\r
241               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
242             </xs:sequence>\r
243             <xs:attributeGroup ref="GuidAttributes"/>\r
244           </xs:complexType>\r
245         </xs:element>\r
246       </xs:sequence>\r
247     </xs:complexType>\r
248   </xs:element>\r
249   <xs:element name="HiiPackages">\r
250     <xs:annotation>\r
251       <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>\r
252     </xs:annotation>\r
253     <xs:complexType>\r
254       <xs:sequence>\r
255         <xs:element minOccurs="1" maxOccurs="unbounded" name="HiiPackage">\r
256           <xs:complexType>\r
257             <xs:sequence>\r
258               <xs:element minOccurs="1" maxOccurs="1" name="HiiCName" type="C_NameType"/>\r
259               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
260             </xs:sequence>\r
261             <xs:attributeGroup ref="HiiPackageAttributes"/>\r
262           </xs:complexType>\r
263         </xs:element>\r
264       </xs:sequence>\r
265     </xs:complexType>\r
266   </xs:element>\r
267   <xs:element name="Hobs">\r
268     <xs:complexType>\r
269       <xs:sequence>\r
270         <xs:element minOccurs="1" maxOccurs="unbounded" name="HobTypes">\r
271           <xs:complexType>\r
272             <xs:sequence>\r
273               <xs:element minOccurs="1" maxOccurs="1" name="HobType" type="HobTypes"/>\r
274               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
275             </xs:sequence>\r
276             <xs:attributeGroup ref="HobAttributes"/>\r
277           </xs:complexType>\r
278         </xs:element>\r
279       </xs:sequence>\r
280     </xs:complexType>\r
281   </xs:element>\r
282   <xs:element name="IncludeHeader">\r
283     <xs:complexType>\r
284       <xs:simpleContent>\r
285         <xs:extension base="PathAndFilename">\r
286           <xs:attributeGroup ref="IncludeHeaderAttributes"/>\r
287         </xs:extension>\r
288       </xs:simpleContent>\r
289     </xs:complexType>\r
290   </xs:element>\r
291   <xs:element name="IndustryStdIncludes">\r
292     <xs:complexType>\r
293       <xs:sequence>\r
294         <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>\r
295       </xs:sequence>\r
296     </xs:complexType>\r
297   </xs:element>\r
298   <xs:element name="IndustryStdHeader">\r
299     <xs:complexType>\r
300       <xs:sequence>\r
301         <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
302         <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
303       </xs:sequence>\r
304       <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>\r
305     </xs:complexType>\r
306   </xs:element>\r
307   <xs:element name="LibraryClass">\r
308     <xs:annotation>\r
309       <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
310     </xs:annotation>\r
311     <xs:complexType>\r
312       <xs:sequence>\r
313         <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="KeywordType"/>\r
314         <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
315       </xs:sequence>\r
316       <xs:attributeGroup ref="LibraryClassAttributes"/>\r
317     </xs:complexType>\r
318   </xs:element>\r
319   <!-- LAH This is SPD LibraryClassDeclarations FINAL version -->\r
320   <xs:element name="LibraryClassDeclarations">\r
321     <xs:complexType>\r
322       <xs:sequence>\r
323         <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
324           <xs:complexType>\r
325             <xs:sequence>\r
326               <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
327               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
328             </xs:sequence>\r
329             <xs:attributeGroup ref="LibraryClassDeclarationAttributes"/>\r
330           </xs:complexType>\r
331         </xs:element>\r
332       </xs:sequence>\r
333     </xs:complexType>\r
334   </xs:element>\r
335   <xs:element name="LibraryClassDefinitions">\r
336     <xs:annotation>\r
337       <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>\r
338     </xs:annotation>\r
339     <xs:complexType>\r
340       <xs:sequence>\r
341         <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClass"/>\r
342       </xs:sequence>\r
343     </xs:complexType>\r
344   </xs:element>\r
345   <xs:element name="License">\r
346     <xs:complexType>\r
347       <xs:simpleContent>\r
348         <xs:extension base="Paragraph">\r
349           <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
350         </xs:extension>\r
351       </xs:simpleContent>\r
352     </xs:complexType>\r
353   </xs:element>\r
354   <xs:element name="ModuleBuildOptions">\r
355     <xs:complexType>\r
356       <xs:sequence>\r
357         <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
358         <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
359       </xs:sequence>\r
360     </xs:complexType>\r
361   </xs:element>\r
362   <xs:element name="ModuleDefinitions">\r
363     <xs:complexType>\r
364       <xs:sequence>\r
365         <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
366         <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>\r
367         <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>\r
368         <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
369           <xs:complexType>\r
370             <xs:sequence>\r
371               <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
372                 <xs:complexType>\r
373                   <xs:sequence>\r
374                     <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
375                     <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
376                     <xs:element minOccurs="1" maxOccurs="1" name="ModuleGuid" type="GuidType"/>\r
377                     <xs:element minOccurs="1" maxOccurs="1" name="ModuleVersion" type="VersionDataType"/>\r
378                   </xs:sequence>\r
379                   <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
380                   <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
381                   <!-- If the original module was installed from a FAR, track the FAR it came from. -->\r
382                   <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
383                 </xs:complexType>\r
384               </xs:element>\r
385             </xs:sequence>\r
386           </xs:complexType>\r
387         </xs:element>\r
388       </xs:sequence>\r
389     </xs:complexType>\r
390   </xs:element>\r
391   <xs:element name="ModuleType" type="ModuleTypeDef">\r
392     <xs:annotation>\r
393       <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>\r
394     </xs:annotation>\r
395   </xs:element>\r
396   <!-- Use in Final -->\r
397   <xs:element name="MsaFiles">\r
398     <xs:annotation>\r
399       <xs:documentation xml:lang="en">MsaFiles is a child of Surface Area Package Description (SPD) files</xs:documentation>\r
400     </xs:annotation>\r
401     <xs:complexType>\r
402       <xs:sequence>\r
403         <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>\r
404       </xs:sequence>\r
405     </xs:complexType>\r
406   </xs:element>\r
407   <xs:element name="Options">\r
408     <xs:complexType>\r
409       <xs:sequence>\r
410         <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>\r
411       </xs:sequence>\r
412     </xs:complexType>\r
413   </xs:element>\r
414   <xs:element name="NonProcessedFiles">\r
415     <xs:complexType>\r
416       <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
417         <xs:element name="Filename" type="PathAndFilename"/>\r
418       </xs:sequence>\r
419     </xs:complexType>\r
420   </xs:element>\r
421   <xs:element name="Option">\r
422     <!-- This element is used to store flags from the Tools -->\r
423     <xs:complexType>\r
424       <xs:simpleContent>\r
425         <xs:extension base="xs:normalizedString">\r
426           <xs:attributeGroup ref="OptionAttributes"/>\r
427         </xs:extension>\r
428       </xs:simpleContent>\r
429     </xs:complexType>\r
430   </xs:element>\r
431   <xs:element name="PackageDefinitions">\r
432     <xs:complexType>\r
433       <xs:sequence>\r
434         <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>\r
435         <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>\r
436         <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
437           <xs:complexType>\r
438             <xs:sequence>\r
439               <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
440                 <xs:complexType>\r
441                   <xs:sequence>\r
442                     <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
443                     <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
444                   </xs:sequence>\r
445                   <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
446                   <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
447                   <!-- If the original Package was installed from a FAR, track the FAR it came from. -->\r
448                   <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
449                 </xs:complexType>\r
450               </xs:element>\r
451             </xs:sequence>\r
452           </xs:complexType>\r
453         </xs:element>\r
454       </xs:sequence>\r
455     </xs:complexType>\r
456   </xs:element>\r
457   <xs:element name="PackageDependencies">\r
458     <xs:annotation>\r
459       <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>\r
460       <xs:documentation xml:lang="en">Attributes to PackageName include Required: Usage PackageGuid PackageVesion, Optional: FeatureFlag</xs:documentation>\r
461     </xs:annotation>\r
462     <xs:complexType>\r
463       <xs:sequence>\r
464         <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">\r
465           <xs:complexType>\r
466             <xs:attributeGroup ref="PackageAttributes"/>\r
467           </xs:complexType>\r
468         </xs:element>\r
469       </xs:sequence>\r
470     </xs:complexType>\r
471   </xs:element>\r
472   <xs:element name="PackageHeaders">\r
473     <xs:annotation>\r
474       <xs:documentation xml:lang="en">PackageHeaders is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
475     </xs:annotation>\r
476     <xs:complexType>\r
477       <xs:sequence>\r
478         <xs:element minOccurs="1" maxOccurs="unbounded" name="IncludePkgHeader">\r
479           <xs:complexType>\r
480             <xs:simpleContent>\r
481               <xs:extension base="PathAndFilename">\r
482                 <xs:attributeGroup ref="PackageHeaderAttributes"/>\r
483               </xs:extension>\r
484             </xs:simpleContent>\r
485           </xs:complexType>\r
486         </xs:element>\r
487       </xs:sequence>\r
488     </xs:complexType>\r
489   </xs:element>\r
490   <xs:element name="PackageList">\r
491     <!-- Valid for DB usage only! -->\r
492     <xs:annotation>\r
493       <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>\r
494     </xs:annotation>\r
495     <xs:complexType>\r
496       <xs:sequence>\r
497         <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
498           <xs:complexType>\r
499             <xs:simpleContent>\r
500               <xs:extension base="PathAndFilename"> \r
501                 <xs:attributeGroup ref="PackageNameAttributes"/>\r
502               </xs:extension>\r
503             </xs:simpleContent>\r
504           </xs:complexType>\r
505           </xs:element>\r
506       </xs:sequence>\r
507     </xs:complexType>\r
508   </xs:element>\r
509   <xs:element name="PcdCoded">\r
510     <xs:annotation>\r
511       <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
512     </xs:annotation>\r
513     <xs:complexType>\r
514       <xs:sequence>\r
515         <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
516           <xs:complexType>\r
517             <xs:sequence>\r
518               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
519               <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
520               <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
521               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
522             </xs:sequence>\r
523             <!-- 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. -->\r
524             <xs:attributeGroup ref="PcdCodedAttributes"/>\r
525           </xs:complexType>\r
526         </xs:element>\r
527       </xs:sequence>\r
528     </xs:complexType>\r
529   </xs:element>\r
530   <!-- LAH This is PcdDeclarations FINAL version -->\r
531   <xs:element name="PcdDeclarations">\r
532     <xs:annotation>\r
533       <xs:documentation xml:lang="en">PcdDeclaratins is a child of Package Surface Area Description (SPD)</xs:documentation>\r
534     </xs:annotation>\r
535     <xs:complexType>\r
536       <xs:sequence minOccurs="1">\r
537         <xs:element maxOccurs="unbounded" name="PcdEntry">\r
538           <xs:complexType>\r
539             <xs:sequence>\r
540               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
541               <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
542               <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
543               <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
544               <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
545               <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
546               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
547             </xs:sequence>\r
548             <xs:attributeGroup ref="PcdDeclarationAttributes"/>\r
549           </xs:complexType>\r
550         </xs:element>\r
551       </xs:sequence>\r
552     </xs:complexType>\r
553   </xs:element>\r
554   <xs:element name="FarList">\r
555     <!-- Valid for DB usage only! -->\r
556     <xs:annotation>\r
557       <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>\r
558     </xs:annotation>\r
559     <xs:complexType>\r
560       <xs:sequence>\r
561         <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
562       </xs:sequence>\r
563     </xs:complexType>\r
564   </xs:element>\r
565   <xs:element name="PpiDeclarations">\r
566     <xs:annotation>\r
567       <xs:documentation xml:lang="en">PpiDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
568     </xs:annotation>\r
569     <xs:complexType>\r
570       <xs:sequence>\r
571         <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
572           <xs:complexType>\r
573             <xs:sequence>\r
574               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
575               <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
576               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
577             </xs:sequence>\r
578             <xs:attributeGroup ref="PpiDeclarationAttributes"/>\r
579           </xs:complexType>\r
580         </xs:element>\r
581       </xs:sequence>\r
582     </xs:complexType>\r
583   </xs:element>\r
584   <xs:element name="PPIs">\r
585     <xs:annotation>\r
586       <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>\r
587     </xs:annotation>\r
588     <xs:complexType>\r
589       <xs:sequence minOccurs="1">\r
590         <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">\r
591           <xs:complexType>\r
592             <xs:sequence>\r
593               <xs:element minOccurs="1" maxOccurs="1" name="PpiCName" type="C_NameType"/>\r
594               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
595             </xs:sequence>\r
596             <xs:attributeGroup ref="PpiAttributes"/>\r
597           </xs:complexType>\r
598         </xs:element>\r
599         <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">\r
600           <xs:complexType>\r
601             <xs:sequence>\r
602               <xs:element minOccurs="1" maxOccurs="1" name="PpiNotifyCName" type="C_NameType"/>\r
603               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
604             </xs:sequence>\r
605             <xs:attributeGroup ref="PpiNotifyAttributes"/>\r
606           </xs:complexType>\r
607         </xs:element>\r
608       </xs:sequence>\r
609     </xs:complexType>\r
610   </xs:element>\r
611   <xs:element name="ProtocolDeclarations">\r
612     <xs:annotation>\r
613       <xs:documentation xml:lang="en">ProtocolDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
614     </xs:annotation>\r
615     <xs:complexType>\r
616       <xs:sequence>\r
617         <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
618           <xs:complexType>\r
619             <xs:sequence>\r
620               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
621               <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
622               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
623             </xs:sequence>\r
624             <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>\r
625           </xs:complexType>\r
626         </xs:element>\r
627       </xs:sequence>\r
628     </xs:complexType>\r
629   </xs:element>\r
630   <xs:element name="Protocols">\r
631     <xs:annotation>\r
632       <xs:documentation xml:lang="en">If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section</xs:documentation>\r
633     </xs:annotation>\r
634     <xs:complexType>\r
635       <xs:sequence>\r
636         <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">\r
637           <xs:complexType>\r
638             <xs:sequence>\r
639               <xs:element minOccurs="1" maxOccurs="1" name="ProtocolCName" type="C_NameType"/>\r
640               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
641             </xs:sequence>\r
642             <xs:attributeGroup ref="ProtocolAttributes"/>\r
643           </xs:complexType>\r
644         </xs:element>\r
645         <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">\r
646           <xs:complexType>\r
647             <xs:sequence>\r
648               <xs:element minOccurs="1" maxOccurs="1" name="ProtocolNotifyCName" type="C_NameType"/>\r
649               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
650             </xs:sequence>\r
651             <xs:attributeGroup ref="ProtocolNotifyAttributes"/>\r
652           </xs:complexType>\r
653         </xs:element>\r
654       </xs:sequence>\r
655     </xs:complexType>\r
656   </xs:element>\r
657   <xs:element name="SourceFiles">\r
658     <xs:annotation>\r
659       <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
660     </xs:annotation>\r
661     <xs:complexType>\r
662       <xs:sequence>\r
663         <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>\r
664       </xs:sequence>\r
665     </xs:complexType>\r
666   </xs:element>\r
667   <xs:element name="SystemTables">\r
668     <xs:annotation>\r
669       <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>\r
670     </xs:annotation>\r
671     <xs:complexType>\r
672       <xs:sequence>\r
673         <xs:element minOccurs="1" maxOccurs="unbounded" name="SystemTableCNames">\r
674           <xs:complexType>\r
675             <xs:sequence>\r
676               <xs:element minOccurs="1" maxOccurs="1" name="SystemTableCName" type="C_NameType"/>\r
677               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
678             </xs:sequence>\r
679             <xs:attributeGroup ref="SystemTableAttributes"/>\r
680           </xs:complexType>\r
681         </xs:element>\r
682       </xs:sequence>\r
683     </xs:complexType>\r
684   </xs:element>\r
685   <xs:element name="UserExtensions">\r
686     <xs:complexType>\r
687       <xs:sequence>\r
688         <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>\r
689       </xs:sequence>\r
690       <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
691       <xs:attribute name="Identifier" type="xs:string" use="required"/>\r
692     </xs:complexType>\r
693   </xs:element>\r
694   <xs:element name="Variables">\r
695     <xs:annotation>\r
696       <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>\r
697     </xs:annotation>\r
698     <xs:complexType>\r
699       <xs:sequence>\r
700         <xs:element minOccurs="1" maxOccurs="unbounded" name="Variable">\r
701           <xs:annotation>\r
702             <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>\r
703           </xs:annotation>\r
704           <xs:complexType>\r
705             <xs:sequence>\r
706               <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>\r
707               <xs:element minOccurs="1" maxOccurs="1" name="GuidC_Name" type="C_NameType"/>\r
708               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
709             </xs:sequence>\r
710             <xs:attributeGroup ref="VariableAttributes"/>\r
711           </xs:complexType>\r
712         </xs:element>\r
713       </xs:sequence>\r
714     </xs:complexType>\r
715   </xs:element>\r
716   <xs:element name="Version" type="VersionDataType"/>\r
717 </xs:schema>\r