summaryrefslogtreecommitdiff
path: root/Tools/XMLSchema
diff options
context:
space:
mode:
authorbbahnsen <bbahnsen@6f19259b-4bc3-4df7-8a09-765794883524>2006-04-21 22:54:32 +0000
committerbbahnsen <bbahnsen@6f19259b-4bc3-4df7-8a09-765794883524>2006-04-21 22:54:32 +0000
commit878ddf1fc3540a715f63594ed22b6929e881afb4 (patch)
treec56c44dac138137b510e1fba7c3efe5e4d84bea2 /Tools/XMLSchema
downloadedk2-platforms-878ddf1fc3540a715f63594ed22b6929e881afb4.tar.xz
Initial import.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools/XMLSchema')
-rw-r--r--Tools/XMLSchema/FDPManifest.xsd376
-rw-r--r--Tools/XMLSchema/FrameworkDataElements.xsd1479
-rw-r--r--Tools/XMLSchema/FrameworkDataTypes.xsd1196
-rw-r--r--Tools/XMLSchema/FrameworkHeaders.xsd160
-rw-r--r--Tools/XMLSchema/FrameworkPlatformDataElements.xsd357
-rw-r--r--Tools/XMLSchema/NamingConvention.xsd307
-rw-r--r--Tools/XMLSchema/SurfaceArea.xsd167
-rw-r--r--Tools/XMLSchema/SurfaceArea.xsdconfig16
8 files changed, 4058 insertions, 0 deletions
diff --git a/Tools/XMLSchema/FDPManifest.xsd b/Tools/XMLSchema/FDPManifest.xsd
new file mode 100644
index 0000000000..f6b3715426
--- /dev/null
+++ b/Tools/XMLSchema/FDPManifest.xsd
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Filename: SurfaceArea.xsd
+
+Copyright (c) 2006, Intel Corp.
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which may be found at http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
+ targetNamespace="http://www.TianoCore.org/2006/Edk2.0"
+ xmlns="http://www.TianoCore.org/2006/Edk2.0">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This schema defines FDP Manifest </xs:documentation>
+ </xs:annotation>
+ <!--<xs:include schemaLocation="http://nwlxweb02.jf.intel.com/2006/Edk2.0/FrameworkHeaders.xsd"/>-->
+ <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+ <xs:element name="FrameworkDevPkgManifest">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">At the top level of the Manifest we have four sections:
+ Header, Private, Public and Contents.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Header"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Private"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Public"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Contents"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Header">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> The Header contains some three elements that can
+ uniquely identify this package (PackageName, Guid, Version) as well as several
+ fields that identify the licensing and compyright status of the contents of the
+ package. The rest of the fields are there to idenify who created the package and
+ when it was made. The buid fields are here to identify when the package was created,
+ not when the package was compiled. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PackageName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackageType" type="PackageType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Creator"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Vendor"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Updated"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Modifier"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DefaultInstallDir"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildNumber"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="BuildTarget"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildSystem"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildType"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="ReleaseType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BuildNumber" type="xs:integer">
+ <xs:annotation>
+ <xs:documentation> The Build number is an integer that is meant to represent the exact
+ build of the package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Type">
+ <xs:annotation>
+ <xs:documentation> In the Type field we can record what kinds of modules are contained
+ in the package. The possibilities are source, binary and mixed (both source and
+ binary.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attributeGroup ref="attlist.Type"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.Type">
+ <xs:attribute name="Value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Source"/>
+ <xs:enumeration value="Binary"/>
+ <xs:enumeration value="Mixed"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="attlist.Guid">
+ <xs:attribute name="Value" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:element name="BuildTarget" type="SupportedArchitectures">
+ <xs:annotation>
+ <xs:documentation> The build target is used to record what target architecture the
+ modules within this package were compiled for. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Creator">
+ <xs:annotation>
+ <xs:documentation> In the creator field, we can record the name, user id, and email
+ address of the person who created this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attributeGroup ref="attlist.Creator"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.Creator">
+ <xs:attribute name="Name" use="required"/>
+ <xs:attribute name="UserId"/>
+ <xs:attribute name="Email"/>
+ </xs:attributeGroup>
+ <xs:element name="Modifier">
+ <xs:annotation>
+ <xs:documentation> In the Modifier field, we can record the name, user id, and email
+ address of the person who changed/updated or modified this package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attributeGroup ref="attlist.Modifier"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.Modifier">
+ <xs:attribute name="Name" use="required"/>
+ <xs:attribute name="UserId"/>
+ <xs:attribute name="Email"/>
+ </xs:attributeGroup>
+ <xs:element name="Vendor" type="xs:token">
+ <xs:annotation>
+ <xs:documentation> The name of the company, organization or individual that created or
+ distributes the package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BuildSystem">
+ <xs:annotation>
+ <xs:documentation>This is the place to record the name and DNS name of the computer on
+ which the package was created.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attributeGroup ref="attlist.BuildSystem"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.BuildSystem">
+ <xs:attribute name="Name" use="required"/>
+ <xs:attribute name="NetAddr"/>
+ </xs:attributeGroup>
+ <xs:element name="BuildType">
+ <xs:annotation>
+ <xs:documentation> The package may be Debug or Production. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Debug"/>
+ <xs:enumeration value="Production"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="ReleaseType">
+ <xs:annotation>
+ <xs:documentation> We may identify the quality level of the package here.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="Developer Build"/>
+ <xs:enumeration value="Experimental Release"/>
+ <xs:enumeration value="Alpha Release"/>
+ <xs:enumeration value="Beta Release"/>
+ <xs:enumeration value="Release Canidate"/>
+ <xs:enumeration value="Official Release"/>
+ <xs:enumeration value="Patch Release"/>
+ <xs:enumeration value="Integration Build Release"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="DefaultInstallDir">
+ <xs:annotation>
+ <xs:documentation> This is the directory, relative to the root of the workspace, where
+ the package will be installed by default. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attributeGroup ref="attlist.DefaultInstallDir"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.DefaultInstallDir">
+ <xs:attribute name="Name" use="required"/>
+ </xs:attributeGroup>
+ <xs:element name="Dependencies">
+ <xs:annotation>
+ <xs:documentation> We can track the pakages that this package provides (these are the
+ packages contained in this pacakge.) We also record which packages are required by
+ this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="Requires"/>
+ <xs:element minOccurs="0" ref="Provides"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Requires">
+ <xs:annotation>
+ <xs:documentation> This is a list of the packages that this package requires to be
+ installed in the workspace for package to function and/or build correctly. In the
+ case of source packages, these are the necessary dependencies for successful
+ build-time operation of the package. For binary packages these dependencies are
+ necessary for successful runtime operation.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="Package">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package
+ Database File to track individual package information. The Path is a
+ relative path to the SPD File.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PackageAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="Includes"/>
+ <xs:element name="Library">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="LibraryAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Protocol">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="ProtocolAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="Guid"/>
+ <xs:element ref="File"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Provides">
+ <xs:annotation>
+ <xs:documentation>The list of dependencies that the package fulfills.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="Package">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package
+ Database File to track individual package information. The Path is a
+ relative path to the SPD File.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PackageAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="Includes"/>
+ <xs:element name="Library">
+ <xs:annotation><xs:documentation>
+ A library. It can be provided by or required by this or other packages.
+ </xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="LibraryAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Protocol">
+ <xs:annotation>
+ <xs:documentation>
+ A protocol. It can be provided by or required by this or other packages.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="ProtocolAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="Guid"/>
+ <xs:element ref="File"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.Library">
+ <xs:attribute name="Name" use="required"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="attlist.Protocol">
+ <xs:attribute name="Name" use="required"/>
+ <xs:attribute name="Guid" use="required" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+ <xs:element name="Private">
+ <xs:annotation>
+ <xs:documentation> The Private section is a place where the files are listed that should
+ not be seen by the users of this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="File"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Public">
+ <xs:annotation>
+ <xs:documentation> The Public section is a list of files that are meant to be seen by
+ the users of the package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="File"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Contents">
+ <xs:annotation>
+ <xs:documentation>This is a list of all the files within this package. Each file is
+ identified by its path relative to the workspace root.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="File"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="File">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Specify a filename including the path</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attributeGroup ref="attlist.File"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.File">
+ <xs:attribute name="Type"/>
+ <xs:attribute name="Desc"/>
+ <xs:attribute name="Size" type="xs:NMTOKEN"/>
+ <xs:attribute name="CDate" type="xs:NMTOKEN"/>
+ <xs:attribute name="CTime" type="xs:NMTOKEN"/>
+ <xs:attribute name="MDate" type="xs:NMTOKEN"/>
+ <xs:attribute name="MTime" type="xs:NMTOKEN"/>
+ <xs:attribute name="ADate" type="xs:NMTOKEN"/>
+ <xs:attribute name="ATime" type="xs:NMTOKEN"/>
+ <xs:attribute name="Checksum" type="xs:NMTOKEN"/>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/Tools/XMLSchema/FrameworkDataElements.xsd b/Tools/XMLSchema/FrameworkDataElements.xsd
new file mode 100644
index 0000000000..bbc75d9729
--- /dev/null
+++ b/Tools/XMLSchema/FrameworkDataElements.xsd
@@ -0,0 +1,1479 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
+ <!--
+ Filename: FrameworkDataElements.xsd
+
+ Copyright (c) 2006, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This schema defines EFI and Framework Data Elements </xs:documentation>
+ </xs:annotation>
+ <xs:include schemaLocation="NamingConvention.xsd"/>
+ <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
+ <xs:element name="Abstract">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>
+ <xs:documentation xml:lang="en">This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="Sentence">
+ <xs:attribute name="URL" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AntCmd">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a sub-element of AntTask</xs:documentation>
+ <xs:documentation xml:lang="en">This is an ant command that will be inserted into a biuld sequence. Since ant commands are valid XML statements, special care must be taken to use the correct tokens for reserved words and escape quote characters.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="Id" type="xs:int"/>
+ <xs:element name="ExecutionOrder">
+ <xs:simpleType>
+ <xs:list itemType="xs:normalizedString"/>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="SectionAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="AntTask">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a sub-element of UserDefinedAntTasks</xs:documentation>
+ <xs:documentation xml:lang="en">Define a file that contains one or more ant tasks that are to be added into or replacing of sequences of build steps. These files will be called using the ant-call task on a file name. These files must be valid apache-ant formatted task files.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="AntCmd"/>
+ <xs:element ref="Filename"/>
+ </xs:choice>
+ <xs:attribute name="Id" type="xs:int" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BaseName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BaseName is valid for all Description Files</xs:documentation>
+ <xs:documentation xml:lang="en"> We need to be able to permit different attributes for every basename </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="BaseNameAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BootModes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>
+ <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="BootMode">
+ <xs:complexType>
+ <xs:attributeGroup ref="BootModeAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BuildOptions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BuildOptions is valid for MBD and FPD files.</xs:documentation>
+ <xs:documentation xml:lang="en">Specific Build Options, by Tool Chain, than should be applied, overriding any global options</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ImageEntryPoint"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="OutputDirectory"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Ffs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Sections"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filenames"/>
+ <xs:sequence minOccurs="0">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Option">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attributeGroup ref="OptionAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="Option">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attributeGroup ref="OptionAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="ToolChain" type="ToolChains"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="C_Name" type="C_Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">C_Name is valid for all Description Files</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ComponentName" type="C_Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">ComponentName is valid for all Description Files</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ComponentType" type="FrameworkComponentTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid Framework Component Type</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Condition">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="1" name="Condition" type="xs:normalizedString"/>
+ </xs:sequence>
+ <xs:attribute name="ConditionalTarget" type="ConditionalTarget" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ConditionalExpression">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Condition" type="xs:normalizedString"/>
+ </xs:sequence>
+ <xs:attribute name="ConditionalTarget" type="ConditionalTarget" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Constructor" type="C_Name"/>
+ <xs:element name="Copyright" type="Sentence"/>
+ <xs:element name="Created" type="DateType"/>
+ <xs:element name="CreatedBy" type="UserName"/>
+ <xs:element name="DataHubs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="DataHubRecord">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attributeGroup ref="DataHubAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DataHubRecord">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attributeGroup ref="DataHubAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DatabaseName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The Name of the Database, "FrameworkDatabase"</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="BaseNameAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DefaultValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString"/>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Description" type="Paragraph">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Destructor" type="C_Name"/>
+ <xs:element name="DriverBinding" type="C_Name"/>
+ <xs:element name="DriverConfig" type="C_Name"/>
+ <xs:element name="DriverDiag" type="C_Name"/>
+ <xs:element name="E-Mail" type="E-Mail"/>
+ <xs:element name="Events">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a list of Events</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Event">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="EventAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Event">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="EventAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Event">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="EventAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Event">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="EventAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ExitBootServicesCallBack" type="C_Name"/>
+ <xs:element name="Externs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a child of MSA files, both Library and Module.</xs:documentation>
+ <xs:documentation xml:lang="en">This is a list of Extern statements, right now, only Driver Binding information is provided.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Extern">
+ <xs:complexType>
+ <xs:choice minOccurs="1">
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Driver Module</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleEntryPoint"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleUnloadImage"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Library Module</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Constructor"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Destructor"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>
+ <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverBinding"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ComponentName"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverConfig"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverDiag"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="SetVirtualAddressMapCallBack"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ExitBootServicesCallBack"/>
+ </xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDefined" type="C_Name"/>
+ </xs:choice>
+ <xs:attributeGroup ref="ExternAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Extern">
+ <xs:complexType>
+ <xs:choice minOccurs="1">
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Driver Module</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleEntryPoint"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleUnloadImage"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Library Module</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Constructor"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Destructor"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>
+ <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverBinding"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ComponentName"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverConfig"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="DriverDiag"/>
+ </xs:sequence>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="SetVirtualAddressMapCallBack"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ExitBootServicesCallBack"/>
+ </xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDefined" type="C_Name"/>
+ </xs:choice>
+ <xs:attributeGroup ref="ExternAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Ffs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define the FFS File attributes within a sections and containing sections information</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Attribute">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Value" type="C_Name"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Sections"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a filename</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="VariableConvention">
+ <xs:attributeGroup ref="FilenameAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Filenames">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" ref="Filename"/>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Formsets">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the list of a Formset elements</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Formset">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a Formset</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="FormsetAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Formset">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a Formset</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="FormsetAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Guid">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a GUID</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="GuidType">
+ <xs:attributeGroup ref="GuidAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="GuidDeclarations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>
+ </xs:sequence>
+ <xs:attribute name="Name" type="xs:normalizedString" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Guids">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="GuidEntry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a PCD GUID element</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConditionalExpression"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="GuidAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="GuidEntry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a PCD GUID element</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConditionalExpression"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="GuidAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="GuidValue" type="GuidType"/>
+ <xs:element name="HelpText" type="Paragraph">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section is used to describe how a GUID, PPI or PROTOCOL is to be used within the context of PCDs.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Hobs">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Hob">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="HobAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Hob">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="HobAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ImageEntryPoint" type="C_Name"/>
+ <xs:element name="IncludeHeader">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="FileNameConvention">
+ <xs:attributeGroup ref="IncludeAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Includes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">One or More Package Names or Arch sections is required. Includes are not files, but paths to where header files are located.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="PackageName"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" ref="PackageName"/>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="InstalledDate" type="DateType"/>
+ <xs:element name="Libraries">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Different Instances of Libraries</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Library">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="LibraryAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Library">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="LibraryAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryClass">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define in the MSA and/or SPD, what class of library is being produced by a library module - for components, it can also specify what class of library is consumed.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attribute name="Usage" type="LibraryUsage" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryClassDeclaration">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This element defines a class of library, along with the path to the Include Header for this library</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0">
+ <xs:element minOccurs="1" maxOccurs="1" ref="LibraryClass"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="IncludeHeader"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryClassDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element ref="LibraryClassDeclaration"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryClassDefinitions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element ref="LibraryClass"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="License">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="Paragraph">
+ <xs:attribute name="URL" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Modified" type="DateType"/>
+ <xs:element name="Module">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is record format for a Module entry in the Framework Database file.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the fields in an Module record in the Framework Database. The Path field is relative to the workspace to Module Surface Area (MSA) files.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ModuleName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleEntryPoint" type="xs:normalizedString"/>
+ <xs:element name="ModuleList">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track package installation</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="Module"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the valid content of a Module Name</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="ModuleNameAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleType" type="ModuleTypeDef">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ModuleUnloadImage" type="xs:normalizedString"/>
+ <xs:element name="MsaFiles">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="MsaFile">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a Surface Area Package Description (SPD) file</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:element minOccurs="0" ref="Filename"/>
+ <xs:element minOccurs="0" ref="BuildOptions"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="MsaAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="MsaFile">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a Surface Area Package Description (SPD) file</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:element minOccurs="0" ref="Filename"/>
+ <xs:element minOccurs="0" ref="BuildOptions"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="MsaAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="OutputDirectory">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define where we want our output to go. The Attribute, IntermediateDirectories, default MODULE, says that intermediate files will be local to the module, versus a unified directory structure.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="DirectoryNamingConvention">
+ <xs:attribute default="MODULE" name="IntermediateDirectories">
+ <xs:simpleType>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="MODULE"/>
+ <xs:enumeration value="UNIFIED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PCDs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of Module Surface Area documents, MSA and MBD files, Library Modules and Other Modules</xs:documentation>
+ <xs:documentation xml:lang="en">One or more PcdData or PcdBuildData Elements Only one type is permitted</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="PcdData">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a child of PCDs and can occur in the MSA and MBD files.</xs:documentation>
+ <xs:documentation xml:lang="en">This is date element is used in the Module Surface Area (MSA) file and contains references to be used by a Platform Build</xs:documentation>
+ <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>
+ <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>
+ <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="16777215"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PcdAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageDependencies">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="PackageName"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PackageNameAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageHeaders">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This defines the minimum header file needed to support a given ModuleType.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="IncludeHeader"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageList">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages installed in a workspace.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="1" name="Package">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track individual package information. The Path is a relative path to the SPD File.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PackageAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="BaseNameConvention">
+ <xs:attributeGroup ref="PackageAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageType" type="PackageType"/>
+ <xs:element name="Path">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describe the valid content of a filename</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="DirectoryNamingConvention">
+ <xs:attributeGroup ref="DirectoryAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PcdBuildDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>
+ <xs:documentation xml:lang="en">We permit the FPD to use an external XML file for PCD information or else the information must be contained within the XML data element, PcdBuildData.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:choice minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="1" ref="Filename"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of PcdBuildDeclarations</xs:documentation>
+ <xs:documentation xml:lang="en">This is date element is used in the platform build description file and contains valid data for a Platform Build</xs:documentation>
+ <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This as a unique identifier defined for either this name space.</xs:documentation>
+ <xs:documentation xml:lang="en">The Target Attribute may be used to define a Target name space, such as PCI.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="HexDoubleWordDataType">
+ <xs:attribute name="Target" type="C_Name" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID*</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This Bit means that the Variable data is associated with HII</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This bit enables the Vital Product Data area within flash for maintaining PCD information</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>This is only applicable to ItemType DYNAMIC_EX</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>
+ <xs:choice minOccurs="0">
+ <xs:element minOccurs="0" maxOccurs="1" name="SkuDataArray">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:list itemType="xs:normalizedString"/>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section is for a list of SkuData Elements, ID and Value</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element name="Id" type="xs:int"/>
+ <xs:element name="Value" type="xs:normalizedString"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="MaxSku" type="HexByteDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the specific Sku ID for this build.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="16777215"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Variable's GUID if and only if HII is enabled.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This field is only valid if AlternateNameSpaceEnable is true.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PcdAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PcdDefinitions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>
+ <xs:documentation xml:lang="en">This permits entering information about a package's PCD information</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" name="PcdEntry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules.</xs:documentation>
+ <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>
+ <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token" type="Token"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>
+ <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>
+ <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>
+ <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="16777215"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>
+ <xs:element default="0" minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PcdAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Platform">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Database Entry to locate the Platform Build Tips - path to FPD file.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="PlatformName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define the Name of a Platform</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="PlatformNamingConvention">
+ <xs:attributeGroup ref="PlatformAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="Path"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="AlternatePcdFile" type="FileNameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="AlternateFdfFile" type="FileNameConvention"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="PlatformAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PpiDeclarations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>
+ </xs:sequence>
+ <xs:attribute name="Name" type="xs:normalizedString" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PPIs">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="PpiAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="PpiNotifyAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="PpiAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="PpiNotifyAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ProtocolDeclarations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>
+ </xs:sequence>
+ <xs:attribute name="Name" type="xs:normalizedString" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Protocols">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="ProtocolAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="ProtocolNotifyAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="ProtocolAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="C_Name">
+ <xs:attributeGroup ref="ProtocolNotifyAttributes"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element default="false" name="ReadOnly" type="xs:boolean"/>
+ <xs:element default="false" name="RePackage" type="xs:boolean"/>
+ <xs:element name="Sections">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Sections refers to the Firmware Filesystem sections, PE32, UI, VER, DXS, etc. and how they are made</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Section">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="Filenames"/>
+ <xs:element minOccurs="0" name="Args" type="ArgsType"/>
+ <xs:element minOccurs="0" name="OutFile" type="FileNameConvention"/>
+ <xs:element minOccurs="0" name="OutputFileExtension" type="xs:string"/>
+ <xs:element minOccurs="0" name="ToolName" type="ToolType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="SectionAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Sections">
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Section">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="Filenames"/>
+ <xs:element minOccurs="0" name="Args" type="ArgsType"/>
+ <xs:element minOccurs="0" name="OutFile" type="FileNameConvention"/>
+ <xs:element minOccurs="0" name="OutputFileExtension" type="xs:string"/>
+ <xs:element minOccurs="0" name="ToolName" type="ToolType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="SectionAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="SectionsAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="SectionsAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SetVirtualAddressMapCallBack" type="C_Name"/>
+ <xs:element name="SourceFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element maxOccurs="unbounded" ref="Filename"/>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Specification">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This string is used to provide the name and version of the Specification that the component conforms to.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Version" type="xs:normalizedString" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SystemTables">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="SystemTable">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="SystemTableAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Updated" type="DateType"/>
+ <xs:element name="URL" type="xs:anyURI"/>
+ <xs:element name="URI" type="xs:anyURI"/>
+ <xs:element name="UserDefinedAntTasks">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is a sub-element of BuildOptions</xs:documentation>
+ <xs:documentation xml:lang="en">Permit Users to define their own custom ANT tasks.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element minOccurs="1" ref="AntTask"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Variables">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A list of EFI Variables described by GUID string pair.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="Variable">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ByteOffset" type="HexWordDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="BitOffset">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="8"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="OffsetBitSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="VariableAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Variable">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="ByteOffset" type="HexWordDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="BitOffset">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This entry represents the Location of the Starting Bit {0,8} of the start of Data. A value of zero or 1 indicates that there is no BitOffset into the byte.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="8"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="OffsetBitSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This number represents the number of bits to use {0, 7} starting at the BitOffset. A value of 0 indicates that the entire Byte should be used.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="VariableAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ArchType" type="SupportedArchitectures"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Version" type="xs:normalizedString"/>
+</xs:schema>
diff --git a/Tools/XMLSchema/FrameworkDataTypes.xsd b/Tools/XMLSchema/FrameworkDataTypes.xsd
new file mode 100644
index 0000000000..402d2b2752
--- /dev/null
+++ b/Tools/XMLSchema/FrameworkDataTypes.xsd
@@ -0,0 +1,1196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
+ <!--
+ Filename: FrameworkDataTypes.xsd
+
+ Copyright (c) 2006, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This schema defines EFI and Framework Attribute and Data Types. Only simpleType and attributeGroups are specified in this file. </xs:documentation>
+ </xs:annotation>
+ <xs:include schemaLocation="NamingConvention.xsd"/>
+ <xs:simpleType name="BlockNameType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">FIRMWARE: Define a block name to be BLOCK[A-F0-9]{2}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:pattern value="BLOCK([A-F0-9]){2}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BootModeNames">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes what boot modes can be set (produced) or what boot modes can be supported, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="FULL">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_WITH_FULL_CONFIGURATION</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MINIMAL">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_WITH_MINIMAL_CONFIGURATION</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="NO_CHANGE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_ASSUMING_NO_CONFIGURATION_CHANGES</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DIAGNOSTICS">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_WITH_DEFAULT_SETTINGS</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="S2_RESUME">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_ON_S2_RESUME</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="S3_RESUME">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_ON_S3_RESUME</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="S4_RESUME">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_ON_S4_RESUME</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="S5_RESUME">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_ON_S5_RESUME</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FLASH_UPDATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_ON_FLASH_UPDATE</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RECOVERY">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">BOOT_IN_RECOVERY_MODE</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="BootModeUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Boot Mode Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Supports the Boot Mode</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Supports the Boot Mode on some execution path</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Always changes the Boot Mode</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Sometimes changes the Boot Mode</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ComponentExecutionPhase">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">These are the supported EFI/Framework Execution Phases</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="MDE"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="PEIM"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="DXE_DRIVER"/>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER"/>
+ <xs:enumeration value="DXE_SAL_DRIVER"/>
+ <xs:enumeration value="DXE_SMM_DRIVER"/>
+ <xs:enumeration value="UEFI"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ConditionalTarget">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Conditional Targets are Other FeatureFlag Identifiers</xs:documentation>
+ </xs:annotation>
+ <xs:list itemType="C_Name"/>
+ </xs:simpleType>
+ <xs:simpleType name="DataHubUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Data Hub Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The module always consumes a data hub entry via registering a filter driver.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The module will use a data hub entry if it exists via registering a filter driver.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The module always logs data into the data hub.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The module will log data into the data hub under certain circumstances</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">DataHub is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DateType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Date Format is YYYY-MM-DD HH:MM (24hr time format)</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DefaultValue">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> The DefaultValue is a union of a string and an integer. </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="xs:normalizedString xs:int UnicodeString"/>
+ </xs:simpleType>
+ <xs:simpleType name="EfiSectionType">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>
+ <xs:enumeration value="EFI_SECTION_VERSION"/>
+ <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>
+ <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>
+ <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>
+ <xs:enumeration value="EFI_SECTION_PE32"/>
+ <xs:enumeration value="EFI_SECTION_PIC"/>
+ <xs:enumeration value="EFI_SECTION_TE"/>
+ <xs:enumeration value="EFI_SECTION_RAW"/>
+ <xs:enumeration value="EFI_SECTION_COMPRESSION"/>
+ <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>
+ <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>
+ <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="EventTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Supported Event Groups, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="EVENT_GROUP_EXIT_BOOT_SERVICES"/>
+ <xs:enumeration value="EVENT_GROUP_VIRTUAL_ADDRESS_CHANGE"/>
+ <xs:enumeration value="EVENT_GROUP_MEMORY_MAP_CHANGE"/>
+ <xs:enumeration value="EVENT_GROUP_READY_TO_BOOT"/>
+ <xs:enumeration value="EVENT_GROUP_LEGACY_BOOT"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="EventUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Event Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A module registers a notification function and requires it to be executed for the module to fully function.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A module registers a notification function and utilizes it if it's signaled.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A module will always signal the event.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A module will sometimes signal the event.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Event is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExecutionType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines the output types: Relocatable (REL,) Non-Relocatable (NREL,) Execute in Place (XIP) or Position Independent Code (PIC) </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="REL" id="Relocatable"/>
+ <xs:enumeration value="NREL" id="Non-Relocatable"/>
+ <xs:enumeration value="XIP" id="Execute_In_Place"/>
+ <xs:enumeration value="PIC" id="Position_Independent_Code"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">C Identifier Name for the Extern data as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(_*\w*\W*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ExternUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Extern Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The EXTERN is always imported by the module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The EXTERN is always exported by the module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FileNameUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the FileName Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module requires a file named GUID in an FV</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will use a file named GUID in an FV if it is present</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module Always produces a file named GUID in an FV</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module sometimes produces a file named GUID in an FV</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Filename is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FormSetUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Formset Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The Formset is always registered into HII by the module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Some execution paths through the modules register forms into HII</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Formset is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FrameworkComponentTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> These are the EFI/Framework Component Types defined in the EFI Development Kit (EDK) Getting Started Guide </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="APRIORI"/>
+ <xs:enumeration value="SEC"/>
+ <xs:enumeration value="LIBRARY"/>
+ <xs:enumeration value="FV_IMAGE_FILE"/>
+ <xs:enumeration value="BS_DRIVER"/>
+ <xs:enumeration value="RT_DRIVER"/>
+ <xs:enumeration value="SAL_RT_DRIVER"/>
+ <xs:enumeration value="PE32_PEIM"/>
+ <xs:enumeration value="PIC_PEIM"/>
+ <xs:enumeration value="COMBINED_PEIM_DRIVER"/>
+ <xs:enumeration value="PEI_CORE"/>
+ <xs:enumeration value="DXE_CORE"/>
+ <xs:enumeration value="APPLICATION"/>
+ <xs:enumeration value="BS_DRIVER_EFI"/>
+ <xs:enumeration value="SHELLAPP"/>
+ <xs:enumeration value="APPLICATION"/>
+ <xs:enumeration value="UEFI_APPLICATION"/>
+ <xs:enumeration value="BINARY"/>
+ <xs:enumeration value="LOGO"/>
+ <xs:enumeration value="CUSTOM_BUILD"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FvRegionTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">FIRMWARE: Pre-defined Firmware Volume Region Types</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="FV_MAIN"/>
+ <xs:enumeration value="FV_MAIN_COMPACT"/>
+ <xs:enumeration value="NV_STORAGE"/>
+ <xs:enumeration value="FV_RECOVERY"/>
+ <xs:enumeration value="FV_RECOVERY_FLOPPY"/>
+ <xs:enumeration value="FV_FILE"/>
+ <xs:enumeration value="CAPSULE_CARGO"/>
+ <xs:enumeration value="NULL"/>
+ <xs:enumeration value="USER_DEFINED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Guid Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module always consumes the GUID</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will consume the GUID only if the GUID is present</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will always produce the GUID</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module sometimes produces the GUID</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the package</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Guid is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HobTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Type of HOB that is being produced or consumed, as specified in the Module Surface Area Specification.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="PHIT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_HANDOFF</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="MEMORY_ALLOCATION">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_MEMORY_ALLOCATION Note: The BaseName of the GUID is also required</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="RESOURCE_DESCRIPTOR">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_RESOURCE_DESCRIPTOR</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="GUID_EXTENSION">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_GUID_EXTENSION Note: The BaseName of the GUID is also required.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FIRMWARE_VOLUME">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_FV</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CPU">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_CPU</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="POOL">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_PEI_MEMORY_POOL</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="CAPSULE_VOLUME">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">EFI_HOB_TYPE_CV</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HobUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Hob Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The HOB must be present in the system</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The HOB will be used if it's present in the system</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The HOB is always produced by the module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The HOB will sometimes be produced by the module.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">HOB is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="LibraryUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Library Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A module always consumes the library. This Guid represents the class of the library.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED"/>
+ <xs:enumeration value="ALWAYS_PRODUCED"/>
+ <xs:enumeration value="SOMETIMES_PRODUCED"/>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the library.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Library is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ModuleTypeDef">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> These are the supported Framework Module Types </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="BASE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module only depends on things in the MDE package and is environment neutral</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SEC">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is the Security Section and depends on catching the reset vectory</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PEI_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is the PEI Core</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PEIM">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a PEIM and depends on the PEI Services Table</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_CORE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is the DXE Core</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_RUNTIME_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical or virtual mode.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_SAL_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module runs after ExitBootServices and produces CreateEvent EventGroupExitBootServices and EventGroupVirtualAddressChange. Code written in this module can run in physical AND in virtual mode.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DXE_SMM_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a DXE Driver and depends on the EFI Boot Services, EFI Runtime Services and the DXE Service Table. The module also runs in SMM mode and depends on the SMM Service Table. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TOOLS">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The TOOLS ModuleType is to be used for Tiano Tools modules</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_DRIVER">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a UEFI Driver and depends on the EFI and Service Tables.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="UEFI_APPLICATION">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module is a UEFI Applciation and depens on the EFI and Service Tables.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="USER_DEFINED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module does not fit into other classifications. The user must have an apriori knowledge of its Usage, and must provide that information to others using this module.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Module_Unified">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a flag to determine whether to put intermediate build files into a directory under the Module, or into a unified tree under the package or platform build trees</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="MODULE"/>
+ <xs:enumeration value="UNIFIED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PackageType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Packages are either source, binary or mixed packages.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="SOURCE"/>
+ <xs:enumeration value="BINARY"/>
+ <xs:enumeration value="MIXED"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PackageUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Package Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">A module always consumes a package. This GUID represents the class of the package.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Package we are creating. This GUID represents the class of the package.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The default is the GUID that specifies the instance of the package.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdTypes">
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="FIXED_AT_BUILD">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PATCHABLE_IN_MODULE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is set to a default value at build time and a binary of the module can be patched to update the value.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DYNAMIC">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DYNAMIC_EX">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdDataTypes">
+ <xs:restriction base="xs:normalizedString">
+ <xs:enumeration value="UINT8"/>
+ <xs:enumeration value="UINT16"/>
+ <xs:enumeration value="UINT32"/>
+ <xs:enumeration value="UINT64"/>
+ <xs:enumeration value="VOID*"/>
+ <xs:enumeration value="BOOLEAN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdFeatureFlagUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the PCD FEATURE_FLAG Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UsageTypes">
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is tagged as the default</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdItemTypes">
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="FEATURE_FLAG">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The PCD Item represents a feature flag for the module. Features can only be selected at build time. Items of type FeatureFlag are used to conditionally construct module surface area that is produced as a result of a buld.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FIXED_AT_BUILD">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is only a build time option and cannot be Dyanmic or Binary patched into the module.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PATCHABLE_IN_MODULE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is set to a default value at build time and a binary of the module can be patched to update the value.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DYNAMIC">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. The token that matches the PCD entry is either generated by the build (and is only unique to that build) or is from the default database. This form also implies a build option will be produced for this module that allows the user to pick FixedAtBuild, PatchableInModule or Dynamic. If no Type is specified, it defaults to Dynamic</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DYNAMIC_EX">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">PCD Item is found via a PCD PPI in PEI or a PCD Protocol in DXE. Any PCD token database is supported</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PcdUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The PCD Usage is only relevant to Items tagged with FeatureFlag, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The PCD entry must always be provide as the build will include the code and the associated Surface Area.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The PCD Entry is Always included in the build code</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">If the FEATURE_FLAG is TRUE the build will include the code and the associated Surface Area. If the FEATURE_FLAG is FALSE, the code and the associated surface area is not included.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">"true" or "false". Indicates the default value for the PCD entry. This is used by the platform wizard to suggest values for a given platform build.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PpiNotifyUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the PPI Notify Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will consume the PPI if it's produced. Consumption is defined by executing the PPI notify function.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PpiUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the PPI Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Ppi is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ProtocolNotifyUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the PROTOCOL Notify Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will Consume protocol if it's produced. Consumption is defined by executing the protocol notify function.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ProtocolUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the PROTOCOL Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TO_START">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BY_START">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Protocol is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SupportedArchitectures">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> These are the currently Supportted Architectures type codes </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALL"/>
+ <xs:enumeration value="EBC"/>
+ <xs:enumeration value="ARM"/>
+ <xs:enumeration value="IA32"/>
+ <xs:enumeration value="X64"/>
+ <xs:enumeration value="IPF"/>
+ <xs:enumeration value="PPC"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SystemTableUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the System Table Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module requires a GUIDed entry in the system table</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will use the GUIDed entry in the system table only if the GUID is present</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module Always produces a GUIDed entry in the system table</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module sometimes produces a GUIDed entry in the system table for some of its execution flow</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">SystemTable is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> The Token data is union of HexDoubleWordDataType, GuidNaming Convetion and GuidArrayType. </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="GuidArrayType GuidNamingConvention HexDoubleWordDataType"/>
+ </xs:simpleType>
+ <xs:simpleType name="ToolChains">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Supported Tool Chains are MSFT, INTEL, GCC and CYGWIN</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="MSFT"/>
+ <xs:enumeration value="INTEL"/>
+ <xs:enumeration value="GCC"/>
+ <xs:enumeration value="CYGWIN"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ToothPick">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describes which way the directory separator is leaning, either \ for WINDOWS or / for UNIX</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:enumeration value="UNIX"/>
+ <xs:enumeration value="WINDOWS"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UnicodeString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define how we specify unicode strings</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="L(:)?(&quot;)(\w+)*((\W*)*(\s*)*(\w*)*)*(&quot;)"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UsageTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Generic Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Required for the driver to function. This is part of the dependency expression of a module if the item represents a PPI or Protocol</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Consumed by the driver if the Item exists</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Always produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Conditionally produced</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="TO_START">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Protocol Only - Protocol is required by driver binding Start() function to make Start() succeed</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="BY_START">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Protocol Only - Protocol is produced by driver binding Start() function if and only if Start() succeeds</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Item is Private to the module and cannot be used by other modules</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="DEFAULT">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the default value for an Item</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VariableOffsetValues">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Describes the available Variable Offset data types, Bytes:Bits or BitSize</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\d+(:)?\d*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VariableUsage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the Variable Usage Attributes, as defined in the Module Surface Area Specification</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="NameConvention">
+ <xs:enumeration value="ALWAYS_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module requires the variable entry to be set</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module will use the variable entry if it's set</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="ALWAYS_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module Always will write the variable</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_PRODUCED">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Module sometimes writes the variable</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRIVATE">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Variable is produced and consumed only by this module</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- Complex Data Types -->
+ <xs:complexType name="ArgsType">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="Arg" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ToolType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This type is to permit adding specific tools and tool arguments for User Defined tools, into the Module Build Description file.</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="ToolName" type="xs:string"/>
+ <xs:element name="ToolArgs" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:attributeGroup name="BaseNameAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="BootModeAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="BootModeName" type="BootModeNames" use="required"/>
+ <xs:attribute name="Usage" type="BootModeUsage" use="required"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ConvertAttributeString">
+ <xs:attribute name="SourceString" type="xs:string" use="optional"/>
+ <xs:attribute default="Unicode" name="OutputFiletype" type="xs:string" use="optional"/>
+ <xs:attribute name="OutputFilename" type="FileNameConvention" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="DataHubAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Usage" type="DataHubUsage" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="DirectoryAttributes">
+ <xs:attribute name="Separator" type="ToothPick"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="EventAttributes">
+ <xs:attribute name="Usage" type="EventUsage" use="optional"/>
+ <xs:attribute name="EventGroup" type="EventTypes" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ExternAttributes">
+ <xs:attribute name="Usage" type="ExternUsage" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="FilenameAttributes">
+ <xs:attribute name="Usage" type="FileNameUsage" use="optional"/>
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Path" type="DirectoryNamingConvention" use="optional"/>
+ <xs:attribute name="FileType" type="xs:string" use="optional"/>
+ <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="FormsetAttributes">
+ <xs:attribute name="Usage" type="FormSetUsage" use="optional"/>
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="GuidAttributes">
+ <xs:attribute name="Usage" type="GuidUsage" use="optional"/>
+ <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="HobAttributes">
+ <xs:attribute name="Usage" type="HobUsage" use="optional"/>
+ <xs:attribute name="HobType" type="HobTypes" use="required"/>
+ <xs:attribute default="true" name="HobEnabled" type="xs:boolean" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="IncludeAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Path" type="DirectoryNamingConvention" use="optional"/>
+ <xs:attribute name="Class" type="xs:normalizedString" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ <xs:attribute name="ModuleType" type="ModuleTypeDef" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="LibraryAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="LibraryClass" type="BaseNameConvention" use="optional"/>
+ <xs:attribute name="ClassGuid" type="GuidType" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ <xs:attribute name="Usage" type="LibraryUsage" use="optional"/>
+ <xs:attribute name="Package" type="xs:string" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ModuleNameAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="MsaAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>
+ <xs:attribute name="ModuleName" type="C_Name" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ <xs:attribute name="Platform" type="PlatformNamingConvention" use="optional"/>
+ <xs:attribute name="BuildSequence" type="xs:int" use="optional"/>
+ <xs:attribute name="FV" type="xs:string" use="optional"/>
+ <xs:attribute name="FvBinding" type="xs:string" use="optional"/>
+ <xs:attribute name="PACKAGE" type="xs:string" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="OptionAttributes">
+ <xs:attribute name="Platform" type="PlatformNamingConvention" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PackageAttributes">
+ <xs:attribute name="Usage" type="PackageUsage" use="optional"/>
+ <xs:attribute name="PackageType" type="PackageType" use="optional"/>
+ <xs:attribute name="UpdatedDate" type="DateType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PackageNameAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PcdAttributes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">These attributes are for the Pcds listed in PcdData, PcdEntry and/or PcdBuildData entries.</xs:documentation>
+ <xs:documentation xml:lang="en">PcdUsage is only valid for PcdItemTypes = FEATURE_FLAG</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>
+ <xs:attribute name="PcdUsage" type="PcdUsage" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PlatformAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Version" type="VersionDataType" use="optional"/>
+ <xs:attribute name="AlternateName" type="FileNameConvention" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PpiAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Usage" type="PpiUsage" use="optional"/>
+ <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="C_Name" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="PpiNotifyAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Usage" type="PpiNotifyUsage" use="optional"/>
+ <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="C_Name" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ProtocolAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Usage" type="ProtocolUsage" use="optional"/>
+ <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>
+ <xs:attribute name="FeatureFlag" type="C_Name" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="ProtocolNotifyAttributes">
+ <xs:attribute name="Guid" type="GuidType" use="optional"/>
+ <xs:attribute name="Usage" type="ProtocolNotifyUsage" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="SectionAttributes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Attributes are either compressable and/or sequence order binding</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="SectionType" type="EfiSectionType" use="optional"/>
+ <xs:attribute default="true" name="Compressible" type="xs:boolean" use="optional"/>
+ <xs:attribute name="BindingOrder" type="xs:int" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="SectionsAttributes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Attributes for Sections, EncapsulationTag, EncapsulationType and OverrideID</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="EncapsulationType" type="xs:normalizedString" use="optional"/>
+ <xs:attribute name="EncapsulationTag" type="xs:string" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="SystemTableAttributes">
+ <xs:attribute name="Usage" type="SystemTableUsage" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="VariableAttributes">
+ <xs:attribute name="Usage" type="VariableUsage" use="optional"/>
+ <xs:attribute name="OverrideID" type="xs:int" use="optional"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="UrlAttribute">
+ <xs:attribute name="Url" type="xs:anyURI"/>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/Tools/XMLSchema/FrameworkHeaders.xsd b/Tools/XMLSchema/FrameworkHeaders.xsd
new file mode 100644
index 0000000000..3937dc5c84
--- /dev/null
+++ b/Tools/XMLSchema/FrameworkHeaders.xsd
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">
+ <!--
+ Filename: FrameworkHeaders.xsd
+
+ Copyright (c) 2006, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+ <xs:element name="FdbHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the header for the Framework Package Database file.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="DatabaseName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Path"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MbdHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the header for the Component Module Build Description (MBD) file. NOTE: The GUID may be different from the GUID in the MSA file, as the Guid is updated every time the file is changed, as the Guid may change if the contents of the file are changed.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="BaseName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Modified"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MbdLibHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the header for the Library Module Build Description (MBD) file. NOTE: The Guid may be different from the Guid in the MSA file, as the Guid may change when the contents of the file are changed..</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="BaseName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Modified"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MsaHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Component Module Surface Area Description Header - a replacement for INF files. The GUID may change when the contents of the file are changed.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="BaseName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ComponentType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Specification"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="MsaLibHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Library Module Surface Area Description Header - a replacement for INF files. The Guid may change when the contents of the file are changed.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="BaseName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="ComponentType"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Specification"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PlatformHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This head is for the Framework Platform Description file (FPD.)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="PlatformName" type="PlatformNamingConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define the Name of a Platform</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element maxOccurs="1" minOccurs="1" ref="CreatedBy"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SpdHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This head is for the Surface Area Package Description file (SPD) The Guid may change when the contents of the file are changed.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PackageName"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="License"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="Created"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="E-Mail"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="URL"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PackageType"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="ReadOnly"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="RePackage"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="OutputDirectory"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/Tools/XMLSchema/FrameworkPlatformDataElements.xsd b/Tools/XMLSchema/FrameworkPlatformDataElements.xsd
new file mode 100644
index 0000000000..5cbaaca699
--- /dev/null
+++ b/Tools/XMLSchema/FrameworkPlatformDataElements.xsd
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
+ <!--
+ Filename: FrameworkPlatformDataElements.xsd
+
+ Copyright (c) 2006, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>
+ </xs:annotation>
+ <xs:include schemaLocation="NamingConvention.xsd"/>
+ <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
+ <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+ <xs:element name="Capsule">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CapsuleId" type="xs:string"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="CapsuleOptions"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="CapsuleAttributes"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CapsuleAttributes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Enable"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Disable"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="CapsuleOptions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Enable"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Disable"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Capsules">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Permit multiple Capsule Sections</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element ref="Capsule"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Disable" type="xs:string"/>
+ <xs:element name="Enable" type="xs:string"/>
+ <xs:element name="Flash">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation xml:lang="en">We allow specifying the Flash layout in this directory, or we allow specifying a flashmap filename</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="FlashDefinition" type="FlashData"/>
+ <xs:element name="FlashDefinitionFile" type="FileNameConvention"/>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImages"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Capsules"/>
+ </xs:sequence>
+ <xs:attribute name="MicrocodeFile" type="FileNameConvention" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FlashDeviceImage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define contents of the regions in flash. The files and data are placed in the output image in the order they are encountered in this definition. Multiple FlashDeviceImage sections may be defined. Which one the tool should use is specified by Name on the command line.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="NameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="File" type="FvImageFileType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FlashDeviceInfo">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Flash Devcie definition List</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="UCNameType"/>
+ <xs:element default="512KB" minOccurs="1" maxOccurs="1" name="FlashSize" type="FlashSize"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="BaseAddress" type="HexAddressType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="OutputDirectory" type="DirectoryNamingConvention"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="MicrocodeFile" type="FileNameConvention"/>
+ <xs:element minOccurs="1" maxOccurs="255" name="Block" type="BlockNameType"/>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Region" type="RegionDataType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FlashDeviceOverrideImage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define OVERRIDE contents of the regions in flash. Only what is different here from what may defined in other areas (or files) is needed </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name" type="NameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="File" type="FvImageOverrideFileType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FlashDeviceOverrideInfo">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Flash Devcie Override Definition list. Only what is different from the previously defined stuff needs to be included.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name" type="UCNameType"/>
+ <xs:element default="512KB" minOccurs="0" maxOccurs="1" name="FlashSize" type="FlashSize"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="BaseAddress" type="HexAddressType"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="DirectoryNamingConvention"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="MicrocodeFile" type="FileNameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="255" name="Block" type="BlockNameType"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Region" type="RegionDataType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FvImage">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageNames"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="FvImageOptions"/>
+ </xs:sequence>
+ <xs:attribute name="Type" type="xs:string" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FvImageName">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="FvImageOptions"/>
+ </xs:sequence>
+ <xs:attribute name="Name" type="FvRegionTypes" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FvImageNames" type="xs:string"/>
+ <xs:element name="FvImageOptions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Enable"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Disable"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FvImages">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This section allows the user to define specific information regarding the FvImage</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImage"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImageName"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleSA">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This element is used to specify information in the Platform Description File.</xs:documentation>
+ <xs:documentation xml:lang="en">This is a mixed element, allowing the user to specify the name of the MSA file, as well as to optionally specify additional override information.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="MsaAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="NameValue">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Name" type="xs:string" use="required"/>
+ <xs:attribute name="Value" type="xs:string" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Overrides">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceOverrideInfo"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceOverrideImage"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PlatformDescriptions">
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element ref="Platform"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="TianoImage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This defines the required sections of a valid EFI/Tiano binary image</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="SEC" type="Components"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PEI_CORE" type="Components"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="PEIM" type="Components"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DXE_CORE" type="Components"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="DXE_DRIVERS" type="Components"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="OTHER_COMPONENTS" type="Components"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="EfiFvAttributeType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The list of EFI_FLASH_AREA Attributes</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EFI_FLASH_AREA_FV"/>
+ <xs:enumeration value="EFI_FLASH_AREA_MEMMAPPED_FV"/>
+ <xs:enumeration value="EFI_FLASH_AREA_SUBFV"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="EfiFvAreaType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">The list of valid EFI Area Types</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EFI_FLASH_AREA_EFI_VARIABLES"/>
+ <xs:enumeration value="EFI_FLASH_AREA_UNUSED"/>
+ <xs:enumeration value="EFI_FLASH_AREA_MAIN_BIOS"/>
+ <xs:enumeration value="EFI_FLASH_AREA_GUID_DEFINED"/>
+ <xs:enumeration value="EFI_FLASH_AREA_FTW_STATE"/>
+ <xs:enumeration value="EFI_FLASH_AREA_FTW_BACKUP"/>
+ <xs:enumeration value="EFI_FLASH_AREA_RECOVERY_BIOS"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="EfiNameGuidType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Right now, only EFI_FLASH_MAP_HOB_GUID is defined</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="EFI_FLASH_MAP_HOB_GUID"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FlashSize">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="256KB"/>
+ <xs:enumeration value="512KB"/>
+ <xs:enumeration value="1MB"/>
+ <xs:enumeration value="2MB"/>
+ <xs:enumeration value="4MB"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FvSubRegionTypes">
+ <xs:restriction base="UCNameType">
+ <xs:enumeration value="NV_VARIABLE_STORE"/>
+ <xs:enumeration value="MICROCODE"/>
+ <xs:enumeration value="NV_FTW_WORKING"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Components">
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
+ <xs:element ref="ModuleSA"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="FlashData">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDefinedFvRegion" type="NameConvention"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="FlashDeviceInfo"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="FlashDeviceImage"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Overrides"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="FvImageFileType">
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="FileNameConvention"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Region" type="FvRegionTypes"/>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="RawData" type="RawDataType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="FvImageOverrideFileType">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name" type="FileNameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Region" type="FvRegionTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="UserDefinedFvRegion" type="NameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="RawData" type="RawDataType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RawDataType">
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="NameConvention"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="Region" type="FvRegionTypes"/>
+ <xs:element minOccurs="0" maxOccurs="1" name="UserDefinedFvRegion" type="NameConvention"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="SubRegion" type="FvSubRegionTypes"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Data" type="HexDataType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="RegionDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define the regions and their uses for the device</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="UCNameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Size" type="HexAddressType"/>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Attributes" type="EfiFvAttributeType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="AreaType" type="EfiFvAreaType"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="SubRegion" type="SubRegionType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="SubRegionType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define the regions and their uses for the device</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element default="true" minOccurs="1" maxOccurs="1" name="CreateHob" type="xs:boolean"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name" type="UCNameType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="Size" type="HexAddressType"/>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Attributes" type="EfiFvAttributeType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="AreaType" type="EfiFvAreaType"/>
+ <xs:element minOccurs="1" maxOccurs="1" name="NameGuid" type="EfiNameGuidType"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
diff --git a/Tools/XMLSchema/NamingConvention.xsd b/Tools/XMLSchema/NamingConvention.xsd
new file mode 100644
index 0000000000..4f998b827d
--- /dev/null
+++ b/Tools/XMLSchema/NamingConvention.xsd
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">
+ <!--
+ Filename: NamingConvention.xsd
+
+ Copyright (c) 2006, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This schema defines various data types and naming conventions including: base name, filename and directory naming conventions. These are all simple data types.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType name="BaseNameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Base Names must start with an upper case character, followed by one or more alphanumeric characters and/or an optional underscore (_) character followed by one or more alphanumeric characters. Examples: Base_name3, BASE_NAME3, BaseName3 </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]([a-zA-Z0-9])*(_)?([a-zA-Z0-9])*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="C_Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> C_Names must start with either an underscore (_) character followed by one or more alpha characters, followed by any combination of underscore or alphanumeric characters.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="((_)*([a-zA-Z])+((_)*[a-zA-Z0-9]*))*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="DirectoryNamingConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Directory naming convention is a UNION of DOS an UNIX directory path names </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="Directory_DOS Directory_UNIX"/>
+ </xs:simpleType>
+ <xs:simpleType name="Directory_DOS">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Directory naming convention for Windows backslash (\) directory path name </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="([a-zA-Z]:\\)?(((\\?_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\\)?)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Directory_UNIX">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Directory naming convention for UNIX forwardslash (/) directory path name </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(\/)?(((_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\/)?)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="E-Mail">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z]+(( )*.?-?[a-zA-Z]*)*@[a-zA-Z]+(( )*.?-?[a-zA-Z]*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="FileNameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines what a Filename is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a optional dot and more alphanumeric characters. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z][a-zA-Z0-9]*((_)*(-)*(.)*[a-zA-Z0-9]*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidArrayType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines the minimum specification for a GUID Array which is 8 Hex Digits - 4 Hex Digits - 4 Hex Digits - 8 Hex Bytes, the last 16 Hex Digits can be enclosed in sqiggle {} brackets.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidNamingConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> A GUID must contain five different Hexadecimal character sets that are separated by a dash (-) character. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[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}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="GuidType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> The GUID data is union of GuidNaming Convetion and GuidArrayType. </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="GuidArrayType GuidNamingConvention"/>
+ </xs:simpleType>
+ <xs:simpleType name="Hex64BitDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex 64 Bit Value to be 0x[a-f0-9]{16}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(0x)?[a-fA-F0-9]{1,16}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexAddressType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Address, 0x[a-fA-F0-9]{1,16}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="0x[a-fA-F0-9]{1,16}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexByteDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Byte Value to be 0x[a-f0-9]{2}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(0x)?[a-fA-F0-9]{1,2}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Value to be 0x[a-f0-9]+</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="0x[a-fA-F0-9]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexDigitType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Diget to be 0x[a-f0-9]</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-fA-F0-9]{1}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexDoubleWordDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Double Word Value to be 0x[a-f0-9]{8}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="0x[a-fA-F0-9]{1,8}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="HexWordDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define a Hex Word Value to be 0x[a-f0-9]{4}</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="0x[a-fA-F0-9]{1,4}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="LibraryNameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines what a Library name is: alphanumeric characters and optional underscore (_) characters. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z][a-zA-Z0-9]*(_*[a-zA-Z0-9])*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="NameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">What is a name, any series of alphanumeric characters and one or more underline characters that may occur in any position</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="(_*[a-zA-Z0-9]*_*)+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Paragraph">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This describes the normal text of a paragraph that can be used in a license or description tag.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString"/>
+ </xs:simpleType>
+ <xs:simpleType name="PlatformNamingConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines what a Platform Name is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a dot and more alphanumeric characters. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(([a-zA-Z][a-zA-Z0-9]*)(_)*(.)*)+"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Sentence">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This data type requires two or more words </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern value="(\w+\W*)+( )+(\W*\w*\W*\s*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="ToolNameConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> This defines what a Tool name is: Alphanumeric characters and optional underscore (_) or dash (-) characters, optionally followed by a dot and more alphanumeric characters. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z][a-zA-Z0-9]*(_*-*.*[a-zA-Z0-9])*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UCLetterType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a UpperCase Letter type, which can be any combination of upper case characters followed by zero or more underscore and/or uppercase alphanumeric characters </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]{1}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UCNameType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a UpperCase Name, which can be any combination of upper case characters followed by zero or more underscore and/or uppercase alphanumeric characters </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]+(_*[A-Z0-9]*( )*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="UserName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Specify a User Name</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z]+(( )*.?-?[a-zA-Z]*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="V1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">%VAR%(Directory)*(File_Names)*</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="((%[A-Z](_*[A-Z0-9]*)*%)+((((\\)?_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\\)?)*)"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="V2">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">($VAR | $( VAR) | ${VAR})(Directory)*(File_Names)</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(($[A-Z](_*[A-Z0-9]*)*)+||($\([A-Z](_*[A-Z0-9]*)*\))+||($\{[A-Z](_*[A-Z0-9]*)*\})+)+(\/)?(((((_*-*.*[a-zA-Z0-9]*)*(_*-*.*[a-zA-Z0-9])*)+(\/)?)*)*)"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VariableConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">VariableConvention is a UNION of: $VAR, $( VAR), ${VAR} and %VAR% and Directory and File Names</xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="V1 V2"/>
+ </xs:simpleType>
+ <xs:simpleType name="VariableGuidType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> The GUID data is union of GuidNaming Convetion and GuidArrayType. </xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="GuidArrayType GuidNamingConvention Zero"/>
+ </xs:simpleType>
+ <xs:simpleType name="VariableNamingConvention">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">VariableConvention is a UNION of: $VAR, $( VAR), ${VAR} and %VAR%</xs:documentation>
+ </xs:annotation>
+ <xs:union memberTypes="Variable_DOS Variable_UNIX Variable_UNIX_Scope1 Variable_UNIX_Scope2"/>
+ </xs:simpleType>
+ <xs:simpleType name="Variable_DOS">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a DOS Variable Name: %VAR% It must start with an Upper Case character.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="%[A-Z](_*[A-Z0-9]*)*%"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Variable_UNIX">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a UNIX Variable Name: $VAR It must start with an Upper Case character.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="$[A-Z](_*[A-Z0-9]*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Variable_UNIX_Scope1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a UNIX Variable Name: $( VAR1) It must start with an Upper Case character.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="$\([A-Z](_*[A-Z0-9]*)*\)"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Variable_UNIX_Scope2">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a UNIX Variable Name: ${ VAR1} It must start with an Upper Case character.</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="$\{[A-Z](_*[A-Z0-9]*)*\}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="VersionDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a Version Number, which can be any combination of a number followed by zero or more alphanumeric-dot-alphanumeric characters </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="xs:normalizedString"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="Zero">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">Define Zero as a vaild value</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:pattern value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="OldVersionDataType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en"> Definition of a Version Number, which can be any combination of a number followed by zero or more alphanumeric-dot-alphanumeric characters </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="([0-9])+[a-zA-Z0-9]*(-?.?([a-zA-Z0-9])*)*"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/Tools/XMLSchema/SurfaceArea.xsd b/Tools/XMLSchema/SurfaceArea.xsd
new file mode 100644
index 0000000000..7b309570ae
--- /dev/null
+++ b/Tools/XMLSchema/SurfaceArea.xsd
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2006/Edk2.0" xmlns="http://www.TianoCore.org/2006/Edk2.0">
+ <!--
+ Filename: SurfaceArea.xsd
+
+ Copyright (c) 2006, Intel Corp.
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which may be found at http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ -->
+ <xs:include schemaLocation="FrameworkHeaders.xsd"/>
+ <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+ <xs:include schemaLocation="FrameworkPlatformDataElements.xsd"/>
+ <xs:element name="FrameworkDatabase">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the valid format for the Package Database File. Note: MsaList is used for Modules that have not yet been included in a package.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="FdbHeader"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PackageList"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="ModuleList"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PlatformDescriptions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="FrameworkPlatformDescription">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the valid format for the Framework Platform Description (FPD) File.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="PlatformHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Flash"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="TianoImage"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryModuleBuildDescription">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Module Build Description that contains the list of overrides, library instances that can or must be used by the library.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="MbdLibHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="LibraryModuleSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Module Library Surface Area Description that contains the list of the module's source files, library classes that can or must be used by the module, the Class(es) of the Library that will be supported by the library, the Include Paths, Protocols and Ppi's that are either produced or consued.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="MsaLibHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleBuildDescription">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Module Build Description that contains the list of overrides, library instances that can or must be used by the module.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="MbdHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ModuleSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is the Module Surface Area Description that contains the list of the module's source files, library classes that can or must be used by the module, the Include Paths, Protocols and Ppi's that are either produced or consued.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">This is valid content for a Package Surface Area Description (SPD) file.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" ref="SpdHeader"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>
+ <xs:element minOccurs="1" maxOccurs="1" ref="MsaFiles"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PackageHeaders"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="GuidDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="ProtocolDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PpiDeclarations"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="PcdDefinitions"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/Tools/XMLSchema/SurfaceArea.xsdconfig b/Tools/XMLSchema/SurfaceArea.xsdconfig
new file mode 100644
index 0000000000..aa52361510
--- /dev/null
+++ b/Tools/XMLSchema/SurfaceArea.xsdconfig
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2006, Intel Corp.
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which may be found at http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+-->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">
+ <xb:namespace uri="http://www.TianoCore.org/2006/Edk2.0">
+ <xb:package>org.tianocore</xb:package>
+ </xb:namespace>
+</xb:config>
+