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