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