]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Conf/XMLSchema/DistributionPackage.xsd
Sync BaseTools Trunk (version r2387) to EDKII main trunk.
[mirror_edk2.git] / BaseTools / Conf / XMLSchema / DistributionPackage.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 Filename: DistributionPackage.xsd
4
5 Copyright (c) 2008 - 2011, Intel Corporation. All rights reserved.
6
7 This program and the accompanying materials are licensed and made available
8 under the terms and conditions of the BSD License which may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 -->
15 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
16 targetNamespace="http://www.uefi.org/2011/1.1" xmlns="http://www.uefi.org/2011/1.1">
17 <xs:element name="DistributionPackage">
18 <xs:annotation>
19 <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI Distribution Package
20 description (PKG) file. It describes the content of:</xs:documentation>
21 <xs:documentation xml:lang="en-us"> 1) Package descriptions with definitions and
22 headers.</xs:documentation>
23 <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary format. (Note
24 that Binary format is for FFS leaf section file types only, complete FFS files
25 cannot be distributed using this distribution format.) </xs:documentation>
26 <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools used to modify
27 the binary images to create UEFI/PI compliant images. </xs:documentation>
28 <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to distribute other
29 miscellaneous content that is not specific to UEFI/PI images. </xs:documentation>
30 <xs:documentation xml:lang="en-us"> The Package Surface Area describes the content of
31 packages, while the Module Surface Area provides information relevant to source
32 and/or binary distributions. </xs:documentation>
33 </xs:annotation>
34 <xs:complexType>
35 <xs:sequence>
36 <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
37 <xs:annotation>
38 <xs:documentation xml:lang="en-us"> This header contains (legal) information
39 usually required for distributing both binary and/or source code.
40 </xs:documentation>
41 </xs:annotation>
42 </xs:element>
43 <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
44 <xs:annotation>
45 <xs:documentation xml:lang="en-us"> The list of packages in this
46 distribution. </xs:documentation>
47 <xs:documentation xml:lang="en-us"> Packages are groups of files and/or
48 modules that are similar in nature.</xs:documentation>
49 <xs:documentation xml:lang="en-us"> Packages are uniquely identified by a
50 package GUID and a package version. </xs:documentation>
51 <xs:documentation xml:lang="en-us"> A package can declare public mappings of
52 C names to GUID values. </xs:documentation>
53 <xs:documentation xml:lang="en-us"> A package can provide header files for
54 library classes and/or other industry standard definitions. </xs:documentation>
55 <xs:documentation xml:lang="en-us"> A package can also declare public
56 mappings of platform configuration database (PCD) &quot;knobs&quot; to
57 control features and operation of modules within a platform. </xs:documentation>
58 <xs:documentation xml:lang="en-us"> Finally, a package lists the library
59 instances and/or modules that are provided in a distribution package.
60 </xs:documentation>
61 </xs:annotation>
62 </xs:element>
63 <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
64 <xs:annotation>
65 <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant modules
66 in this distribution that are NOT part of a Package. Every module that
67 is provided as part of a package needs to be described in a
68 PackageSurfaceArea.Modules section. </xs:documentation>
69 <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section describes
70 how each module in a distribution is coded, or, in the case of a binary
71 module distribution, how it was built. </xs:documentation>
72 <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and modules
73 are uniquely identified by the Module's GUID and version number. </xs:documentation>
74 <xs:documentation xml:lang="en-us"> This section will typically be used for
75 modules that don't require any additional files that would be included
76 in a package. For example, the Enhanced FAT driver binary does not need
77 to have a package description, as no additional files are provided.
78 </xs:documentation>
79 </xs:annotation>
80 </xs:element>
81 <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
82 <xs:annotation>
83 <xs:documentation xml:lang="en-us"> This section is for distributing vendor
84 specific executable tools, tool source code and/or configuration files.
85 These tools are primarily for manipulating code and/or binary images. </xs:documentation>
86 <xs:documentation xml:lang="en-us"> Tools in this section
87 can:</xs:documentation>
88 <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files to create
89 source code files and build scripts. </xs:documentation>
90 <xs:documentation xml:lang="en-us"> 2) Modify image files to conform to
91 UEFI/PI specifications. </xs:documentation>
92 <xs:documentation xml:lang="en-us"> 3) Generate binary files from certain
93 types of text/unicode files. </xs:documentation>
94 <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or Firmware
95 Device images. </xs:documentation>
96 <xs:documentation xml:lang="en-us"> 5) Implement external
97 encoding/decoding/signature/GUIDed tools. </xs:documentation>
98 <xs:documentation xml:lang="en-us"> 6) Distribution Package
99 create/install/remove tools. </xs:documentation>
100 </xs:annotation>
101 </xs:element>
102 <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
103 <xs:annotation>
104 <xs:documentation xml:lang="en-us"> The list of miscellaneous files in this
105 distribution. Any files that are not listed in either the Package,
106 Module or Tools sections can be listed here. This section can be used to
107 distribute specifications for packages and modules that are not
108 &quot;industry standards&quot; such as a specification for a chipset or
109 a video device. </xs:documentation>
110 </xs:annotation>
111 </xs:element>
112 <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
113 <xs:annotation>
114 <xs:documentation xml:lang="en-us"> The UserExtensions section is used to
115 disseminate processing instructions that may be custom to the content
116 provided by the distribution. This section contains information that is
117 common to all aspects of this disribution. </xs:documentation>
118 </xs:annotation>
119 </xs:element>
120 </xs:sequence>
121
122 </xs:complexType>
123 </xs:element>
124 <!-- End of the DistributionPackage Description -->
125
126 <xs:element name="DistributionHeader">
127 <xs:annotation>
128 <xs:documentation xml:lang="en-us"> This section defines the content of the UEIF/PI
129 compliant Distribution Package Header. This is the only required element of a
130 UEFI/PI compliant distribution package. </xs:documentation>
131 </xs:annotation>
132 <xs:complexType>
133 <xs:sequence>
134 <xs:element minOccurs="1" maxOccurs="1" name="Name">
135 <xs:annotation>
136 <xs:documentation xml:lang="en-us"> This is the User Interface Name for this
137 Distribution Package. </xs:documentation>
138 <xs:documentation xml:lang="en-us"> Each Distribution Package is uniquely
139 identified by it's GUID and Version number. </xs:documentation>
140 </xs:annotation>
141 <xs:complexType>
142 <xs:simpleContent>
143 <xs:extension base="xs:normalizedString">
144 <xs:attribute name="BaseName" type="xs:NMTOKEN" use="optional">
145 <xs:annotation>
146 <xs:documentation xml:lang="en-us"> The reference name of
147 the Distribution Package file. This single word name can
148 be used by tools as a keyword or for directory and/or
149 file creation. </xs:documentation>
150 <xs:documentation xml:lang="en-us"> White space and special
151 characters (dash and underscore characters may be used)
152 are not permitted in this name. </xs:documentation>
153 </xs:annotation>
154 </xs:attribute>
155 </xs:extension>
156 </xs:simpleContent>
157 </xs:complexType>
158 </xs:element>
159 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
160 <xs:annotation>
161 <xs:documentation xml:lang="en-us"> This 128-bit GUID and the Version
162 attribute uniquely identify this Distribution Package. </xs:documentation>
163 <xs:documentation xml:lang="en-us"> Backward compatible releases of a
164 distribution package need only change the version number, while
165 non-backward compatible changes require the GUID to change (resetting
166 the version number to 1.0 is optional.) </xs:documentation>
167 </xs:annotation>
168 <xs:complexType>
169 <xs:simpleContent>
170 <xs:extension base="RegistryFormatGuid">
171 <xs:attribute name="Version" type="xs:decimal" use="required">
172 <xs:annotation>
173 <xs:documentation xml:lang="en-us"> This value, along with
174 the GUID, is used to uniquely identify this object. The
175 higher the number, the more recent the content.
176 </xs:documentation>
177 </xs:annotation>
178 </xs:attribute>
179 </xs:extension>
180 </xs:simpleContent>
181 </xs:complexType>
182 </xs:element>
183 <xs:element minOccurs="1" maxOccurs="1" name="Vendor" type="xs:normalizedString">
184 <xs:annotation>
185 <xs:documentation xml:lang="en-us"> A string identifying who created this
186 distribution package. </xs:documentation>
187 </xs:annotation>
188 </xs:element>
189 <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
190 <xs:annotation>
191 <xs:documentation xml:lang="en-us"> The date and time this distribution was
192 created. The format is: YYYY-MM-DDThh:mm:ss, for example:
193 2001-01-31T13:30:00 (note the T character separator between the calendar
194 date and the time. </xs:documentation>
195 </xs:annotation>
196 </xs:element>
197 <xs:element minOccurs="1" maxOccurs="1" name="Copyright" type="xs:string">
198 <xs:annotation>
199 <xs:documentation xml:lang="en-us"> The copyright for this file that is
200 generated by the creator of the distribution. If a derivative work is
201 generated from an existing distribution, then the existing copyright
202 must be maintained, and additional copyrights may be appended to the end
203 of this element. It may also be the primary copyright for all code
204 provided in the Distribution Package. </xs:documentation>
205 </xs:annotation>
206 </xs:element>
207 <xs:element minOccurs="1" maxOccurs="1" name="License" type="xs:string">
208 <xs:annotation>
209 <xs:documentation xml:lang="en-us"> A license that describes any
210 restrictions on the use of this distribution. If a derivative work is
211 allowed by the original license and a derivative work is generated from
212 an existing distribution, then the existing license must be maintained,
213 and additional licenses may be appended to the end of this element. It
214 may also be the primary license for all code provided in the
215 distribution file. Alternatively, this may point to a filename that
216 contains the License. The file (included in the content zip file) will
217 be stored in the same location as the distribution package's .pkg file.
218 </xs:documentation>
219 </xs:annotation>
220 </xs:element>
221 <xs:element minOccurs="1" maxOccurs="1" name="Abstract" type="xs:normalizedString">
222 <xs:annotation>
223 <xs:documentation xml:lang="en-us"> A one line description of the
224 Distribution Package. </xs:documentation>
225 </xs:annotation>
226 </xs:element>
227 <xs:element minOccurs="0" maxOccurs="1" name="Description" type="xs:string">
228 <xs:annotation>
229 <xs:documentation xml:lang="en-us"> A complete description of the
230 Distribution Package. This description may include the release name of
231 the file, the version of the file, and a complete description of the
232 file contents and/or features including a description of the updates
233 since the previous file release. </xs:documentation>
234 </xs:annotation>
235 </xs:element>
236 <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
237 <xs:annotation>
238 <xs:documentation xml:lang="en-us"> The packaging utilities will use this
239 MD5 sum value of the included ZIP file containing files and/or code. If
240 this element is not present, then installation tools should assume that
241 the content is correct, or that other methods may be needed to verify
242 content. </xs:documentation>
243 </xs:annotation>
244 </xs:element>
245 <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification" type="xs:decimal"
246 default="1.1">
247 <xs:annotation>
248 <xs:documentation xml:lang="en-us"> This version of this XML Schema is 1.1 </xs:documentation>
249 <xs:documentation xml:lang="en-us"> Changes to 1.1 from 1.0 </xs:documentation>
250 <xs:documentation xml:lang="en-us"> #1 Updated to present date and new
251 version which is important to reflect the present state of the
252 matter</xs:documentation>
253 <xs:documentation xml:lang="en-us"> #2 Added definition/enumeration of
254 UNDEFIND type 2 is important since there is a large body of legacy code
255 for which the GUID’s and other code/data objects were not decorated with
256 their usage. This document will allow for importing today’s source
257 artifacts and producing decorations using the ‘Undefined’ versus having
258 an error</xs:documentation>
259 <xs:documentation xml:lang="en-us">#3 Allow for inclusion of ARM and future
260 architecture types</xs:documentation>
261 </xs:annotation>
262 </xs:element>
263 </xs:sequence>
264 <xs:attribute name="ReadOnly" type="xs:boolean" default="false" use="optional">
265 <xs:annotation>
266 <xs:documentation xml:lang="en-us"> If set to true, all content within this
267 Distribution Package should NOT be modified. The default permits
268 modification of all content. </xs:documentation>
269 </xs:annotation>
270 </xs:attribute>
271 <xs:attribute name="RePackage" type="xs:boolean" default="false" use="optional">
272 <xs:annotation>
273 <xs:documentation xml:lang="en-us"> If set to true, then the content can be
274 repackaged into another distribution package. The default prohibits
275 repackaging the Distribution content. </xs:documentation>
276 </xs:annotation>
277 </xs:attribute>
278 </xs:complexType>
279 </xs:element>
280 <!-- End of the DistributionHeader element. -->
281
282 <xs:element name="PackageSurfaceArea">
283 <xs:annotation>
284 <xs:documentation xml:lang="en-us"> A package is a collection of related objects -
285 Includes, Libraries and Modules. </xs:documentation>
286 <xs:documentation xml:lang="en-us"> Each package is uniquely identified by it's GUID and
287 Version number. Backward compatible releases of a package need only change the
288 version number, while non-backward compatible changes require the GUID to change
289 (resetting the version number to 1.0 is optional.) </xs:documentation>
290 </xs:annotation>
291 <xs:complexType>
292 <xs:sequence>
293
294 <xs:element minOccurs="1" maxOccurs="1" name="Header">
295 <xs:complexType>
296 <xs:sequence>
297 <xs:element minOccurs="1" maxOccurs="1" name="Name">
298 <xs:annotation>
299 <xs:documentation xml:lang="en-us"> This is the User Interface
300 Name for this package. </xs:documentation>
301 </xs:annotation>
302 <xs:complexType>
303 <xs:simpleContent>
304 <xs:extension base="xs:normalizedString">
305 <xs:attribute name="BaseName" type="xs:NMTOKEN"
306 use="required">
307 <xs:annotation>
308 <xs:documentation xml:lang="en-us"> This is a
309 single word BaseName of the package. This BaseName
310 can be used by tools as a keyword and for
311 directory/file creation. </xs:documentation>
312 </xs:annotation>
313 </xs:attribute>
314 </xs:extension>
315 </xs:simpleContent>
316 </xs:complexType>
317 </xs:element>
318 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
319 <xs:annotation>
320 <xs:documentation xml:lang="en-us"> This GUID and the Version
321 attribute uniquely identify a given package.
322 </xs:documentation>
323 </xs:annotation>
324 <xs:complexType>
325 <xs:simpleContent>
326 <xs:extension base="RegistryFormatGuid">
327 <xs:attribute name="Version" type="xs:decimal"
328 use="required">
329 <xs:annotation>
330 <xs:documentation xml:lang="en-us"> This value,
331 along with the GUID, is used to uniquely identify
332 this object. </xs:documentation>
333 <xs:documentation xml:lang="en-us"> Backward
334 compatible changes must make sure this number is
335 incremented from the most recent version.
336 Non-backward compatible changes require a new
337 GUID, and the version can be reset.
338 </xs:documentation>
339 </xs:annotation>
340 </xs:attribute>
341 </xs:extension>
342 </xs:simpleContent>
343 </xs:complexType>
344 </xs:element>
345 <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
346 type="xs:string">
347 <xs:annotation>
348 <xs:documentation xml:lang="en-us"> If the package requires a
349 different copyright than the distribution package, this
350 element can list one or more copyright lines.
351 </xs:documentation>
352 </xs:annotation>
353 </xs:element>
354 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
355 <xs:annotation>
356 <xs:documentation xml:lang="en-us"> If the package requires
357 licenses that are different from the distribution package
358 license, this element can contain one or more license text
359 paragraphs (or license filenames.) </xs:documentation>
360 </xs:annotation>
361 </xs:element>
362 <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
363 type="xs:normalizedString">
364 <xs:annotation>
365 <xs:documentation xml:lang="en-us"> A one line description of
366 this package. </xs:documentation>
367 </xs:annotation>
368 </xs:element>
369 <xs:element minOccurs="0" maxOccurs="1" name="Description"
370 type="xs:string">
371 <xs:annotation>
372 <xs:documentation xml:lang="en-us"> A complete description of a
373 package. This description may include the release name of
374 the package, the version of the package, and a complete
375 description of the package contents and/or features
376 including a description of the updates since the previous
377 package’s release. </xs:documentation>
378 </xs:annotation>
379 </xs:element>
380 <xs:element minOccurs="1" maxOccurs="1" name="PackagePath"
381 type="xs:anyURI">
382 <xs:annotation>
383 <xs:documentation xml:lang="en-us"> This element is the location
384 (in the ZIP file) for the root directory of a package.
385 </xs:documentation>
386 </xs:annotation>
387 </xs:element>
388 </xs:sequence>
389 </xs:complexType>
390 </xs:element>
391 <!-- End of PackageSurfaceArea Header element. -->
392
393 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
394 <xs:annotation>
395 <xs:documentation xml:lang="en-us"> The term cloned is used here to indicate
396 that this package as been copied and modified to a completely different
397 package. An example might be for a new generation of chipsets that have
398 few or no elements in common with the original. </xs:documentation>
399 </xs:annotation>
400 <xs:complexType>
401 <xs:sequence>
402 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
403 <xs:annotation>
404 <xs:documentation xml:lang="en-us"> This GUID and the Version
405 attribute uniquely identify the Package that this Package
406 was copied from. </xs:documentation>
407 </xs:annotation>
408 <xs:complexType>
409 <xs:simpleContent>
410 <xs:extension base="RegistryFormatGuid">
411 <xs:attribute name="Version" type="xs:decimal"
412 use="required">
413 <xs:annotation>
414 <xs:documentation xml:lang="en-us"> This value,
415 along with the GUID, is used to uniquely identify
416 the package that this package was cloned from.
417 </xs:documentation>
418 </xs:annotation>
419 </xs:attribute>
420 </xs:extension>
421 </xs:simpleContent>
422 </xs:complexType>
423 </xs:element>
424 </xs:sequence>
425 </xs:complexType>
426 </xs:element>
427 <!-- End of PackageSurfaceArea ClonedFrom element. -->
428
429 <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
430 <xs:annotation>
431 <xs:documentation xml:lang="en-us"> Library Classes are public interfaces
432 that can be used by modules. One or more library instances can implement
433 a library class, however only one library instance can be linked to an
434 individual module. This provides the platform integrator with the
435 flexibility of choosing one library instance's implementation over a
436 different library instance. </xs:documentation>
437 </xs:annotation>
438 <xs:complexType>
439 <xs:sequence>
440 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
441 <xs:complexType>
442 <xs:sequence>
443 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
444 type="xs:anyURI">
445 <xs:annotation>
446 <xs:documentation xml:lang="en-us"> The header file
447 provides definitions and function prototypes for a
448 library class. Modules can be coded against these
449 functions, using the definitions in this header,
450 without concerning themselves about the libraries'
451 implementation details. This is a PackagePath
452 relative path and filename for the include file.
453 </xs:documentation>
454 </xs:annotation>
455 </xs:element>
456 <xs:element minOccurs="0" maxOccurs="1"
457 name="RecommendedInstance">
458 <xs:complexType>
459 <xs:sequence>
460 <xs:element minOccurs="1" maxOccurs="1"
461 name="GUID">
462 <xs:annotation>
463 <xs:documentation xml:lang="en-us"> This GUID and
464 the Version attribute uniquely identify the
465 Recommended Library Instance. </xs:documentation>
466 </xs:annotation>
467 <xs:complexType>
468 <xs:simpleContent>
469 <xs:extension base="RegistryFormatGuid">
470 <xs:attribute name="Version" type="xs:decimal"
471 use="optional">
472 <xs:annotation>
473 <xs:documentation xml:lang="en-us"> This value,
474 along with the GUID, is used to uniquely identify
475 this object. If this value is not specified, then
476 any version of the library instance is
477 recommended. </xs:documentation>
478 </xs:annotation>
479 </xs:attribute>
480 </xs:extension>
481 </xs:simpleContent>
482 </xs:complexType>
483 </xs:element>
484 </xs:sequence>
485 </xs:complexType>
486 </xs:element>
487 <xs:element ref="HelpText" minOccurs="0"
488 maxOccurs="unbounded"/>
489 </xs:sequence>
490 <xs:attribute name="Keyword" type="xs:NCName" use="required">
491 <xs:annotation>
492 <xs:documentation xml:lang="en-us"> The single word name
493 of the Library Class that module developers will use
494 to identify a library class dependency.
495 </xs:documentation>
496 </xs:annotation>
497 </xs:attribute>
498 <xs:attributeGroup ref="SupportedArchMod"/>
499 </xs:complexType>
500 </xs:element>
501 </xs:sequence>
502 </xs:complexType>
503 </xs:element>
504 <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
505
506 <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
507 <xs:annotation>
508 <xs:documentation xml:lang="en-us"> This section is used to list header
509 files for industry standards not under the auspices of UEFI.org. For
510 example, headers that contain definitions and data structures for the
511 USB specifications. </xs:documentation>
512 </xs:annotation>
513 <xs:complexType>
514 <xs:sequence>
515 <xs:element minOccurs="1" maxOccurs="unbounded"
516 name="IndustryStandardHeader">
517 <xs:complexType>
518 <xs:sequence>
519 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
520 type="xs:anyURI">
521 <xs:annotation>
522 <xs:documentation xml:lang="en-us"> The package
523 relative path and filename (in the content zip
524 file) of the industry standard include file.
525 </xs:documentation>
526 </xs:annotation>
527 </xs:element>
528 <xs:element ref="HelpText" minOccurs="0"
529 maxOccurs="unbounded"/>
530 </xs:sequence>
531 </xs:complexType>
532 </xs:element>
533 </xs:sequence>
534 </xs:complexType>
535 </xs:element>
536 <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
537
538 <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
539 <xs:annotation>
540 <xs:documentation xml:lang="en-us"> All top level header files that are
541 included by a package that are not listed above. They cannot
542 be:</xs:documentation>
543 <xs:documentation xml:lang="en-us"> 1) Local to a module (module specific.) </xs:documentation>
544 <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
545 <xs:documentation xml:lang="en-us"> 3) A library class header.
546 </xs:documentation>
547 </xs:annotation>
548 <xs:complexType>
549 <xs:sequence>
550 <xs:element minOccurs="1" maxOccurs="unbounded" name="PackageHeader">
551 <xs:complexType>
552 <xs:sequence>
553 <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
554 <xs:annotation>
555 <xs:documentation xml:lang="en-us"> This is the
556 Package relative path and filename location within
557 the content ZIP file. </xs:documentation>
558 </xs:annotation>
559 <xs:complexType>
560 <xs:simpleContent>
561 <xs:extension base="xs:anyURI">
562 <xs:attributeGroup ref="SupportedArchMod"/>
563 </xs:extension>
564 </xs:simpleContent>
565 </xs:complexType>
566 </xs:element>
567 <xs:element ref="HelpText" minOccurs="0"
568 maxOccurs="unbounded"/>
569 </xs:sequence>
570 </xs:complexType>
571 </xs:element>
572 </xs:sequence>
573 </xs:complexType>
574 </xs:element>
575 <!-- End of PackageSurfaceArea PackageIncluces element. -->
576
577 <xs:element minOccurs="0" maxOccurs="1" name="Modules">
578 <xs:complexType>
579 <xs:sequence>
580 <xs:element ref="ModuleSurfaceArea" minOccurs="1" maxOccurs="unbounded">
581 <xs:annotation>
582 <xs:documentation xml:lang="en-us"> This section lists the
583 Module Surface Area for all modules provided with this
584 package. </xs:documentation>
585 </xs:annotation>
586 </xs:element>
587 </xs:sequence>
588 </xs:complexType>
589 </xs:element>
590 <!-- End of PackageSurfaceArea Modules element. -->
591
592 <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
593 <xs:annotation>
594 <xs:documentation xml:lang="en-us"> This section defines the mapping of GUID
595 C names to GUID values as a Registry Format GUID. </xs:documentation>
596 <xs:documentation xml:lang="en-us"> Modules that use these GUIDs must
597 specify their dependency on this package. </xs:documentation>
598 </xs:annotation>
599 <xs:complexType>
600 <xs:sequence>
601 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
602 <xs:annotation>
603 <xs:documentation xml:lang="en-us"> Individual GUID Declarations
604 </xs:documentation>
605 </xs:annotation>
606 <xs:complexType>
607 <xs:sequence>
608 <xs:element minOccurs="1" maxOccurs="1" name="CName"
609 type="xs:NCName"/>
610 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
611 type="RegistryFormatGuid"/>
612 <xs:element ref="HelpText" minOccurs="0"
613 maxOccurs="unbounded"/>
614 </xs:sequence>
615 <xs:attribute name="UiName" type="xs:normalizedString"
616 use="optional"/>
617 <xs:attribute name="GuidTypes" type="GuidListType"
618 use="optional"/>
619 <xs:attributeGroup ref="SupportedArchMod"/>
620 </xs:complexType>
621 </xs:element>
622 </xs:sequence>
623 </xs:complexType>
624 </xs:element>
625 <!-- End of PackageSurfaceArea GuidDeclarations element. -->
626
627 <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
628 <xs:annotation>
629 <xs:documentation xml:lang="en-us"> This section defines the mapping of
630 Protocol C names to GUID values as a Registry Format GUID. </xs:documentation>
631 <xs:documentation xml:lang="en-us"> Modules that use these Protocols must
632 specify their dependency on this package. </xs:documentation>
633 </xs:annotation>
634 <xs:complexType>
635 <xs:sequence>
636 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
637 <xs:annotation>
638 <xs:documentation xml:lang="en-us"> Individual Protocol
639 Declarations </xs:documentation>
640 </xs:annotation>
641 <xs:complexType>
642 <xs:sequence>
643 <xs:element minOccurs="1" maxOccurs="1" name="CName"
644 type="xs:NCName"/>
645 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
646 type="RegistryFormatGuid"/>
647 <xs:element ref="HelpText" minOccurs="0"
648 maxOccurs="unbounded"/>
649 </xs:sequence>
650 <xs:attribute name="UiName" type="xs:normalizedString"
651 use="optional"/>
652 <xs:attributeGroup ref="SupportedArchMod"/>
653 </xs:complexType>
654 </xs:element>
655 </xs:sequence>
656 </xs:complexType>
657 </xs:element>
658 <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
659
660 <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
661 <xs:annotation>
662 <xs:documentation xml:lang="en-us"> This section defines the mapping of Ppi
663 C names to GUID values as a Registry Format GUID. </xs:documentation>
664 <xs:documentation xml:lang="en-us"> Modules that use these Ppis must specify
665 their dependency on this package. </xs:documentation>
666 </xs:annotation>
667 <xs:complexType>
668 <xs:sequence>
669 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
670 <xs:annotation>
671 <xs:documentation xml:lang="en-us"> Individual PPI Declarations
672 </xs:documentation>
673 </xs:annotation>
674 <xs:complexType>
675 <xs:sequence>
676 <xs:element minOccurs="1" maxOccurs="1" name="CName"
677 type="xs:NCName"/>
678 <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
679 type="RegistryFormatGuid"/>
680 <xs:element ref="HelpText" minOccurs="0"
681 maxOccurs="unbounded"/>
682 </xs:sequence>
683 <xs:attribute name="UiName" type="xs:normalizedString"
684 use="optional"/>
685 <xs:attributeGroup ref="SupportedArchMod"/>
686 </xs:complexType>
687 </xs:element>
688 </xs:sequence>
689 </xs:complexType>
690 </xs:element>
691 <!-- End of PackageSurfaceArea PpiDeclarations element. -->
692
693 <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
694 <xs:annotation>
695 <xs:documentation xml:lang="en-us"> This section is used to declare platform
696 configuration knobs that are defined by this package. </xs:documentation>
697 <xs:documentation xml:lang="en-us"> Modules that use these PCD values must
698 specify their dependency on this package. </xs:documentation>
699 </xs:annotation>
700 <xs:complexType>
701 <xs:sequence>
702 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
703 <xs:complexType>
704 <xs:sequence>
705 <xs:element minOccurs="1" maxOccurs="1"
706 name="TokenSpaceGuidCname" type="xs:NCName">
707 <xs:annotation>
708 <xs:documentation xml:lang="en-us"> Specifies the C
709 name of the Token Space GUID of which this PCD
710 Entry is a member. This C name should also be
711 listed in the GUIDs section, (specified above,)
712 where the C name is assigned to a GUID value.
713 </xs:documentation>
714 </xs:annotation>
715 </xs:element>
716 <xs:element minOccurs="1" maxOccurs="1" name="Token">
717 <xs:annotation>
718 <xs:documentation xml:lang="en-us"> Specifies the
719 32-bit token value for this PCD Entry. The Token
720 number must be unique to the Token Space that
721 declares the PCD. </xs:documentation>
722 <xs:documentation xml:lang="en-us"> The minLength of
723 3 is required to handle the "0x" prefix to the hex
724 number. </xs:documentation>
725 </xs:annotation>
726 <xs:simpleType>
727 <xs:restriction base="HexNumber">
728 <xs:minLength value="3"/>
729 <xs:maxLength value="10"/>
730 </xs:restriction>
731 </xs:simpleType>
732 </xs:element>
733 <xs:element minOccurs="1" maxOccurs="1" name="CName"
734 type="xs:NCName"/>
735 <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
736 type="PcdDatumTypes">
737 <xs:annotation>
738 <xs:documentation xml:lang="en-us"> A string that
739 contains the data type of this PCD Entry. PCD data
740 types are restricted to the following set:UINT8,
741 UINT16, UINT32, UINT64, VOID*, BOOLEAN.
742 </xs:documentation>
743 </xs:annotation>
744 </xs:element>
745 <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage"
746 type="PcdItemListType">
747 <xs:annotation>
748 <xs:documentation xml:lang="en-us"> A string that
749 contains one or more PCD Item types separated by
750 spaces. The PCD Item types are restricted to
751 FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
752 </xs:documentation>
753 </xs:annotation>
754 </xs:element>
755 <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
756 type="xs:normalizedString"/>
757 <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
758 <xs:annotation>
759 <xs:documentation xml:lang="en-us"> This is a
760 recommended maximum data size for VOID* data
761 types, the actual value should be defined by the
762 Platform Integrator. It is not required for the
763 other data types. </xs:documentation>
764 <xs:documentation xml:lang="en-us"> The minLength of
765 3 is required to handle the "0x" prefix to the hex
766 number. </xs:documentation>
767
768 </xs:annotation>
769 <xs:simpleType>
770 <xs:restriction base="HexNumber">
771 <xs:minLength value="3"/>
772 </xs:restriction>
773 </xs:simpleType>
774 </xs:element>
775 <xs:element ref="HelpText" minOccurs="0"
776 maxOccurs="unbounded"/>
777
778 <xs:element minOccurs="0" maxOccurs="unbounded"
779 name="PcdError">
780 <xs:annotation>
781 <xs:documentation xml:lang="en-us"> Valid Error
782 messages that may be implemented in a module for
783 the PCD Entry. Only One Error Number per PcdError,
784 (multiple ErrorMessage entries are permitted) and
785 multiple PcdError elements are permitted.
786 </xs:documentation>
787 </xs:annotation>
788 <xs:complexType>
789 <xs:sequence>
790 <xs:choice minOccurs="1" maxOccurs="1">
791 <xs:annotation>
792 <xs:documentation xml:lang="en-us"> One of the
793 following types of comparisons, which must be able
794 to evaluate to either true or false.
795 </xs:documentation>
796 </xs:annotation>
797 <xs:element minOccurs="0" maxOccurs="1"
798 name="ValidValueList">
799 <xs:annotation>
800 <xs:documentation xml:lang="en-us"> The PCD Value
801 must be space separated list of values. Values are
802 restricted to the data type of this PCD.
803 </xs:documentation>
804 </xs:annotation>
805 <xs:complexType>
806 <xs:simpleContent>
807 <xs:extension base="xs:normalizedString">
808 <xs:attribute name="Lang" type="xs:language"
809 use="optional"/>
810 </xs:extension>
811 </xs:simpleContent>
812 </xs:complexType>
813 </xs:element>
814 <xs:element minOccurs="0" maxOccurs="1"
815 name="ValidValueRange" type="xs:normalizedString">
816 <xs:annotation>
817 <xs:documentation xml:lang="en-us"> The PCD must
818 be within a specifed range of numeric values.
819 Restricted to C style Relational, Equality and
820 Logicial Operators and parenthesis are valid. Only
821 the CName for this PCD is permitted in the
822 ValidValueRange expression. All other values must
823 be numeric.</xs:documentation>
824 <xs:documentation xml:lang="en-us"> LValue (op
825 RValue)+ </xs:documentation>
826 </xs:annotation>
827 </xs:element>
828 <xs:element minOccurs="0" maxOccurs="1"
829 name="Expression" type="xs:normalizedString">
830 <xs:annotation>
831 <xs:documentation xml:lang="en-us"> A in-fix
832 logical expression using C style logical
833 operators. </xs:documentation>
834 </xs:annotation>
835 </xs:element>
836 </xs:choice>
837 <xs:element minOccurs="1" maxOccurs="1"
838 name="ErrorNumber">
839 <xs:annotation>
840 <xs:documentation xml:lang="en-us"> A hexadecimal
841 value for the error message as defined by
842 specifications. </xs:documentation>
843 <xs:documentation xml:lang="en-us"> The minLength
844 of 3 is required to handle the "0x" prefix to the
845 hex number. </xs:documentation>
846
847 </xs:annotation>
848 <xs:simpleType>
849 <xs:restriction base="HexNumber">
850 <xs:minLength value="3"/>
851 </xs:restriction>
852 </xs:simpleType>
853 </xs:element>
854 <xs:element minOccurs="1" maxOccurs="unbounded"
855 name="ErrorMessage">
856 <xs:annotation>
857 <xs:documentation xml:lang="en-us"> This string
858 should be defined by specifications. There are
859 pre-defined error number ranges in the UEFI/PI
860 specificaiton. </xs:documentation>
861 </xs:annotation>
862 <xs:complexType>
863 <xs:simpleContent>
864 <xs:extension base="xs:string">
865 <xs:attribute name="Lang" type="xs:language"
866 default="en-us" use="optional"/>
867 </xs:extension>
868 </xs:simpleContent>
869 </xs:complexType>
870 </xs:element>
871 </xs:sequence>
872 </xs:complexType>
873 </xs:element>
874 </xs:sequence>
875 <xs:attributeGroup ref="SupportedArchMod"/>
876 </xs:complexType>
877 </xs:element>
878 </xs:sequence>
879 </xs:complexType>
880 </xs:element>
881 <!-- End of PackageSurfaceArea PcdDeclarations element. -->
882
883 <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
884 <xs:annotation>
885 <xs:documentation xml:lang="en-us"> This section is used to describe any PCD
886 interdependencies or relationships. </xs:documentation>
887 </xs:annotation>
888 <xs:complexType>
889 <xs:sequence>
890 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck"
891 type="xs:normalizedString">
892 <xs:annotation>
893 <xs:documentation xml:lang="en-us"> This entry must used
894 TokenSpaceGuidCName.PcdCname for every named PCD. Restricted
895 to Relational, Equality and Logical Operators (NOT, AND, OR,
896 GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only
897 the TokenSpaceGuidCName.PcdCname us permitted to name PCDs
898 in the expression. All other values must be numeric. </xs:documentation>
899 <xs:documentation xml:lang="en-us"> LValue (op RValue)+
900 </xs:documentation>
901 </xs:annotation>
902 </xs:element>
903 </xs:sequence>
904 </xs:complexType>
905 </xs:element>
906
907 <xs:element minOccurs="0" maxOccurs="unbounded" name="MiscellaneousFiles">
908 <xs:annotation>
909 <xs:documentation xml:lang="en-us"> This section contains files that are not
910 part of the code distributed with this package. </xs:documentation>
911 </xs:annotation>
912 <xs:complexType>
913 <xs:sequence>
914 <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
915 type="xs:string">
916 <xs:annotation>
917 <xs:documentation xml:lang="en-us"> Only required if different
918 from the Package Copyright. </xs:documentation>
919 </xs:annotation>
920 </xs:element>
921 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
922 <xs:annotation>
923 <xs:documentation xml:lang="en-us"> Only required if different
924 from the Package License. </xs:documentation>
925 </xs:annotation>
926 </xs:element>
927 <xs:element minOccurs="0" maxOccurs="1" name="Abstract" type="xs:string">
928 <xs:annotation>
929 <xs:documentation xml:lang="en-us"> A one line description of
930 this section's content. </xs:documentation>
931 </xs:annotation>
932 </xs:element>
933 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"
934 type="xs:string">
935 <xs:annotation>
936 <xs:documentation xml:lang="en-us"> A complete description of
937 the files in this section. </xs:documentation>
938 </xs:annotation>
939 </xs:element>
940 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
941 <xs:annotation>
942 <xs:documentation xml:lang="en-us"> This is the PackagePath
943 relative path and filename location within the ZIP file.
944 </xs:documentation>
945 </xs:annotation>
946 <xs:complexType>
947 <xs:simpleContent>
948 <xs:extension base="xs:anyURI">
949 <xs:attribute name="Executable" type="xs:boolean"
950 default="false" use="optional">
951 <xs:annotation>
952 <xs:documentation xml:lang="en-us"> If true, used
953 by installation tools to ensure that a file that
954 must be executable has the correct properties to
955 permit execution. </xs:documentation>
956 </xs:annotation>
957 </xs:attribute>
958 </xs:extension>
959 </xs:simpleContent>
960 </xs:complexType>
961 </xs:element>
962
963 </xs:sequence>
964 </xs:complexType>
965 </xs:element>
966 <!-- End of PackageSurfaceArea Misc element. -->
967
968 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
969 <xs:annotation>
970 <xs:documentation xml:lang="en-us"> This section is used for any processing
971 instructions that may be custom to the content provided by this package
972 that are common to this package. </xs:documentation>
973 </xs:annotation>
974 <xs:complexType mixed="true">
975 <xs:sequence>
976 <xs:any processContents="lax" minOccurs="0" maxOccurs="1"/>
977 </xs:sequence>
978 <xs:attribute name="UserId" type="xs:NCName" use="required">
979 <xs:annotation>
980 <xs:documentation xml:lang="en-us"> This is a single word identifier
981 for grouping similar content that does not fit into previously
982 defined sections or other sections of the Distribution.
983 </xs:documentation>
984 </xs:annotation>
985 </xs:attribute>
986 <xs:attribute name="Identifier" type="xs:string" use="required">
987 <xs:annotation>
988 <xs:documentation xml:lang="en-us"> This can be used to
989 differentiate multiple sections with a grouping. </xs:documentation>
990 <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
991 Identifier might indicate specific steps and tools required
992 before processing module content, while a different
993 UserExtensions section with a POST_PROCESS Identifier might
994 describe steps that need to be executed after operations on the
995 modules in this package. </xs:documentation>
996 </xs:annotation>
997 </xs:attribute>
998 <xs:anyAttribute processContents="lax"/>
999 </xs:complexType>
1000 </xs:element>
1001 <!-- End of PackageSurfaceArea UserExtensions element. -->
1002
1003 </xs:sequence>
1004 </xs:complexType>
1005 </xs:element>
1006 <!-- End of the PackageSurfaceArea element. -->
1007
1008 <xs:element name="ModuleSurfaceArea">
1009 <xs:annotation>
1010 <xs:documentation xml:lang="en-us"> Each module is uniquely identified by it's GUID and
1011 Version number. Backward compatible releases of a module need only change the
1012 version number, while non-backward compatible changes require the GUID to change
1013 (resetting the version number to 1.0 is optional.) </xs:documentation>
1014 </xs:annotation>
1015 <xs:complexType>
1016 <xs:sequence>
1017
1018 <xs:element minOccurs="1" maxOccurs="1" name="Header">
1019 <xs:complexType>
1020 <xs:sequence>
1021 <xs:element minOccurs="1" maxOccurs="1" name="Name">
1022 <xs:annotation>
1023 <xs:documentation xml:lang="en-us"> This is the User Interface
1024 Name for this Module. </xs:documentation>
1025 </xs:annotation>
1026 <xs:complexType>
1027 <xs:simpleContent>
1028 <xs:extension base="xs:normalizedString">
1029 <xs:attribute name="BaseName" type="xs:NMTOKEN"
1030 use="required">
1031 <xs:annotation>
1032 <xs:documentation xml:lang="en-us"> This is a
1033 single word BaseName that will be used to create a
1034 module meta-data file. </xs:documentation>
1035 <xs:documentation xml:lang="en-us"> This name
1036 should also be used to create output file names
1037 and directories. </xs:documentation>
1038 </xs:annotation>
1039 </xs:attribute>
1040 </xs:extension>
1041 </xs:simpleContent>
1042 </xs:complexType>
1043 </xs:element>
1044 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1045 <xs:annotation>
1046 <xs:documentation xml:lang="en-us"> This GUID and the Version
1047 attribute uniquely identify a given Module.
1048 </xs:documentation>
1049 </xs:annotation>
1050 <xs:complexType>
1051 <xs:simpleContent>
1052 <xs:extension base="RegistryFormatGuid">
1053 <xs:attribute name="Version" type="xs:decimal"
1054 use="required">
1055 <xs:annotation>
1056 <xs:documentation xml:lang="en-us"> This value,
1057 along with the GUID, is used to uniquely identify
1058 this object. </xs:documentation>
1059 <xs:documentation xml:lang="en-us"> Backward
1060 compatible changes must make sure this number is
1061 incremented from the most recent version.
1062 Non-backward compatible changes require a new
1063 GUID, and the version can be reset.
1064 </xs:documentation>
1065 </xs:annotation>
1066 </xs:attribute>
1067 </xs:extension>
1068 </xs:simpleContent>
1069 </xs:complexType>
1070 </xs:element>
1071 <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
1072 type="xs:string">
1073 <xs:annotation>
1074 <xs:documentation xml:lang="en-us"> This is only required if the
1075 Copyright is different from either the Package or
1076 Distribution copyright. Multiple copyright lines are
1077 permitted within this section. </xs:documentation>
1078 </xs:annotation>
1079 </xs:element>
1080 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
1081 <xs:annotation>
1082 <xs:documentation xml:lang="en-us"> This is only required if the
1083 license is different from either the Package or Distribution
1084 license. Multiple licenses are permitted within this
1085 section. </xs:documentation>
1086 </xs:annotation>
1087 </xs:element>
1088 <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
1089 type="xs:normalizedString">
1090 <xs:annotation>
1091 <xs:documentation xml:lang="en-us"> A brief text description of
1092 the module. </xs:documentation>
1093 </xs:annotation>
1094 </xs:element>
1095 <xs:element minOccurs="0" maxOccurs="1" name="Description"
1096 type="xs:string">
1097 <xs:annotation>
1098 <xs:documentation xml:lang="en-us"> A complete description of
1099 the module contents and/or features including a description
1100 of the updates since the previous module release.
1101 </xs:documentation>
1102 </xs:annotation>
1103 </xs:element>
1104 </xs:sequence>
1105 </xs:complexType>
1106 </xs:element>
1107 <!-- End of Module Surface Area Header Section -->
1108
1109 <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
1110 <xs:annotation>
1111 <xs:documentation xml:lang="en-us"> List general information about a module,
1112 including the Supported Architectures, this module's type,
1113 specifications the module is coded against, and other informational
1114 content. </xs:documentation>
1115 </xs:annotation>
1116 <xs:complexType>
1117 <xs:sequence>
1118 <xs:element minOccurs="1" maxOccurs="1" name="ModuleType"
1119 type="ModuleTypes">
1120 <xs:annotation>
1121 <xs:documentation xml:lang="en-us"> One of the Enumerated module
1122 types that limit the use of a module. </xs:documentation>
1123 </xs:annotation>
1124 </xs:element>
1125 <xs:element minOccurs="1" maxOccurs="1" name="Path" type="xs:anyURI">
1126 <xs:annotation>
1127 <xs:documentation xml:lang="en-us"> For stand-alone modules that
1128 are NOT part of any package, this is the path to the root of
1129 the module as listed in the ZIP file. For modules included
1130 in a package, this is the location, relative to the root of
1131 the package (PackagePath) this module belongs to.
1132 </xs:documentation>
1133 </xs:annotation>
1134 </xs:element>
1135 <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
1136 <xs:annotation>
1137 <xs:documentation xml:lang="en-us"> This element is only
1138 required for the PEIM that produces the PCD PPI or the DXE
1139 Driver that produces the PCD Protocol. </xs:documentation>
1140 </xs:annotation>
1141 <xs:simpleType>
1142 <xs:restriction base="xs:NCName">
1143 <xs:enumeration value="PEI_PCD_DRIVER"/>
1144 <xs:enumeration value="DXE_PCD_DRIVER"/>
1145 </xs:restriction>
1146 </xs:simpleType>
1147 </xs:element>
1148
1149 <xs:element minOccurs="0" maxOccurs="1" name="UefiSpecificationVersion"
1150 type="xs:decimal"/>
1151
1152 <xs:element minOccurs="0" maxOccurs="1" name="PiSpecificationVersion"
1153 type="xs:decimal"/>
1154
1155 <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification">
1156 <xs:annotation>
1157 <xs:documentation xml:lang="en-us"> This is a list of other
1158 specifications that this module is written against. These
1159 entries can be used in #define statements (depending on the
1160 build system implementation, they may be autogenerated.)
1161 </xs:documentation>
1162 </xs:annotation>
1163 <xs:complexType>
1164 <xs:simpleContent>
1165 <xs:extension base="xs:NCName">
1166 <xs:attribute name="Version" type="xs:decimal"
1167 use="required"/>
1168 </xs:extension>
1169 </xs:simpleContent>
1170 </xs:complexType>
1171 </xs:element>
1172
1173 <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
1174 <xs:annotation>
1175 <xs:documentation xml:lang="en-us"> Different firmware execution
1176 paths may be taken based on a given state of the hardware,
1177 firmware, or through feature settings. A BootMode may be
1178 declared (PRODUCES) or discovered (CONSUMES) based on these
1179 states and feature settings. If the usage is UNDEFINE, it
1180 implies that a Boot Mode is used, but the package creator
1181 does not know how it is used. The supported boot modes map
1182 to the PI specification Boot Modes. The boot modes listed
1183 with Recovery are to indicate that the BootMode is valid
1184 during a recovery boot. </xs:documentation>
1185 </xs:annotation>
1186 <xs:complexType>
1187 <xs:sequence minOccurs="0">
1188 <xs:element minOccurs="1" maxOccurs="1"
1189 name="SupportedBootModes">
1190 <xs:simpleType>
1191 <xs:list>
1192 <xs:simpleType>
1193 <xs:restriction base="xs:NCName">
1194 <xs:enumeration value="FULL"/>
1195 <xs:enumeration value="MINIMAL"/>
1196 <xs:enumeration value="NO_CHANGE"/>
1197 <xs:enumeration value="DIAGNOSTICS"/>
1198 <xs:enumeration value="DEFAULT"/>
1199 <xs:enumeration value="S2_RESUME"/>
1200 <xs:enumeration value="S3_RESUME"/>
1201 <xs:enumeration value="S4_RESUME"/>
1202 <xs:enumeration value="S5_RESUME"/>
1203 <xs:enumeration value="FLASH_UPDATE"/>
1204 <xs:enumeration value="RECOVERY_FULL"/>
1205 <xs:enumeration value="RECOVERY_MINIMAL"/>
1206 <xs:enumeration value="RECOVERY_NO_CHANGE"/>
1207 <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>
1208 <xs:enumeration value="RECOVERY_DEFAULT"/>
1209 <xs:enumeration value="RECOVERY_S2_RESUME"/>
1210 <xs:enumeration value="RECOVERY_S3_RESUME"/>
1211 <xs:enumeration value="RECOVERY_S4_RESUME"/>
1212 <xs:enumeration value="RECOVERY_S5_RESUME"/>
1213 <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>
1214 <xs:enumeration value="UNDEFINED"/>
1215 </xs:restriction>
1216 </xs:simpleType>
1217 </xs:list>
1218 </xs:simpleType>
1219 </xs:element>
1220
1221 <xs:element ref="HelpText" minOccurs="0"
1222 maxOccurs="unbounded"/>
1223 </xs:sequence>
1224 <xs:attribute name="Usage" use="required">
1225 <xs:simpleType>
1226 <xs:restriction base="xs:NCName">
1227 <xs:enumeration value="CONSUMES">
1228 <xs:annotation>
1229 <xs:documentation xml:lang="en-us"> The module
1230 always supports the given boot modes.
1231 </xs:documentation>
1232 </xs:annotation>
1233 </xs:enumeration>
1234 <xs:enumeration value="SOMETIMES_CONSUMES">
1235 <xs:annotation>
1236 <xs:documentation xml:lang="en-us"> The module may
1237 support a given mode on some execution paths.
1238 </xs:documentation>
1239 </xs:annotation>
1240 </xs:enumeration>
1241 <xs:enumeration value="PRODUCES">
1242 <xs:annotation>
1243 <xs:documentation xml:lang="en-us"> The module
1244 will change the boot mode. </xs:documentation>
1245 </xs:annotation>
1246 </xs:enumeration>
1247 <xs:enumeration value="SOMETIME_PRODUCES">
1248 <xs:annotation>
1249 <xs:documentation xml:lang="en-us"> The module
1250 will change the boot mode on some exection paths.
1251 </xs:documentation>
1252 </xs:annotation>
1253 </xs:enumeration>
1254 <xs:enumeration value="UNDEFINED">
1255 <xs:annotation>
1256 <xs:documentation xml:lang="en-us"> The package
1257 creator does not know how the boot mode is used.
1258 </xs:documentation>
1259 </xs:annotation>
1260 </xs:enumeration>
1261 </xs:restriction>
1262 </xs:simpleType>
1263 </xs:attribute>
1264 <xs:attribute name="SupArchList" type="ArchListType"
1265 use="optional"/>
1266 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
1267 use="optional"/>
1268 </xs:complexType>
1269 </xs:element>
1270
1271 <xs:element minOccurs="0" maxOccurs="unbounded" name="Event"
1272 nillable="true">
1273 <xs:annotation>
1274 <xs:documentation xml:lang="en-us"> The functions that make up
1275 the Event, Timer, and Task Priority Services are used during
1276 preboot to create, close, signal, and wait for events; to
1277 set timers; and to raise and restore task priority levels as
1278 defined in the UEFI specification. GUIDed events should be
1279 listed in the Guids section. </xs:documentation>
1280 </xs:annotation>
1281 <xs:complexType>
1282 <xs:sequence>
1283 <xs:element ref="HelpText" minOccurs="0"
1284 maxOccurs="unbounded"/>
1285 </xs:sequence>
1286 <xs:attribute name="Usage" use="required">
1287 <xs:simpleType>
1288 <xs:restriction base="xs:NCName">
1289 <xs:enumeration value="CONSUMES">
1290 <xs:annotation>
1291 <xs:documentation xml:lang="en-us"> The module
1292 will register a notification function and calls
1293 the function when it is signaled.
1294 </xs:documentation>
1295 </xs:annotation>
1296 </xs:enumeration>
1297 <xs:enumeration value="SOMETIMES_CONSUMES">
1298 <xs:annotation>
1299 <xs:documentation xml:lang="en-us"> The module
1300 will register a notification function and calls
1301 the function when it is signaled on some execution
1302 paths. </xs:documentation>
1303 </xs:annotation>
1304 </xs:enumeration>
1305 <xs:enumeration value="PRODUCES">
1306 <xs:annotation>
1307 <xs:documentation xml:lang="en-us"> The module
1308 will signal all events in an event group.
1309 </xs:documentation>
1310 </xs:annotation>
1311 </xs:enumeration>
1312 <xs:enumeration value="SOMETIMES_PRODUCES">
1313 <xs:annotation>
1314 <xs:documentation xml:lang="en-us"> The module
1315 will signal all events in an event group under
1316 some execution paths. </xs:documentation>
1317 </xs:annotation>
1318 </xs:enumeration>
1319 <xs:enumeration value="UNDEFINED">
1320 <xs:annotation>
1321 <xs:documentation xml:lang="en-us"> The package
1322 creator does not know how an event is used.
1323 </xs:documentation>
1324 </xs:annotation>
1325 </xs:enumeration>
1326 </xs:restriction>
1327 </xs:simpleType>
1328 </xs:attribute>
1329 <xs:attribute name="EventType" use="required">
1330 <xs:simpleType>
1331 <xs:restriction base="xs:NCName">
1332 <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>
1333 <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>
1334 <xs:enumeration value="UNDEFINED"/>
1335 </xs:restriction>
1336 </xs:simpleType>
1337
1338
1339 </xs:attribute>
1340 <xs:attribute name="SupArchList" type="ArchListType"
1341 use="optional"/>
1342 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
1343 use="optional"/>
1344 </xs:complexType>
1345 </xs:element>
1346
1347 <xs:element minOccurs="0" maxOccurs="unbounded" name="HOB"
1348 nillable="false">
1349 <xs:annotation>
1350 <xs:documentation xml:lang="en-us"> This is a list of non-GUIDed
1351 Hand Off Blocks (HOBs) produced or consumed by this module.
1352 </xs:documentation>
1353 </xs:annotation>
1354 <xs:complexType>
1355 <xs:sequence>
1356 <xs:element ref="HelpText" minOccurs="0"
1357 maxOccurs="unbounded"/>
1358 </xs:sequence>
1359 <xs:attribute name="HobType" use="required">
1360 <xs:simpleType>
1361 <xs:restriction base="xs:NCName">
1362 <xs:enumeration value="PHIT"/>
1363 <xs:enumeration value="MEMORY_ALLOCATION"/>
1364 <xs:enumeration value="RESOURCE_DESCRIPTOR"/>
1365 <xs:enumeration value="FIRMWARE_VOLUME"/>
1366 <xs:enumeration value="LOAD_PEIM"/>
1367 <xs:enumeration value="UNDEFINED"/>
1368 </xs:restriction>
1369 </xs:simpleType>
1370 </xs:attribute>
1371 <xs:attribute name="Usage" use="required">
1372 <xs:simpleType>
1373 <xs:restriction base="xs:NCName">
1374 <xs:enumeration value="CONSUMES">
1375 <xs:annotation>
1376 <xs:documentation xml:lang="en-us"> A HOB must be
1377 present in the system. </xs:documentation>
1378 </xs:annotation>
1379 </xs:enumeration>
1380 <xs:enumeration value="SOMETIMES_CONSUMES">
1381 <xs:annotation>
1382 <xs:documentation xml:lang="en-us"> If present,
1383 the HOB will be used. </xs:documentation>
1384 </xs:annotation>
1385 </xs:enumeration>
1386 <xs:enumeration value="PRODUCES">
1387 <xs:annotation>
1388 <xs:documentation xml:lang="en-us"> The HOB is
1389 always produced by the module. </xs:documentation>
1390 </xs:annotation>
1391 </xs:enumeration>
1392 <xs:enumeration value="SOMETIMES_PRODUCES">
1393 <xs:annotation>
1394 <xs:documentation xml:lang="en-us"> The HOB may be
1395 produced by the module under some execution paths.
1396 </xs:documentation>
1397 </xs:annotation>
1398 </xs:enumeration>
1399 <xs:enumeration value="UNDEFINED">
1400 <xs:annotation>
1401 <xs:documentation xml:lang="en-us"> The package
1402 creator knows that a HOB is used, but does not
1403 know how it is used. </xs:documentation>
1404 </xs:annotation>
1405 </xs:enumeration>
1406 </xs:restriction>
1407 </xs:simpleType>
1408 </xs:attribute>
1409 <xs:attribute name="SupArchList" type="ArchListType"
1410 use="optional"/>
1411 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
1412 use="optional"/>
1413 </xs:complexType>
1414 </xs:element>
1415
1416 </xs:sequence>
1417 <xs:attributeGroup ref="SupportedArchMod"/>
1418 </xs:complexType>
1419 </xs:element>
1420 <!-- End of ModuleProperties Section -->
1421
1422 <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
1423 <xs:annotation>
1424 <xs:documentation xml:lang="en-us"> This section may be included for Modules
1425 that are copied from a different module. </xs:documentation>
1426 </xs:annotation>
1427 <xs:complexType>
1428 <xs:sequence>
1429 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1430 <xs:annotation>
1431 <xs:documentation xml:lang="en-us"> This GUID and the Version
1432 attribute uniquely identify the Module that this Module was
1433 copied from. </xs:documentation>
1434 </xs:annotation>
1435 <xs:complexType>
1436 <xs:simpleContent>
1437 <xs:extension base="RegistryFormatGuid">
1438 <xs:attribute name="Version" type="xs:decimal"
1439 use="required">
1440 <xs:annotation>
1441 <xs:documentation xml:lang="en-us"> This value,
1442 along with the GUID, is used to uniquely identify
1443 this object. </xs:documentation>
1444 </xs:annotation>
1445 </xs:attribute>
1446 </xs:extension>
1447 </xs:simpleContent>
1448 </xs:complexType>
1449 </xs:element>
1450 </xs:sequence>
1451 </xs:complexType>
1452 </xs:element>
1453 <!-- End of ClonedFrom Section. -->
1454
1455 <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDefinitions">
1456 <xs:annotation>
1457 <xs:documentation xml:lang="en-us"> A list of the different Library Classes
1458 consumed by a driver, core and/or application module, or produced by a
1459 Library module. </xs:documentation>
1460 </xs:annotation>
1461 <xs:complexType>
1462 <xs:sequence>
1463 <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">
1464 <xs:complexType>
1465 <xs:sequence>
1466 <xs:element minOccurs="1" maxOccurs="1" name="Keyword"
1467 type="xs:NCName">
1468 <xs:annotation>
1469 <xs:documentation xml:lang="en-us "> Used by tools
1470 to identify different instances of libraries that
1471 provide the library class. This keyword identifies
1472 the library class this module needs to be linked
1473 against. </xs:documentation>
1474 </xs:annotation>
1475 </xs:element>
1476 <xs:element minOccurs="0" maxOccurs="1"
1477 name="RecommendedInstance">
1478 <xs:complexType>
1479 <xs:all>
1480 <xs:element minOccurs="1" maxOccurs="1"
1481 name="GUID">
1482 <xs:annotation>
1483 <xs:documentation xml:lang="en-us"> This GUID and
1484 the Version attribute uniquely identify the
1485 recommended Library Instance for this module .
1486 </xs:documentation>
1487 </xs:annotation>
1488 <xs:complexType>
1489 <xs:simpleContent>
1490 <xs:extension base="RegistryFormatGuid">
1491 <xs:attribute name="Version" type="xs:decimal"
1492 use="optional">
1493 <xs:annotation>
1494 <xs:documentation xml:lang="en-us"> This value,
1495 along with the GUID, is used to uniquely identify
1496 this object. </xs:documentation>
1497 </xs:annotation>
1498 </xs:attribute>
1499 </xs:extension>
1500 </xs:simpleContent>
1501 </xs:complexType>
1502 </xs:element>
1503 </xs:all>
1504 </xs:complexType>
1505 </xs:element>
1506 <xs:element ref="HelpText" minOccurs="0"
1507 maxOccurs="unbounded"/>
1508 </xs:sequence>
1509 <xs:attribute name="Usage" use="required">
1510 <xs:simpleType>
1511 <xs:annotation>
1512 <xs:documentation xml:lang="en-us"> Library
1513 instances can provide code for a library class, or
1514 may require other library instances themselves.
1515 Since different execution paths in a library (or
1516 module) may need different library classes based
1517 on some setting, library classes may not alway be
1518 required. </xs:documentation>
1519 </xs:annotation>
1520 <xs:restriction base="xs:NCName">
1521 <xs:enumeration value="PRODUCES"/>
1522 <xs:enumeration value="CONSUMES"/>
1523 <xs:enumeration value="SOMETIMES_CONSUMES"/>
1524 <xs:enumeration value="UNDEFINED"/>
1525 </xs:restriction>
1526 </xs:simpleType>
1527 </xs:attribute>
1528
1529 <xs:attributeGroup ref="SupportedArchMod"/>
1530 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
1531 use="optional">
1532 <xs:annotation>
1533 <xs:documentation xml:lang="en-us"> A FeatureFlag
1534 attribute must evaluate to either true or false - it
1535 may be a fixed value of true or false, a C name or
1536 an in-fix expression. </xs:documentation>
1537 </xs:annotation>
1538 </xs:attribute>
1539 </xs:complexType>
1540 </xs:element>
1541 </xs:sequence>
1542 </xs:complexType>
1543 </xs:element>
1544 <!-- End of LibraryClassDefinitions Section -->
1545
1546 <xs:element minOccurs="0" maxOccurs="1" name="SourceFiles">
1547 <xs:complexType>
1548 <xs:sequence>
1549 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
1550 <xs:annotation>
1551 <xs:documentation xml:lang="en-us"> This is the module relative
1552 (ModuleProperties.Path) path and filename location within
1553 the ZIP file. </xs:documentation>
1554 </xs:annotation>
1555 <xs:complexType>
1556 <xs:simpleContent>
1557 <xs:extension base="xs:anyURI">
1558 <xs:attribute name="Family" type="FamilyTypes"
1559 use="optional">
1560 <xs:annotation>
1561 <xs:documentation xml:lang="en-us"> The Family
1562 attribute is used to restrict usage to a given
1563 family of compilers, such as GCC or MSFT. Since
1564 not all code processing tools use the same syntax,
1565 especially for assembly, this field can be used to
1566 identify different syntax. </xs:documentation>
1567 </xs:annotation>
1568 </xs:attribute>
1569 <xs:attribute name="SupArchList" type="ArchListType"
1570 use="optional"/>
1571 <xs:attribute name="SupModList" type="ModuleListType"
1572 use="optional"/>
1573 <xs:attribute name="FeatureFlag"
1574 type="xs:normalizedString" use="optional"/>
1575 </xs:extension>
1576 </xs:simpleContent>
1577 </xs:complexType>
1578 </xs:element>
1579 <xs:element ref="HelpText" minOccurs="0" maxOccurs="unbounded"/>
1580 </xs:sequence>
1581 </xs:complexType>
1582 </xs:element>
1583 <!-- End of SourceFiles Section -->
1584
1585 <xs:element minOccurs="0" maxOccurs="1" name="BinaryFiles">
1586 <xs:complexType>
1587 <xs:sequence>
1588 <xs:element minOccurs="1" maxOccurs="unbounded" name="BinaryFile">
1589 <xs:complexType>
1590 <xs:sequence>
1591 <xs:element minOccurs="1" maxOccurs="unbounded"
1592 name="Filename">
1593 <xs:annotation>
1594 <xs:documentation xml:lang="en-us"> This is the
1595 module relative (ModuleProperties.Path) path and
1596 filename location within the ZIP file.
1597 </xs:documentation>
1598 </xs:annotation>
1599 <xs:complexType>
1600 <xs:simpleContent>
1601 <xs:extension base="xs:anyURI">
1602 <xs:attribute name="FileType" use="optional">
1603 <xs:simpleType>
1604 <xs:restriction base="xs:NCName">
1605 <xs:annotation>
1606 <xs:documentation xml:lang="en-us"> Binary file
1607 distribution is limited to UEFI/PI FFS leaf
1608 section file types. </xs:documentation>
1609 </xs:annotation>
1610 <xs:enumeration value="GUID"/>
1611 <xs:enumeration value="FREEFORM"/>
1612 <xs:enumeration value="UEFI_IMAGE"/>
1613 <xs:enumeration value="PE32">
1614 <xs:annotation>
1615 <xs:documentation xml:lang="en-us"> A UEFI/PI FFS
1616 Leaf section file type, not a raw PE32 file.
1617 </xs:documentation>
1618 </xs:annotation>
1619 </xs:enumeration>
1620 <xs:enumeration value="PIC"/>
1621 <xs:enumeration value="PEI_DEPEX"/>
1622 <xs:enumeration value="DXE_DEPEX"/>
1623 <xs:enumeration value="SMM_DEPEX"/>
1624 <xs:enumeration value="COMPAT16"/>
1625 <xs:enumeration value="DISPOSABLE"/>
1626 <xs:enumeration value="TE"/>
1627 <xs:enumeration value="VER"/>
1628 <xs:enumeration value="UI"/>
1629 <xs:enumeration value="BIN"/>
1630 <xs:enumeration value="FV"/>
1631 </xs:restriction>
1632 </xs:simpleType>
1633 </xs:attribute>
1634 <xs:attribute name="SupArchList"
1635 type="ArchListType" use="optional"/>
1636 <xs:attribute name="SupModList"
1637 type="ModuleListType" use="optional"/>
1638 <xs:attribute name="FeatureFlag"
1639 type="xs:normalizedString" use="optional"/>
1640 </xs:extension>
1641 </xs:simpleContent>
1642 </xs:complexType>
1643 </xs:element>
1644 <xs:element minOccurs="0" maxOccurs="unbounded"
1645 name="AsBuilt">
1646 <xs:annotation>
1647 <xs:documentation xml:lang="en-us"> This section
1648 contains information about how the module was
1649 coded, such as Compiler Tools, Flags, PCDs (only
1650 PatchPcd and/or PcdEx) and Library Class Instances
1651 used to build the binary. </xs:documentation>
1652 </xs:annotation>
1653 <xs:complexType>
1654 <xs:sequence>
1655
1656 <xs:element minOccurs="0" maxOccurs="unbounded"
1657 name="PatchPcdValue">
1658 <xs:annotation>
1659 <xs:documentation xml:lang="en-us"> The element is
1660 the Patchable PCD Value that was used during the
1661 build. </xs:documentation>
1662 </xs:annotation>
1663 <xs:complexType>
1664 <xs:sequence>
1665 <xs:element minOccurs="1" maxOccurs="1"
1666 name="TokenSpaceGuidValue"
1667 type="RegistryFormatGuid"/>
1668 <xs:element minOccurs="1" maxOccurs="1"
1669 name="PcdCName" type="xs:NCName"/>
1670 <xs:element minOccurs="1" maxOccurs="1"
1671 name="Token">
1672 <xs:annotation>
1673 <xs:documentation xml:lang="en-us"> The minLength
1674 of 3 is required to handle the "0x" prefix to the
1675 hex number. </xs:documentation>
1676 </xs:annotation>
1677 <xs:simpleType>
1678 <xs:restriction base="HexNumber">
1679 <xs:minLength value="3"/>
1680 <xs:maxLength value="10"/>
1681 </xs:restriction>
1682 </xs:simpleType>
1683 </xs:element>
1684 <xs:element minOccurs="1" maxOccurs="1"
1685 name="DatumType" type="PcdDatumTypes"/>
1686 <xs:element minOccurs="0" maxOccurs="1"
1687 name="MaxDatumSize">
1688 <xs:annotation>
1689 <xs:documentation xml:lang="en-us"> This field is
1690 required if the Pcd Datum Type is VOID* </xs:documentation>
1691 <xs:documentation xml:lang="en-us"> The minLength
1692 of 3 is required to handle the "0x" prefix to the
1693 hex number. </xs:documentation>
1694 </xs:annotation>
1695 <xs:simpleType>
1696 <xs:restriction base="HexNumber">
1697 <xs:minLength value="3"/>
1698 </xs:restriction>
1699 </xs:simpleType>
1700 </xs:element>
1701 <xs:element minOccurs="1" maxOccurs="1"
1702 name="Value" type="xs:normalizedString"/>
1703 <xs:element minOccurs="1" maxOccurs="1"
1704 name="Offset">
1705 <xs:annotation>
1706 <xs:documentation xml:lang="en-us"> The minLength
1707 of 3 is required to handle the "0x" prefix to the
1708 hex number. </xs:documentation>
1709 </xs:annotation>
1710 <xs:simpleType>
1711 <xs:restriction base="HexNumber">
1712 <xs:minLength value="3"/>
1713 </xs:restriction>
1714 </xs:simpleType>
1715 </xs:element>
1716 <xs:element ref="HelpText" minOccurs="0"
1717 maxOccurs="unbounded"/>
1718 <xs:element minOccurs="0" maxOccurs="unbounded"
1719 name="PcdError">
1720 <xs:annotation>
1721 <xs:documentation xml:lang="en-us"> Error
1722 information implemented by the module.
1723 </xs:documentation>
1724 </xs:annotation>
1725 <xs:complexType>
1726 <xs:sequence>
1727 <xs:element minOccurs="1" maxOccurs="1"
1728 name="ErrorNumber">
1729 <xs:annotation>
1730 <xs:documentation xml:lang="en-us"> The minLength
1731 of 3 is required to handle the "0x" prefix to the
1732 hex number. </xs:documentation>
1733 </xs:annotation>
1734 <xs:simpleType>
1735 <xs:restriction base="HexNumber">
1736 <xs:minLength value="3"/>
1737 </xs:restriction>
1738 </xs:simpleType>
1739 </xs:element>
1740 <xs:element minOccurs="0" maxOccurs="unbounded"
1741 name="ErrorMessage">
1742 <xs:complexType>
1743 <xs:simpleContent>
1744 <xs:extension base="xs:string">
1745 <xs:attribute name="Lang" type="xs:language"
1746 default="en-us" use="optional"/>
1747 </xs:extension>
1748 </xs:simpleContent>
1749 </xs:complexType>
1750 </xs:element>
1751 </xs:sequence>
1752 </xs:complexType>
1753 </xs:element>
1754 </xs:sequence>
1755 </xs:complexType>
1756 </xs:element>
1757
1758 <xs:element minOccurs="0" maxOccurs="unbounded"
1759 name="PcdExValue">
1760 <xs:annotation>
1761 <xs:documentation xml:lang="en-us"> The element is
1762 the DynamicEx PCD Value that was used during the
1763 build. </xs:documentation>
1764 </xs:annotation>
1765 <xs:complexType>
1766 <xs:sequence>
1767 <xs:element minOccurs="1" maxOccurs="1"
1768 name="TokenSpaceGuidValue"
1769 type="RegistryFormatGuid"/>
1770 <xs:element minOccurs="1" maxOccurs="1"
1771 name="Token">
1772 <xs:annotation>
1773 <xs:documentation xml:lang="en-us"> The minLength
1774 of 3 is required to handle the "0x" prefix to the
1775 hex number. </xs:documentation>
1776 </xs:annotation>
1777 <xs:simpleType>
1778 <xs:restriction base="HexNumber">
1779 <xs:minLength value="3"/>
1780 <xs:maxLength value="10"/>
1781 </xs:restriction>
1782 </xs:simpleType>
1783 </xs:element>
1784 <xs:element minOccurs="1" maxOccurs="1"
1785 name="DatumType" type="PcdDatumTypes"/>
1786 <xs:element minOccurs="0" maxOccurs="1"
1787 name="MaxDatumSize">
1788 <xs:annotation>
1789 <xs:documentation xml:lang="en-us"> This field is
1790 required if the Pcd Datum Type is VOID*
1791 </xs:documentation>
1792 </xs:annotation>
1793 <xs:simpleType>
1794 <xs:restriction base="HexNumber">
1795 <xs:minLength value="3"/>
1796 </xs:restriction>
1797 </xs:simpleType>
1798 </xs:element>
1799 <xs:element minOccurs="1" maxOccurs="1"
1800 name="Value" type="xs:normalizedString"/>
1801 <xs:element ref="HelpText" minOccurs="0"
1802 maxOccurs="unbounded"/>
1803 <xs:element minOccurs="0" maxOccurs="unbounded"
1804 name="PcdError">
1805 <xs:annotation>
1806 <xs:documentation xml:lang="en-us"> Error
1807 information implemented by the module.
1808 </xs:documentation>
1809 </xs:annotation>
1810 <xs:complexType>
1811 <xs:sequence>
1812 <xs:element minOccurs="1" maxOccurs="1"
1813 name="ErrorNumber">
1814 <xs:annotation>
1815 <xs:documentation xml:lang="en-us"> The minLength
1816 of 3 is required to handle the "0x" prefix to the
1817 hex number. </xs:documentation>
1818 </xs:annotation>
1819 <xs:simpleType>
1820 <xs:restriction base="HexNumber">
1821 <xs:minLength value="3"/>
1822 </xs:restriction>
1823 </xs:simpleType>
1824 </xs:element>
1825 <xs:element minOccurs="0" maxOccurs="unbounded"
1826 name="ErrorMessage">
1827 <xs:complexType>
1828 <xs:simpleContent>
1829 <xs:extension base="xs:string">
1830 <xs:attribute name="Lang" type="xs:language"
1831 default="en-us" use="optional"/>
1832 </xs:extension>
1833 </xs:simpleContent>
1834 </xs:complexType>
1835 </xs:element>
1836 </xs:sequence>
1837 </xs:complexType>
1838 </xs:element>
1839 </xs:sequence>
1840 </xs:complexType>
1841 </xs:element>
1842
1843 <xs:element minOccurs="0" maxOccurs="1"
1844 name="LibraryInstances">
1845 <xs:annotation>
1846 <xs:documentation xml:lang="en-us"> This is the
1847 actual library instance that was used to link
1848 against the module. </xs:documentation>
1849 </xs:annotation>
1850 <xs:complexType>
1851 <xs:sequence>
1852 <xs:element minOccurs="1" maxOccurs="unbounded"
1853 name="GUID">
1854 <xs:annotation>
1855 <xs:documentation xml:lang="en-us"> This GUID and
1856 the Version attribute uniquely identify the actual
1857 Library Instance linked in this module.
1858 </xs:documentation>
1859 </xs:annotation>
1860 <xs:complexType>
1861 <xs:simpleContent>
1862 <xs:extension base="RegistryFormatGuid">
1863 <xs:attribute name="Version" type="xs:decimal"
1864 use="required">
1865 <xs:annotation>
1866 <xs:documentation xml:lang="en-us"> This value,
1867 along with the GUID, is used to uniquely identify
1868 this object. </xs:documentation>
1869 </xs:annotation>
1870 </xs:attribute>
1871 </xs:extension>
1872 </xs:simpleContent>
1873 </xs:complexType>
1874 </xs:element>
1875 </xs:sequence>
1876 </xs:complexType>
1877 </xs:element>
1878
1879 <xs:element minOccurs="0" maxOccurs="unbounded"
1880 name="BuildFlags">
1881 <xs:complexType mixed="true">
1882 <xs:simpleContent>
1883 <xs:annotation>
1884 <xs:documentation xml:lang="en-us"> Any
1885 description of OS, Tool, and flags for the
1886 individual tool can go in this section.
1887 </xs:documentation>
1888 </xs:annotation>
1889 <xs:extension base="xs:string">
1890 <xs:anyAttribute processContents="lax"/>
1891 </xs:extension>
1892 </xs:simpleContent>
1893 </xs:complexType>
1894 </xs:element>
1895 </xs:sequence>
1896 </xs:complexType>
1897 </xs:element>
1898 <!-- End of AsBuilt -->
1899 <xs:element ref="HelpText" minOccurs="0"
1900 maxOccurs="unbounded"/>
1901 </xs:sequence>
1902 </xs:complexType>
1903 </xs:element>
1904
1905 </xs:sequence>
1906 </xs:complexType>
1907 </xs:element>
1908 <!-- End of BinaryFiles Section -->
1909
1910 <xs:element minOccurs="0" maxOccurs="1" name="PackageDependencies">
1911 <xs:complexType>
1912 <xs:sequence>
1913 <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">
1914 <xs:complexType>
1915 <xs:sequence>
1916 <xs:element minOccurs="0" maxOccurs="unbounded"
1917 name="Description">
1918 <xs:complexType>
1919 <xs:simpleContent>
1920 <xs:extension base="xs:string">
1921 <xs:attribute name="Lang" type="xs:language"
1922 default="en-us" use="optional"/>
1923 </xs:extension>
1924 </xs:simpleContent>
1925 </xs:complexType>
1926 </xs:element>
1927 <xs:element minOccurs="1" maxOccurs="1" name="GUID">
1928 <xs:annotation>
1929 <xs:documentation xml:lang="en-us"> This GUID and
1930 the Version attribute uniquely identify Package
1931 that this Module depends on. </xs:documentation>
1932 </xs:annotation>
1933 <xs:complexType>
1934 <xs:simpleContent>
1935 <xs:extension base="RegistryFormatGuid">
1936 <xs:attribute name="Version" type="xs:decimal"
1937 use="optional">
1938 <xs:annotation>
1939 <xs:documentation xml:lang="en-us"> This value,
1940 along with the GUID, is used to uniquely identify
1941 this object. If the version attribute is not
1942 specified, the most recent version of the package
1943 can be used. </xs:documentation>
1944 </xs:annotation>
1945 </xs:attribute>
1946 </xs:extension>
1947 </xs:simpleContent>
1948 </xs:complexType>
1949 </xs:element>
1950 </xs:sequence>
1951 <xs:attribute name="SupArchList" type="ArchListType"
1952 use="optional"/>
1953 <xs:attribute name="SupModList" type="ModuleListType"
1954 use="optional"/>
1955 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
1956 use="optional"/>
1957 </xs:complexType>
1958 </xs:element>
1959 </xs:sequence>
1960 </xs:complexType>
1961 </xs:element>
1962 <!-- End of PackageDependencies -->
1963
1964 <xs:element minOccurs="0" maxOccurs="1" name="Guids">
1965 <xs:complexType>
1966 <xs:sequence>
1967 <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCName">
1968 <xs:complexType>
1969 <xs:sequence>
1970 <xs:element minOccurs="1" maxOccurs="1" name="CName"
1971 type="xs:NCName"/>
1972 <xs:element minOccurs="0" maxOccurs="1" name="VariableName"
1973 type="xs:normalizedString">
1974 <xs:annotation>
1975 <xs:documentation xml:lang="en-us"> Only valid for
1976 Variable GUID types. </xs:documentation>
1977 <xs:documentation> This can be either a Hex Array or
1978 C string in unicode format: L"string" Data.
1979 </xs:documentation>
1980 </xs:annotation>
1981 </xs:element>
1982 <xs:element ref="HelpText" minOccurs="0"
1983 maxOccurs="unbounded"/>
1984 </xs:sequence>
1985 <xs:attribute name="Usage" use="required">
1986 <xs:simpleType>
1987 <xs:restriction base="xs:NCName">
1988 <xs:enumeration value="CONSUMES">
1989 <xs:annotation>
1990 <xs:documentation xml:lang="en-us">The module does
1991 not install the GUID, and the GUID must be present
1992 for the module to execute. </xs:documentation>
1993 </xs:annotation>
1994 </xs:enumeration>
1995 <xs:enumeration value="SOMETIMES_CONSUMES">
1996 <xs:annotation>
1997 <xs:documentation xml:lang="en-us"> The module
1998 does not install the GUID, however, the GUID will
1999 be used if it is present. </xs:documentation>
2000 </xs:annotation>
2001 </xs:enumeration>
2002 <xs:enumeration value="PRODUCES">
2003 <xs:annotation>
2004 <xs:documentation xml:lang="en-us"> The module
2005 always installs the GUID. </xs:documentation>
2006 </xs:annotation>
2007 </xs:enumeration>
2008 <xs:enumeration value="SOMETIMES_PRODUCES">
2009 <xs:annotation>
2010 <xs:documentation xml:lang="en-us"> The Module
2011 will install the GUID under certain execution
2012 paths. </xs:documentation>
2013 </xs:annotation>
2014 </xs:enumeration>
2015 <xs:enumeration value="UNDEFINED">
2016 <xs:annotation>
2017 <xs:documentation xml:lang="en-us"> The package
2018 creator knows that a GUID is used, but does not
2019 know how it is used. </xs:documentation>
2020 </xs:annotation>
2021 </xs:enumeration>
2022 </xs:restriction>
2023 </xs:simpleType>
2024 </xs:attribute>
2025 <xs:attribute name="GuidType" type="GuidListType" use="required"/>
2026 <xs:attribute name="SupArchList" type="ArchListType"
2027 use="optional"/>
2028 <xs:attribute name="SupModList" type="ModuleListType"
2029 use="optional"/>
2030 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
2031 use="optional"/>
2032 </xs:complexType>
2033 </xs:element>
2034 </xs:sequence>
2035 </xs:complexType>
2036 </xs:element>
2037 <!-- End of Guids Section -->
2038
2039 <xs:element minOccurs="0" maxOccurs="1" name="Protocols">
2040 <xs:annotation>
2041 <xs:documentation xml:lang="en-us"> A listing of protocols required or
2042 produced by this module. </xs:documentation>
2043 </xs:annotation>
2044 <xs:complexType>
2045 <xs:sequence>
2046 <xs:element minOccurs="1" maxOccurs="unbounded" name="Protocol"
2047 nillable="true">
2048 <xs:complexType>
2049 <xs:sequence>
2050 <xs:element minOccurs="1" maxOccurs="1" name="CName"
2051 type="xs:NCName"/>
2052 <xs:element ref="HelpText" minOccurs="0"
2053 maxOccurs="unbounded"/>
2054 </xs:sequence>
2055 <xs:attribute name="Usage" use="required">
2056 <xs:simpleType>
2057 <xs:restriction base="xs:NCName">
2058 <xs:enumeration value="PRODUCES"/>
2059 <xs:enumeration value="SOMETIMES_PRODUCES"/>
2060 <xs:enumeration value="CONSUMES"/>
2061 <xs:enumeration value="SOMETIMES_CONSUMES"/>
2062 <xs:enumeration value="TO_START"/>
2063 <xs:enumeration value="BY_START"/>
2064 <xs:enumeration value="UNDEFINED"/>
2065 </xs:restriction>
2066 </xs:simpleType>
2067 </xs:attribute>
2068 <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
2069 <xs:attribute name="SupArchList" type="ArchListType"
2070 use="optional"/>
2071 <xs:attribute name="SupModList" type="ModuleListType"
2072 use="optional"/>
2073 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
2074 use="optional"/>
2075 </xs:complexType>
2076 </xs:element>
2077 </xs:sequence>
2078 </xs:complexType>
2079 </xs:element>
2080 <!-- End of Protocols Section -->
2081
2082 <xs:element minOccurs="0" maxOccurs="1" name="PPIs">
2083 <xs:annotation>
2084 <xs:documentation xml:lang="en-us"> A listing of PPIs required or produced
2085 by this module. </xs:documentation>
2086 </xs:annotation>
2087 <xs:complexType>
2088 <xs:sequence>
2089 <xs:element minOccurs="1" maxOccurs="unbounded" name="Ppi"
2090 nillable="true">
2091 <xs:complexType>
2092 <xs:sequence>
2093 <xs:element minOccurs="1" maxOccurs="1" name="CName"
2094 type="xs:NCName"/>
2095 <xs:element ref="HelpText" minOccurs="0"
2096 maxOccurs="unbounded"/>
2097 </xs:sequence>
2098 <xs:attribute name="Usage" use="required">
2099 <xs:simpleType>
2100 <xs:restriction base="xs:NCName">
2101 <xs:enumeration value="PRODUCES"/>
2102 <xs:enumeration value="SOMETIMES_PRODUCES"/>
2103 <xs:enumeration value="CONSUMES"/>
2104 <xs:enumeration value="SOMETIMES_CONSUMES"/>
2105 <xs:enumeration value="UNDEFINED"/>
2106 </xs:restriction>
2107 </xs:simpleType>
2108 </xs:attribute>
2109 <xs:attribute name="Notify" type="xs:boolean" use="optional"/>
2110 <xs:attribute name="SupArchList" type="ArchListType"
2111 use="optional"/>
2112 <xs:attribute name="SupModList" type="ModuleListType"
2113 use="optional"/>
2114 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
2115 use="optional"/>
2116 </xs:complexType>
2117 </xs:element>
2118 </xs:sequence>
2119 </xs:complexType>
2120 </xs:element>
2121 <!-- End of PPIs Section -->
2122
2123 <xs:element minOccurs="0" maxOccurs="1" name="Externs">
2124 <xs:annotation>
2125 <xs:documentation xml:lang="en-us"> These elements specify additional
2126 information about the module. This area may be used by tools to generate
2127 code. </xs:documentation>
2128 </xs:annotation>
2129 <xs:complexType>
2130 <xs:sequence>
2131 <xs:element minOccurs="1" maxOccurs="unbounded" name="Extern">
2132 <xs:complexType>
2133 <xs:sequence>
2134 <xs:choice minOccurs="1">
2135 <xs:sequence>
2136 <xs:element minOccurs="0" maxOccurs="1"
2137 name="EntryPoint" type="xs:NCName"/>
2138 <xs:element minOccurs="0" maxOccurs="1"
2139 name="UnloadImage" type="xs:NCName"/>
2140 </xs:sequence>
2141 <xs:sequence>
2142 <xs:element minOccurs="0" maxOccurs="1"
2143 name="Constructor" type="xs:NCName"/>
2144 <xs:element minOccurs="0" maxOccurs="1"
2145 name="Destructor" type="xs:NCName"/>
2146 </xs:sequence>
2147 </xs:choice>
2148 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2149 </xs:sequence>
2150 <xs:attribute name="SupArchList" type="ArchListType"
2151 use="optional"/>
2152 <xs:attribute name="SupModList" type="ModuleListType"
2153 use="optional"/>
2154 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
2155 use="optional"/>
2156 </xs:complexType>
2157 </xs:element>
2158 </xs:sequence>
2159 </xs:complexType>
2160 </xs:element>
2161 <!-- End of Externs Section -->
2162
2163 <xs:element minOccurs="0" maxOccurs="1" name="PcdCoded">
2164 <xs:annotation>
2165 <xs:documentation xml:lang="en-us"> This section describes how a platform is
2166 coded with respect to the platform configuration knobs.
2167 </xs:documentation>
2168 </xs:annotation>
2169 <xs:complexType>
2170 <xs:sequence>
2171 <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
2172 <xs:complexType>
2173 <xs:sequence>
2174 <xs:element minOccurs="1" maxOccurs="1" name="CName"
2175 type="xs:NCName"/>
2176 <xs:element minOccurs="1" maxOccurs="1"
2177 name="TokenSpaceGuidCName" type="xs:NCName"/>
2178 <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue"
2179 type="xs:normalizedString"/>
2180 <xs:element ref="HelpText" minOccurs="0"
2181 maxOccurs="unbounded"/>
2182 </xs:sequence>
2183 <xs:attribute name="PcdItemType" type="PcdItemTypes"
2184 use="required"/>
2185 <xs:attribute name="PcdUsage" use="required">
2186 <xs:simpleType>
2187 <xs:restriction base="xs:NCName">
2188 <xs:enumeration value="PRODUCES"/>
2189 <xs:enumeration value="SOMETIMES_PRODUCES"/>
2190 <xs:enumeration value="CONSUMES"/>
2191 <xs:enumeration value="SOMETIMES_CONSUMES"/>
2192 <xs:enumeration value="UNDEFINED"/>
2193 </xs:restriction>
2194 </xs:simpleType>
2195
2196
2197 </xs:attribute>
2198 <xs:attribute name="SupArchList" type="ArchListType"
2199 use="optional"/>
2200 <xs:attribute name="SupModList" type="ModuleListType"
2201 use="optional"/>
2202 <xs:attribute name="FeatureFlag" type="xs:normalizedString"
2203 use="optional"/>
2204 </xs:complexType>
2205 </xs:element>
2206 </xs:sequence>
2207 </xs:complexType>
2208 </xs:element>
2209 <!-- End of PcdCoded Section -->
2210
2211 <xs:element minOccurs="0" maxOccurs="unbounded" name="PeiDepex">
2212 <xs:annotation>
2213 <xs:documentation xml:lang="en-us"> This is the PEI dependency expression
2214 for a Dependency Section. </xs:documentation>
2215 </xs:annotation>
2216 <xs:complexType>
2217 <xs:sequence>
2218 <xs:element name="Expression" type="xs:string" minOccurs="1"
2219 maxOccurs="1">
2220 <xs:annotation>
2221 <xs:documentation xml:lang="en-us"> An in-fix expression, of C
2222 identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
2223 as well as parenthesis () in the in-fix notation. The
2224 operators are restricted to grammar defined in the PI
2225 specification. </xs:documentation>
2226 </xs:annotation>
2227 </xs:element>
2228 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2229 </xs:sequence>
2230 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2231 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2232 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
2233 </xs:complexType>
2234 </xs:element>
2235 <!-- End of PeiDepex Section -->
2236
2237 <xs:element minOccurs="0" maxOccurs="unbounded" name="DxeDepex">
2238 <xs:annotation>
2239 <xs:documentation xml:lang="en-us"> This is the DXE dependency expression
2240 for a Dependency Section. </xs:documentation>
2241 </xs:annotation>
2242 <xs:complexType>
2243 <xs:sequence>
2244 <xs:element name="Expression" type=" xs:string " minOccurs="1"
2245 maxOccurs="1">
2246 <xs:annotation>
2247 <xs:documentation xml:lang="en-us"> An in-fix expression, of C
2248 identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
2249 as well as parenthesis () in the in-fix notation. The
2250 operators are restricted to grammar defined in the PI
2251 specification. </xs:documentation>
2252 </xs:annotation>
2253 </xs:element>
2254 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2255 </xs:sequence>
2256 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2257 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2258 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
2259 </xs:complexType>
2260 </xs:element>
2261 <!-- End of DxeDepex Section -->
2262
2263 <xs:element minOccurs="0" maxOccurs="unbounded" name="SmmDepex">
2264 <xs:annotation>
2265 <xs:documentation xml:lang="en-us"> This is the SMM dependency expression
2266 for a Dependency Section. </xs:documentation>
2267 </xs:annotation>
2268 <xs:complexType>
2269 <xs:sequence>
2270 <xs:element name="Expression" type=" xs:string " minOccurs="1"
2271 maxOccurs="1">
2272 <xs:annotation>
2273 <xs:documentation xml:lang="en-us"> An in-fix expression, of C
2274 identifiers and TRUE, FALSE, AND, OR, NOT, BEFORE, and AFTER
2275 as well as parenthesis () in the in-fix notation. The
2276 operators are restricted to grammar defined in the PI
2277 specification. </xs:documentation>
2278 </xs:annotation>
2279 </xs:element>
2280 <xs:element ref="HelpText" minOccurs="0" maxOccurs="1"/>
2281 </xs:sequence>
2282 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2283 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2284 <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>
2285 </xs:complexType>
2286 </xs:element>
2287 <!-- End of SmmDepex Section -->
2288
2289
2290 <xs:element minOccurs="0" maxOccurs="1" name="MiscellaneousFiles">
2291 <xs:annotation>
2292 <xs:documentation xml:lang="en-us"> This section is used to provide comments
2293 and/or list auxiliary files, such as pdb or map files.
2294 </xs:documentation>
2295 </xs:annotation>
2296 <xs:complexType>
2297 <xs:sequence>
2298 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
2299 <xs:complexType>
2300 <xs:simpleContent>
2301 <xs:extension base="xs:string">
2302 <xs:attribute name="Lang" type="xs:language"
2303 default="en-us" use="optional"/>
2304 </xs:extension>
2305 </xs:simpleContent>
2306 </xs:complexType>
2307 </xs:element>
2308 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
2309 <xs:annotation>
2310 <xs:documentation xml:lang="en-us"> This is the path and
2311 filename location within the ZIP file. </xs:documentation>
2312 </xs:annotation>
2313 <xs:complexType>
2314 <xs:simpleContent>
2315 <xs:extension base="xs:anyURI">
2316 <xs:attribute name="Executable" type="xs:boolean"
2317 default="false" use="optional">
2318 <xs:annotation>
2319 <xs:documentation xml:lang="en-us"> If true, used
2320 by installation tools to ensure that a file that
2321 must be executable has the correct properties to
2322 permit execution. </xs:documentation>
2323 </xs:annotation>
2324 </xs:attribute>
2325 </xs:extension>
2326 </xs:simpleContent>
2327 </xs:complexType>
2328 </xs:element>
2329 </xs:sequence>
2330 </xs:complexType>
2331 </xs:element>
2332 <!-- End of Module Surface Area Misc Section -->
2333
2334 <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
2335 <xs:annotation>
2336 <xs:documentation xml:lang="en-us"> This section is used for any processing
2337 instructions that may be custom to the content provided by the
2338 distribution that are common to module. </xs:documentation>
2339 <xs:documentation xml:lang="en-us"> The content is vendor specific. </xs:documentation>
2340 <xs:documentation xml:lang="en-us"> The content can be plain text as well as
2341 any user-defined, properly formatted XML structure. </xs:documentation>
2342 </xs:annotation>
2343 <xs:complexType mixed="true">
2344 <xs:attribute name="UserId" type="xs:NCName" use="required">
2345 <xs:annotation>
2346 <xs:documentation xml:lang="en-us"> This is a single word identifier
2347 for grouping similar content. For example, ReferenceBuild might
2348 be used to identify non-PI compliant build steps, with two
2349 different UserExtensions sections, one with an Identifier of
2350 Prebuild, and another of PostBuild. Both UserExtensions sections
2351 would use the same UserId. </xs:documentation>
2352 </xs:annotation>
2353 </xs:attribute>
2354 <xs:attribute name="Identifier" type="xs:string" use="required">
2355 <xs:annotation>
2356 <xs:documentation xml:lang="en-us"> This can be any string used to
2357 differentiate or identify this section from other UserExtensions
2358 sections. </xs:documentation>
2359 <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
2360 Identifier might indicate specific steps and tools required
2361 before processing module content, while a different
2362 UserExtensions section with a POST_PROCESS Identifier might
2363 describe steps that need to be executed after operations on this
2364 module. </xs:documentation>
2365 </xs:annotation>
2366 </xs:attribute>
2367 <xs:anyAttribute processContents="lax"/>
2368 </xs:complexType>
2369 </xs:element>
2370 <!-- End of Module Surface Area UserExtensions Section -->
2371
2372 </xs:sequence>
2373 <xs:attribute name="BinaryModule" type="xs:boolean" default="false" use="optional">
2374 <xs:annotation>
2375 <xs:documentation xml:lang="en-us"> This attribute is used when the binaries are
2376 distributed for this module and no code generation from source files is
2377 required. If set, then the BinaryFiles section should be used, and any files
2378 listed in the SourceFiles section do not have to be built. Additionally, the
2379 AsBuilt section for each binary file must be included. </xs:documentation>
2380 </xs:annotation>
2381 </xs:attribute>
2382 </xs:complexType>
2383
2384 </xs:element>
2385 <!-- End of the ModuleSurfaceArea element. -->
2386
2387 <xs:element name="Tools">
2388 <xs:complexType>
2389 <xs:sequence>
2390 <xs:element minOccurs="0" maxOccurs="1" name="Header">
2391 <xs:complexType>
2392 <xs:sequence>
2393 <xs:element minOccurs="1" maxOccurs="1" name="Name"
2394 type="xs:normalizedString">
2395 <xs:annotation>
2396 <xs:documentation xml:lang="en-us">This is the User Interface
2397 Name for this Tools Distribution.</xs:documentation>
2398 </xs:annotation>
2399 </xs:element>
2400 <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
2401 type="xs:string">
2402 <xs:annotation>
2403 <xs:documentation xml:lang="en-us"> This is only required if the
2404 Copyright is different from the Distribution Package
2405 copyright. </xs:documentation>
2406 </xs:annotation>
2407 </xs:element>
2408 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
2409 <xs:annotation>
2410 <xs:documentation xml:lang="en-us"> This is only required if the
2411 License is different from the Distribution Package license.
2412 </xs:documentation>
2413 </xs:annotation>
2414 </xs:element>
2415 <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
2416 type="xs:normalizedString">
2417 <xs:annotation>
2418 <xs:documentation xml:lang="en-us"> This is only required if the
2419 Abstract is different from the Distribution Package
2420 Abstract. </xs:documentation>
2421 </xs:annotation>
2422 </xs:element>
2423 <xs:element minOccurs="0" maxOccurs="1" name="Description"
2424 type="xs:string">
2425 <xs:annotation>
2426 <xs:documentation xml:lang="en-us"> This is only required if the
2427 Description is different from the Distribution Package
2428 Description. </xs:documentation>
2429 </xs:annotation>
2430 </xs:element>
2431 </xs:sequence>
2432 </xs:complexType>
2433 </xs:element>
2434 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
2435 <xs:annotation>
2436 <xs:documentation xml:lang="en-us"> This is the path and filename location
2437 within the ZIP file. </xs:documentation>
2438 </xs:annotation>
2439 <xs:complexType>
2440 <xs:simpleContent>
2441 <xs:extension base="xs:anyURI">
2442 <xs:attribute name="OS" type="SupportedOs" use="optional">
2443 <xs:annotation>
2444 <xs:documentation xml:lang="en-us"> This is required for
2445 tools that execute; it should not be used for
2446 configuration files. </xs:documentation>
2447 </xs:annotation>
2448 </xs:attribute>
2449 <xs:attribute name="Executable" type="xs:boolean" default="false"
2450 use="optional">
2451 <xs:annotation>
2452 <xs:documentation xml:lang="en-us"> If true, used by
2453 installation tools to ensure that a file that must be
2454 executable has the correct properties to permit
2455 execution. </xs:documentation>
2456 </xs:annotation>
2457 </xs:attribute>
2458 </xs:extension>
2459 </xs:simpleContent>
2460 </xs:complexType>
2461 </xs:element>
2462 </xs:sequence>
2463 </xs:complexType>
2464 </xs:element>
2465 <!-- End of the Tools element. -->
2466
2467 <xs:element name="MiscellaneousFiles">
2468 <xs:annotation>
2469 <xs:documentation xml:lang="en-us"> This section contains a list of files that are not
2470 part of the code distributed with modules, packages or tools. </xs:documentation>
2471 </xs:annotation>
2472 <xs:complexType>
2473 <xs:sequence>
2474 <xs:element minOccurs="0" maxOccurs="1" name="Header">
2475 <xs:complexType>
2476 <xs:sequence>
2477 <xs:element minOccurs="0" maxOccurs="1" name="Name"
2478 type="xs:normalizedString">
2479 <xs:annotation>
2480 <xs:documentation xml:lang="en-us"> The User interface name for
2481 this content. </xs:documentation>
2482 </xs:annotation>
2483 </xs:element>
2484 <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
2485 type="xs:string">
2486 <xs:annotation>
2487 <xs:documentation xml:lang="en-us"> This is only required if the
2488 Copyright is different from the Distribution Package
2489 Copyright. </xs:documentation>
2490 </xs:annotation>
2491 </xs:element>
2492 <xs:element minOccurs="0" maxOccurs="1" name="License" type="xs:string">
2493 <xs:annotation>
2494 <xs:documentation xml:lang="en-us"> This is only required if the
2495 License is different from the Distribution Package License.
2496 </xs:documentation>
2497 </xs:annotation>
2498 </xs:element>
2499 <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
2500 type="xs:normalizedString"/>
2501 <xs:element minOccurs="0" maxOccurs="unbounded" name="Description">
2502 <xs:complexType>
2503 <xs:simpleContent>
2504 <xs:extension base="xs:string">
2505 <xs:attribute name="Lang" type="xs:language"
2506 default="en-us" use="optional"/>
2507 </xs:extension>
2508 </xs:simpleContent>
2509 </xs:complexType>
2510 </xs:element>
2511 </xs:sequence>
2512 </xs:complexType>
2513 </xs:element>
2514 <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">
2515 <xs:annotation>
2516 <xs:documentation xml:lang="en-us"> This is the path and filename location
2517 within the ZIP file. </xs:documentation>
2518 </xs:annotation>
2519 <xs:complexType>
2520 <xs:simpleContent>
2521 <xs:extension base="xs:anyURI">
2522 <xs:attribute name="Executable" type="xs:boolean" default="false"
2523 use="optional">
2524 <xs:annotation>
2525 <xs:documentation xml:lang="en-us"> If true, used by
2526 installation tools to ensure that a file that must be
2527 executable has the correct properties to permit
2528 execution. </xs:documentation>
2529 </xs:annotation>
2530 </xs:attribute>
2531 </xs:extension>
2532 </xs:simpleContent>
2533 </xs:complexType>
2534 </xs:element>
2535 </xs:sequence>
2536 </xs:complexType>
2537 </xs:element>
2538 <!-- End of the Misc element. -->
2539
2540 <xs:element name="UserExtensions">
2541 <xs:complexType mixed="true">
2542 <xs:sequence>
2543 <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
2544 </xs:sequence>
2545 <xs:attribute name="UserId" type="xs:NCName" use="required">
2546 <xs:annotation>
2547 <xs:documentation xml:lang="en-us"> This is a single word identifier for
2548 grouping similar content. For example, ReferenceBuild might be used to
2549 identify non-PI compliant build steps, with two different UserExtensions
2550 sections, one with an Identifier of Prebuild, and another of PostBuild. Both
2551 UserExtensions sections would use the same UserId. </xs:documentation>
2552 </xs:annotation>
2553 </xs:attribute>
2554 <xs:attribute name="Identifier" type="xs:string" use="optional">
2555 <xs:annotation>
2556 <xs:documentation xml:lang="en-us"> This can be any string used to differentiate
2557 or identify this section from other UserExtensions sections. </xs:documentation>
2558 <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS Identifier might
2559 indicate specific steps and tools required before processing distribution
2560 package content, while a different UserExtensions section with a
2561 POST_PROCESS Identifier might describe steps that need to be executed after
2562 operations on this content. </xs:documentation>
2563 </xs:annotation>
2564 </xs:attribute>
2565 <xs:anyAttribute processContents="lax"/>
2566 </xs:complexType>
2567 </xs:element>
2568 <!-- The following elsements are common definitions used with the ref attribute for elements. -->
2569
2570 <xs:element name="HelpText">
2571 <xs:complexType>
2572 <xs:simpleContent>
2573 <xs:extension base="xs:string">
2574 <xs:attribute name="Lang" type="xs:language" default="en-us" use="optional"/>
2575 </xs:extension>
2576 </xs:simpleContent>
2577 </xs:complexType>
2578 </xs:element>
2579
2580 <!-- The following attribute groups are used in various elements above. -->
2581
2582 <xs:attributeGroup name="SupportedArchMod">
2583 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
2584 <xs:attribute name="SupModList" type="ModuleListType" use="optional"/>
2585 </xs:attributeGroup>
2586
2587 <!-- The following data types are used to restrict content. -->
2588
2589 <xs:simpleType name="ArchListType">
2590 <xs:list itemType="ArchTypes"/>
2591 </xs:simpleType>
2592
2593 <xs:simpleType name="ArchTypes">
2594 <xs:restriction base="xs:NCName">
2595 <xs:enumeration value="IA32"/>
2596 <xs:enumeration value="X64"/>
2597 <xs:enumeration value="IPF"/>
2598 <xs:enumeration value="EBC"/>
2599 <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
2600 <xs:annotation>
2601 <xs:documentation xml:lang="en-us"> Any processor architecture not listed above.
2602 The Architecture must be a target architecture of one or more compiler tool
2603 chains. </xs:documentation>
2604 </xs:annotation>
2605 </xs:pattern>
2606 </xs:restriction>
2607 </xs:simpleType>
2608
2609
2610 <xs:simpleType name="FamilyTypes">
2611 <xs:restriction base="xs:NCName">
2612 <xs:enumeration value="MSFT"/>
2613 <xs:enumeration value="GCC"/>
2614 <xs:pattern value="[A-Z][a-zA-Z0-9]*">
2615 <xs:annotation>
2616 <xs:documentation xml:lang="en-us"> Any other family of build utilities for
2617 which compiler tools exist. </xs:documentation>
2618 </xs:annotation>
2619 </xs:pattern>
2620 </xs:restriction>
2621 </xs:simpleType>
2622
2623 <xs:simpleType name="GuidListType">
2624 <xs:list itemType="GuidTypes"/>
2625 </xs:simpleType>
2626
2627 <xs:simpleType name="GuidTypes">
2628 <xs:restriction base="xs:NCName">
2629 <xs:enumeration value="Event"/>
2630 <xs:enumeration value="File"/>
2631 <xs:enumeration value="FV"/>
2632 <xs:enumeration value="GUID"/>
2633 <xs:enumeration value="Hii"/>
2634 <xs:enumeration value="HOB"/>
2635 <xs:enumeration value="SystemTable"/>
2636 <xs:enumeration value="TokenSpaceGuid"/>
2637 <xs:enumeration value="Variable"/>
2638 <xs:enumeration value="UNDEFINED"/>
2639 </xs:restriction>
2640 </xs:simpleType>
2641
2642 <xs:simpleType name="HexNumber">
2643 <xs:restriction base="xs:hexBinary">
2644 <xs:pattern value="0x([a-fA-F0-9])+"/>
2645 </xs:restriction>
2646 </xs:simpleType>
2647
2648 <xs:simpleType name="Md5Sum">
2649 <xs:restriction base="xs:normalizedString">
2650 <xs:pattern value="[a-zA-Z0-9]{32}"/>
2651 </xs:restriction>
2652 </xs:simpleType>
2653
2654 <xs:simpleType name="ModuleListType">
2655 <xs:list itemType="ModuleTypes"/>
2656 </xs:simpleType>
2657
2658 <xs:simpleType name="ModuleTypes">
2659 <xs:annotation>
2660 <xs:documentation xml:lang="en-us"> The following module types are defined by
2661 specifications. </xs:documentation>
2662 <xs:documentation xml:lang="en-us"> Module types for components and libraries defined
2663 for this distribution mechanism. </xs:documentation>
2664 </xs:annotation>
2665 <xs:restriction base="xs:NCName">
2666 <xs:enumeration value="BASE ">
2667 <xs:annotation>
2668 <xs:documentation xml:lang="en-us"> Use of this module is not restricted.
2669 </xs:documentation>
2670 </xs:annotation>
2671 </xs:enumeration>
2672 <xs:enumeration value="DXE_CORE">
2673 <xs:annotation>
2674 <xs:documentation xml:lang="en-us"> This module is only applicable to the DXE
2675 core. </xs:documentation>
2676 </xs:annotation>
2677 </xs:enumeration>
2678 <xs:enumeration value="DXE_DRIVER">
2679 <xs:annotation>
2680 <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
2681 driver. </xs:documentation>
2682 </xs:annotation>
2683 </xs:enumeration>
2684 <xs:enumeration value="DXE_RUNTIME_DRIVER">
2685 <xs:annotation>
2686 <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE
2687 runtime driver. </xs:documentation>
2688 </xs:annotation>
2689 </xs:enumeration>
2690 <xs:enumeration value="DXE_SAL_DRIVER">
2691 <xs:annotation>
2692 <xs:documentation xml:lang="en-us"> This module is only applicable to an IPF DXE
2693 runtime driver. </xs:documentation>
2694 </xs:annotation>
2695 </xs:enumeration>
2696 <xs:enumeration value="DXE_SMM_DRIVER">
2697 <xs:annotation>
2698 <xs:documentation xml:lang="en-us"> This module is only applicable to a DXE SMM
2699 driver. </xs:documentation>
2700 </xs:annotation>
2701 </xs:enumeration>
2702 <xs:enumeration value="PEI_CORE">
2703 <xs:annotation>
2704 <xs:documentation xml:lang="en-us"> This module is only applicable to the PEI
2705 core. </xs:documentation>
2706 </xs:annotation>
2707 </xs:enumeration>
2708 <xs:enumeration value="PEIM">
2709 <xs:annotation>
2710 <xs:documentation xml:lang="en-us"> This module is only valid for PEI modules.
2711 </xs:documentation>
2712 </xs:annotation>
2713 </xs:enumeration>
2714 <xs:enumeration value="SEC">
2715 <xs:annotation>
2716 <xs:documentation xml:lang="en-us"> This module is only applicable to Security
2717 phase. </xs:documentation>
2718 </xs:annotation>
2719 </xs:enumeration>
2720 <xs:enumeration value="UEFI_DRIVER">
2721 <xs:annotation>
2722 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI drivers.
2723 </xs:documentation>
2724 </xs:annotation>
2725 </xs:enumeration>
2726 <xs:enumeration value="UEFI_RUNTIME_DRIVER">
2727 <xs:annotation>
2728 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI runtime
2729 drivers.</xs:documentation>
2730 </xs:annotation>
2731 </xs:enumeration>
2732 <xs:enumeration value="UEFI_APPLICATION">
2733 <xs:annotation>
2734 <xs:documentation xml:lang="en-us"> This module is only valid for UEFI
2735 applications. </xs:documentation>
2736 </xs:annotation>
2737 </xs:enumeration>
2738 <xs:enumeration value="SMM_CORE">
2739 <xs:annotation>
2740 <xs:documentation xml:lang="en-us"> This module is only applicable to the SMM
2741 core.</xs:documentation>
2742 </xs:annotation>
2743 </xs:enumeration>
2744 <xs:enumeration value="USER_DEFINED">
2745 <xs:annotation>
2746 <xs:documentation xml:lang="en-us"> This content is restricted to a specific
2747 implementation. </xs:documentation>
2748 </xs:annotation>
2749 </xs:enumeration>
2750 <xs:enumeration value="UNDEFINED">
2751 <xs:annotation>
2752 <xs:documentation xml:lang="en-us"> This enumeration is for use in a list that
2753 where the package creator does not know the what module types are supported
2754 by a module. </xs:documentation>
2755 </xs:annotation>
2756 </xs:enumeration>
2757 <xs:pattern value="([A-Z])([a-zA-Z0-9])*">
2758 <xs:annotation>
2759 <xs:documentation xml:lang="en-us"> This pattern has been added for use in a
2760 module lists - for future expansion. </xs:documentation>
2761 </xs:annotation>
2762 </xs:pattern>
2763 </xs:restriction>
2764 </xs:simpleType>
2765
2766 <xs:simpleType name="PcdDatumTypes">
2767 <xs:annotation>
2768 <xs:documentation xml:lang="en-us"> The following data types are defined by the PCD
2769 specification (or PCD section of the UEFI/PI specifications.) </xs:documentation>
2770 </xs:annotation>
2771 <xs:restriction base="xs:normalizedString">
2772 <xs:enumeration value="UINT8"/>
2773 <xs:enumeration value="UINT16"/>
2774 <xs:enumeration value="UINT32"/>
2775 <xs:enumeration value="UINT64"/>
2776 <xs:enumeration value="BOOLEAN"/>
2777 <xs:enumeration value="VOID*"/>
2778 </xs:restriction>
2779 </xs:simpleType>
2780
2781 <xs:simpleType name="PcdItemListType">
2782 <xs:list itemType="PcdItemTypes"/>
2783 </xs:simpleType>
2784
2785 <xs:simpleType name="PcdItemTypes">
2786 <xs:restriction base="xs:NCName">
2787 <xs:enumeration value="FeaturePcd">
2788 <xs:annotation>
2789 <xs:documentation xml:lang="en-us"> The Feature PCD is a binary, evaluating to
2790 either true or false. This is used during build to include/exclude content.
2791 It can also be used during execution to force execution paths within
2792 drivers, or to enable/disable features within a driver for a given platform.
2793 </xs:documentation>
2794 </xs:annotation>
2795 </xs:enumeration>
2796 <xs:enumeration value="FixedPcd">
2797 <xs:annotation>
2798 <xs:documentation xml:lang="en-us"> The Fixed PCD is a #define value that is set
2799 at build time. </xs:documentation>
2800 </xs:annotation>
2801 </xs:enumeration>
2802 <xs:enumeration value="PatchPcd">
2803 <xs:annotation>
2804 <xs:documentation xml:lang="en-us"> The Patch PCD is a #define that is set at
2805 build time, and that can be modified within a binary file. Additional
2806 information, such as the offset location of the value, along with it's
2807 length may need to be provided.</xs:documentation>
2808 </xs:annotation>
2809 </xs:enumeration>
2810 <xs:enumeration value="Pcd">
2811 <xs:annotation>
2812 <xs:documentation xml:lang="en-us"> This PCD type has an overloaded definition.
2813 Prior to build, the platform integrator may choose to implement a PCD as
2814 Fixed, Patchable or a Dynamic PCD. If the platform integrator choose to use
2815 the PCD as dynamic, then a PCD driver is required in the platform
2816 (PEI/DXE/both) to track the PCD in some sort of 'database' of these items.
2817 For Dynamic PCDs, the PcdGet* must pass in the token space guid and the
2818 token number to retrieve data (PcdSet* also needs these values.)
2819 </xs:documentation>
2820 </xs:annotation>
2821 </xs:enumeration>
2822 <xs:enumeration value="PcdEx">
2823 <xs:annotation>
2824 <xs:documentation xml:lang="en-us"> The PCD can only be used as Dynamic, and the
2825 platform firmware must contain a driver to maintain a 'database' of these
2826 items. For Dynamic PCDs, the PcdGet* must pass in the token space guid and
2827 the token number to retrieve data (PcdSet* also needs these values.)
2828 </xs:documentation>
2829 </xs:annotation>
2830 </xs:enumeration>
2831 </xs:restriction>
2832 </xs:simpleType>
2833
2834
2835
2836 <xs:simpleType name="RegistryFormatGuid">
2837 <xs:annotation>
2838 <xs:documentation xml:lang="en-us"> A GUID must contain five different Hexadecimal
2839 character sets that are separated by a dash (-) character. </xs:documentation>
2840 </xs:annotation>
2841 <xs:restriction base="xs:string">
2842 <xs:pattern
2843 value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"
2844 />
2845 </xs:restriction>
2846 </xs:simpleType>
2847
2848 <xs:simpleType name="SupportedOs">
2849 <xs:annotation>
2850 <xs:documentation xml:lang="en-us"> The EDK II build system supports workstations
2851 running one of the following supported operating systems. This is the OS for the
2852 developer's workstation, not the target platform. </xs:documentation>
2853 </xs:annotation>
2854 <xs:restriction base="xs:string">
2855 <xs:enumeration value="Win32">
2856 <xs:annotation>
2857 <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
2858 Vista. </xs:documentation>
2859 </xs:annotation>
2860 </xs:enumeration>
2861 <xs:enumeration value="Win64">
2862 <xs:annotation>
2863 <xs:documentation xml:lang="en-us"> For Windows 2003, Windows XP and Windows
2864 Vista. </xs:documentation>
2865 </xs:annotation>
2866 </xs:enumeration>
2867 <xs:enumeration value="Linux32"/>
2868 <xs:enumeration value="Linux64"/>
2869 <xs:enumeration value="OS/X32"/>
2870 <xs:enumeration value="OS/X64"/>
2871 <xs:enumeration value="GenericWin">
2872 <xs:annotation>
2873 <xs:documentation xml:lang="en-us"> Typically, this is used for Windows Batch
2874 files. </xs:documentation>
2875 </xs:annotation>
2876 </xs:enumeration>
2877 <xs:enumeration value="GenericNix">
2878 <xs:annotation>
2879 <xs:documentation xml:lang="en-us"> Typically use for shell scripts - valid for
2880 any Linux and Mac OS/X. </xs:documentation>
2881 </xs:annotation>
2882 </xs:enumeration>
2883 <xs:pattern value="[a-zA-Z]([a-zA-Z0-9])*"/>
2884 </xs:restriction>
2885 </xs:simpleType>
2886
2887 </xs:schema>