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