f0adef7780818054529cf9d12ac07d8a7fc162df
[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="NonProcessedFiles">\r
533     <xs:complexType>\r
534       <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
535         <xs:element name="Filename" type="PathAndFilename"/>\r
536       </xs:sequence>\r
537     </xs:complexType>\r
538   </xs:element>\r
539   <xs:element name="Option">\r
540     <!-- This element is used to store flags from the Tools -->\r
541     <xs:complexType>\r
542       <xs:simpleContent>\r
543         <xs:extension base="xs:normalizedString">\r
544           <xs:attributeGroup ref="OptionAttributes"/>\r
545         </xs:extension>\r
546       </xs:simpleContent>\r
547     </xs:complexType>\r
548   </xs:element>\r
549   <xs:element name="PackageDefinitions">\r
550     <xs:complexType>\r
551       <xs:sequence>\r
552         <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>\r
553         <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>\r
554         <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
555           <xs:complexType>\r
556             <xs:sequence>\r
557               <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
558                 <xs:complexType>\r
559                   <xs:sequence>\r
560                     <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
561                     <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
562                   </xs:sequence>\r
563                   <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
564                   <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
565                   <!-- If the original Package was installed from a FAR, track the FAR it came from. -->\r
566                   <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
567                 </xs:complexType>\r
568               </xs:element>\r
569             </xs:sequence>\r
570           </xs:complexType>\r
571         </xs:element>\r
572       </xs:sequence>\r
573     </xs:complexType>\r
574   </xs:element>\r
575   <xs:element name="PackageDependencies">\r
576     <xs:annotation>\r
577       <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
578       <xs:documentation xml:lang="en">Attributes to PackageName include Required: Usage PackageGuid PackageVesion, Optional: FeatureFlag</xs:documentation>\r
579     </xs:annotation>\r
580     <xs:complexType>\r
581       <xs:sequence>\r
582         <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">\r
583           <xs:complexType>\r
584             <xs:attributeGroup ref="PackageAttributes"/>\r
585           </xs:complexType>\r
586         </xs:element>\r
587       </xs:sequence>\r
588     </xs:complexType>\r
589   </xs:element>\r
590   <xs:element name="PackageHeaders">\r
591     <xs:annotation>\r
592       <xs:documentation xml:lang="en">PackageHeaders is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
593     </xs:annotation>\r
594     <xs:complexType>\r
595       <xs:sequence>\r
596         <xs:element minOccurs="1" maxOccurs="unbounded" name="IncludePkgHeader">\r
597           <xs:complexType>\r
598             <xs:simpleContent>\r
599               <xs:extension base="PathAndFilename">\r
600                 <xs:attributeGroup ref="PackageHeaderAttributes"/>\r
601               </xs:extension>\r
602             </xs:simpleContent>\r
603           </xs:complexType>\r
604         </xs:element>\r
605       </xs:sequence>\r
606     </xs:complexType>\r
607   </xs:element>\r
608   <xs:element name="PackageList">\r
609     <!-- Valid for DB usage only! -->\r
610     <xs:annotation>\r
611       <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
612     </xs:annotation>\r
613     <xs:complexType>\r
614       <xs:sequence>\r
615         <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
616       </xs:sequence>\r
617     </xs:complexType>\r
618   </xs:element>\r
619   <!-- PcdBuildDefinition is a child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only! -->\r
620   <xs:element name="PcdBuildDefinition">\r
621     <xs:annotation>\r
622       <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
623     </xs:annotation>\r
624     <xs:complexType>\r
625       <xs:sequence>\r
626         <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdData">\r
627           <xs:complexType>\r
628             <xs:sequence>\r
629               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
630               <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
631               <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
632               <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
633               <!-- MaxDatumSize is only required if the DatumType is VOID* -->\r
634               <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>\r
635               <xs:element minOccurs="0" maxOccurs="1" name="Value" type="DefaultValueType"/>\r
636             </xs:sequence>\r
637             <xs:attributeGroup ref="PcdBuildDefinitionAttributes"/>\r
638           </xs:complexType>\r
639         </xs:element>\r
640       </xs:sequence>\r
641     </xs:complexType>\r
642   </xs:element>\r
643   <xs:group name="DefaultGroup">\r
644     <xs:sequence>\r
645       <xs:element minOccurs="1" maxOccurs="1" name="Value" type="DefaultValueType"/>\r
646     </xs:sequence>\r
647   </xs:group>\r
648   <xs:group name="HiiEnable">\r
649     <xs:annotation>\r
650       <xs:documentation xml:lang="en">If HiiEnable group is specified, then HiiEnable is default true</xs:documentation>\r
651     </xs:annotation>\r
652     <xs:sequence>\r
653       <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>\r
654       <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="C_NameType"/>\r
655       <xs:element minOccurs="1" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
656       <xs:element minOccurs="1" maxOccurs="1" name="HiiDefaultValue" type="DefaultValueType"/>\r
657     </xs:sequence>\r
658   </xs:group>\r
659   <xs:group name="VpdEnable">\r
660     <xs:annotation>\r
661       <xs:documentation xml:lang="en">If VpdEnable group is specified, then VpdEnable is default true</xs:documentation>\r
662     </xs:annotation>\r
663     <xs:sequence>\r
664       <xs:element minOccurs="1" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>\r
665     </xs:sequence>\r
666   </xs:group>\r
667   <xs:element name="PcdCoded">\r
668     <xs:annotation>\r
669       <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
670     </xs:annotation>\r
671     <xs:complexType>\r
672       <xs:sequence>\r
673         <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
674           <xs:complexType>\r
675             <xs:sequence>\r
676               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
677               <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
678               <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
679               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
680             </xs:sequence>\r
681             <!-- 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
682             <xs:attributeGroup ref="PcdCodedAttributes"/>\r
683           </xs:complexType>\r
684         </xs:element>\r
685       </xs:sequence>\r
686     </xs:complexType>\r
687   </xs:element>\r
688   <!-- LAH This is PcdDeclarations FINAL version -->\r
689   <xs:element name="PcdDeclarations">\r
690     <xs:annotation>\r
691       <xs:documentation xml:lang="en">PcdDeclaratins is a child of Package Surface Area Description (SPD)</xs:documentation>\r
692     </xs:annotation>\r
693     <xs:complexType>\r
694       <xs:sequence minOccurs="1">\r
695         <xs:element maxOccurs="unbounded" name="PcdEntry">\r
696           <xs:complexType>\r
697             <xs:sequence>\r
698               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
699               <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
700               <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
701               <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
702               <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
703               <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
704               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
705             </xs:sequence>\r
706             <xs:attributeGroup ref="PcdDeclarationAttributes"/>\r
707           </xs:complexType>\r
708         </xs:element>\r
709       </xs:sequence>\r
710     </xs:complexType>\r
711   </xs:element>\r
712   <xs:element name="FarList">\r
713     <!-- Valid for DB usage only! -->\r
714     <xs:annotation>\r
715       <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
716     </xs:annotation>\r
717     <xs:complexType>\r
718       <xs:sequence>\r
719         <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
720       </xs:sequence>\r
721     </xs:complexType>\r
722   </xs:element>\r
723   <xs:element name="FfsFormatDeclarations">\r
724     <xs:complexType>\r
725       <xs:sequence>\r
726         <xs:element minOccurs="1" maxOccurs="unbounded" name="FfsFormatDeclaration">\r
727           <!-- Required Attributes are the FfsFormatKeyword and SupModuleList -->\r
728           <xs:complexType>\r
729             <xs:sequence>\r
730               <xs:element minOccurs="1" maxOccurs="unbounded" ref="ProcessStep"/>\r
731             </xs:sequence>\r
732             <xs:attributeGroup ref="FfsAttributes"/>\r
733           </xs:complexType>\r
734         </xs:element>\r
735       </xs:sequence>\r
736     </xs:complexType>\r
737   </xs:element>\r
738   <xs:element name="PpiDeclarations">\r
739     <xs:annotation>\r
740       <xs:documentation xml:lang="en">PpiDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
741     </xs:annotation>\r
742     <xs:complexType>\r
743       <xs:sequence>\r
744         <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
745           <xs:complexType>\r
746             <xs:sequence>\r
747               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
748               <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
749               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
750             </xs:sequence>\r
751             <xs:attributeGroup ref="PpiDeclarationAttributes"/>\r
752           </xs:complexType>\r
753         </xs:element>\r
754       </xs:sequence>\r
755     </xs:complexType>\r
756   </xs:element>\r
757   <xs:element name="PPIs">\r
758     <xs:annotation>\r
759       <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>\r
760     </xs:annotation>\r
761     <xs:complexType>\r
762       <xs:sequence minOccurs="1">\r
763         <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">\r
764           <xs:complexType>\r
765             <xs:sequence>\r
766               <xs:element minOccurs="1" maxOccurs="1" name="PpiCName" type="C_NameType"/>\r
767               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
768             </xs:sequence>\r
769             <xs:attributeGroup ref="PpiAttributes"/>\r
770           </xs:complexType>\r
771         </xs:element>\r
772         <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">\r
773           <xs:complexType>\r
774             <xs:sequence>\r
775               <xs:element minOccurs="1" maxOccurs="1" name="PpiNotifyCName" type="C_NameType"/>\r
776               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
777             </xs:sequence>\r
778             <xs:attributeGroup ref="PpiNotifyAttributes"/>\r
779           </xs:complexType>\r
780         </xs:element>\r
781       </xs:sequence>\r
782     </xs:complexType>\r
783   </xs:element>\r
784   <xs:element name="ProtocolDeclarations">\r
785     <xs:annotation>\r
786       <xs:documentation xml:lang="en">ProtocolDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
787     </xs:annotation>\r
788     <xs:complexType>\r
789       <xs:sequence>\r
790         <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
791           <xs:complexType>\r
792             <xs:sequence>\r
793               <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
794               <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
795               <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
796             </xs:sequence>\r
797             <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>\r
798           </xs:complexType>\r
799         </xs:element>\r
800       </xs:sequence>\r
801     </xs:complexType>\r
802   </xs:element>\r
803   <xs:element name="Protocols">\r
804     <xs:annotation>\r
805       <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
806     </xs:annotation>\r
807     <xs:complexType>\r
808       <xs:sequence>\r
809         <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">\r
810           <xs:complexType>\r
811             <xs:sequence>\r
812               <xs:element minOccurs="1" maxOccurs="1" name="ProtocolCName" type="C_NameType"/>\r
813               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
814             </xs:sequence>\r
815             <xs:attributeGroup ref="ProtocolAttributes"/>\r
816           </xs:complexType>\r
817         </xs:element>\r
818         <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">\r
819           <xs:complexType>\r
820             <xs:sequence>\r
821               <xs:element minOccurs="1" maxOccurs="1" name="ProtocolNotifyCName" type="C_NameType"/>\r
822               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
823             </xs:sequence>\r
824             <xs:attributeGroup ref="ProtocolNotifyAttributes"/>\r
825           </xs:complexType>\r
826         </xs:element>\r
827       </xs:sequence>\r
828     </xs:complexType>\r
829   </xs:element>\r
830   <xs:element name="ProcessStep">\r
831     <xs:complexType>\r
832       <xs:sequence>\r
833         <!-- The following is a macro for Apache ANT -->\r
834         <xs:element minOccurs="0" maxOccurs="1" name="MacroDefFile">\r
835           <xs:complexType>\r
836             <xs:simpleContent>\r
837               <xs:extension base="PathAndFilename">\r
838                 <xs:attribute name="MacroName" type="KeywordType" use="required"/>\r
839               </xs:extension>\r
840             </xs:simpleContent>\r
841           </xs:complexType>\r
842         </xs:element>\r
843         <!-- The following is for System Executables -->\r
844         <xs:element minOccurs="0" maxOccurs="1" name="ToolName" type="xs:NCName"/>\r
845         <xs:element minOccurs="0" maxOccurs="unbounded" name="ToolArgs" type="xs:normalizedString"/>\r
846         <xs:element minOccurs="0" maxOccurs="unbounded" name="InputPattern" type="xs:normalizedString"/>\r
847         <xs:element minOccurs="0" maxOccurs="1" name="OutputPattern" type="xs:normalizedString"/>\r
848       </xs:sequence>\r
849       <xs:attributeGroup ref="ProcessStepAttributes"/>\r
850     </xs:complexType>\r
851   </xs:element>\r
852   <xs:element name="SourceFiles">\r
853     <xs:annotation>\r
854       <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
855     </xs:annotation>\r
856     <xs:complexType>\r
857       <xs:sequence>\r
858         <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>\r
859       </xs:sequence>\r
860     </xs:complexType>\r
861   </xs:element>\r
862   <xs:element name="SkuInfo">\r
863     <xs:complexType>\r
864       <xs:sequence>\r
865         <xs:element minOccurs="1" maxOccurs="unbounded" name="UiSkuName">\r
866           <xs:complexType>\r
867             <xs:simpleContent>\r
868               <xs:extension base="UiNameType">\r
869                 <xs:attribute name="SkuID" type="xs:nonNegativeInteger" use="required"/>\r
870               </xs:extension>\r
871             </xs:simpleContent>\r
872           </xs:complexType>\r
873         </xs:element>\r
874       </xs:sequence>\r
875     </xs:complexType>\r
876   </xs:element>\r
877   <xs:element name="SystemTables">\r
878     <xs:annotation>\r
879       <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>\r
880     </xs:annotation>\r
881     <xs:complexType>\r
882       <xs:sequence>\r
883         <xs:element minOccurs="1" maxOccurs="unbounded" name="SystemTableCNames">\r
884           <xs:complexType>\r
885             <xs:sequence>\r
886               <xs:element minOccurs="1" maxOccurs="1" name="SystemTableCName" type="C_NameType"/>\r
887               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
888             </xs:sequence>\r
889             <xs:attributeGroup ref="SystemTableAttributes"/>\r
890           </xs:complexType>\r
891         </xs:element>\r
892       </xs:sequence>\r
893     </xs:complexType>\r
894   </xs:element>\r
895   <xs:element name="UserDefinedAntTasks">\r
896     <xs:annotation>\r
897       <xs:documentation xml:lang="en">This is a sub-element of BuildOptions</xs:documentation>\r
898       <xs:documentation xml:lang="en">Permit Users to define their own custom ANT tasks.</xs:documentation>\r
899     </xs:annotation>\r
900     <xs:complexType>\r
901       <xs:sequence>\r
902         <xs:element minOccurs="1" maxOccurs="unbounded" ref="AntTask"/>\r
903       </xs:sequence>\r
904     </xs:complexType>\r
905   </xs:element>\r
906   <xs:element name="UserExtensions">\r
907     <xs:complexType>\r
908       <xs:sequence>\r
909         <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>\r
910       </xs:sequence>\r
911       <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
912       <xs:attribute name="Identifier" type="xs:nonNegativeInteger" use="required"/>\r
913     </xs:complexType>\r
914   </xs:element>\r
915   <xs:element name="Variables">\r
916     <xs:annotation>\r
917       <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>\r
918     </xs:annotation>\r
919     <xs:complexType>\r
920       <xs:sequence>\r
921         <xs:element minOccurs="1" maxOccurs="unbounded" name="Variable">\r
922           <xs:annotation>\r
923             <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>\r
924           </xs:annotation>\r
925           <xs:complexType>\r
926             <xs:sequence>\r
927               <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>\r
928               <xs:element minOccurs="1" maxOccurs="1" name="GuidC_Name" type="C_NameType"/>\r
929               <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
930             </xs:sequence>\r
931             <xs:attributeGroup ref="VariableAttributes"/>\r
932           </xs:complexType>\r
933         </xs:element>\r
934       </xs:sequence>\r
935     </xs:complexType>\r
936   </xs:element>\r
937   <xs:element name="Version" type="VersionDataType"/>\r
938 </xs:schema>\r