]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/XMLSchema/FrameworkPlatformDataElements.xsd
Merge latest from branch.
[mirror_edk2.git] / Tools / XMLSchema / FrameworkPlatformDataElements.xsd
index d9da5f79b97e5c38b5e941645074beef81088897..85ed426f95ed6d4a3db782f82f965daa0dab33ff 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">\r
-    <!--\r
+  <!--\r
     Filename: FrameworkPlatformDataElements.xsd\r
     \r
     Copyright (c) 2006, Intel Corp.\r
     WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
     \r
   -->\r
-    <xs:annotation>\r
-        <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:include schemaLocation="NamingConvention.xsd"/>\r
-    <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
-    <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
-    <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
-    <xs:element name="Capsule">\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="1" maxOccurs="1" name="CapsuleId" type="xs:string"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="CapsuleOptions"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="CapsuleAttributes"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="CapsuleAttributes">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Enable"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Disable"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="CapsuleOptions">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Enable"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Disable"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="Capsules">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">Permit multiple Capsule Sections</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
-                <xs:element ref="Capsule"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="Disable" type="xs:string"/>\r
-    <xs:element name="Enable" type="xs:string"/>\r
-    <xs:element name="Flash">\r
-        <xs:complexType>\r
-            <xs:annotation>\r
-                <xs:documentation xml:lang="en">We allow specifying the Flash layout in this directory, or we allow specifying a flashmap filename</xs:documentation>\r
-            </xs:annotation>\r
+  <xs:annotation>\r
+    <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>\r
+  </xs:annotation>\r
+  <xs:include schemaLocation="NamingConvention.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+  <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
+  <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>\r
+  <xs:element name="DataArray">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="HexByteArrayType">\r
+          <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="DataId">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="xs:NCName">\r
+          <xs:attribute name="Seq" type="xs:nonNegativeInteger" use="required"/>\r
+          <xs:attribute name="SubRegion" type="UCNameType" use="required"/>\r
+          <xs:attribute name="DataSource" type="xs:normalizedString" use="required"/>\r
+          <xs:attribute name="SourceType" type="xs:NCName" use="required"/>\r
+          <xs:attribute name="DataSize" type="HexAddressType" use="optional"/>\r
+          <xs:attribute name="Alignment" type="xs:positiveInteger" use="optional"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="DataRegions">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="FvDataRegion">\r
+          <xs:complexType>\r
             <xs:sequence>\r
-                <xs:choice>\r
-                    <xs:element name="FlashDefinition" type="FlashData"/>\r
-                    <xs:element name="FlashDefinitionFile" type="FileNameConvention"/>\r
-                </xs:choice>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Capsules"/>\r
+              <xs:element minOccurs="1" maxOccurs="unbounded" ref="DataId"/>\r
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="DataArray"/>\r
             </xs:sequence>\r
-            <xs:attribute name="MicrocodeFile" type="FileNameConvention" use="optional"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FlashDeviceImage">\r
-        <xs:annotation>\r
-            <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>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:all>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="RawData">\r
-                    <xs:complexType>\r
-                        <xs:sequence minOccurs="0" maxOccurs="1">\r
-                            <xs:element name="Data" type="xs:string"/>\r
-                        </xs:sequence>\r
-                        <xs:attributeGroup ref="RawDataAttributes"/>\r
-                    </xs:complexType>\r
-                </xs:element>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="File">\r
+            <xs:attribute name="Name" type="UCNameType" use="required"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="Flash">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FlashDefinitionFile"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
+      </xs:sequence>\r
+      <xs:attribute name="MicrocodeFile" type="PathAndFilename" use="optional"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- Valid Flash Definition Files that can be used for a platform The UiName and Perferred tags are optional, for use with  Wizards.-->\r
+  <xs:element name="FlashDefinitionFile">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="PathAndFilename">\r
+          <!-- Id will be required eventually. -->\r
+          <xs:attribute name="Id" type="KeywordType" use="optional"/>\r
+          <xs:attribute name="UiName" type="UiNameType" use="optional"/>\r
+          <xs:attribute name="Preferred" type="xs:boolean" use="optional" default="false"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <!-- For Future Use! -->\r
+  <!-- This describes the physical layout of the hardware device, used by tools to verify different regions fit within a given number of blocks. -->\r
+  <!-- An EFI Region MUST start on a block boundary.  A region may span multiple blocks. -->\r
+  <xs:element name="FlashDevice">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element name="PartNumber" type="xs:NCName"/>\r
+        <xs:choice>\r
+          <xs:sequence minOccurs="0">\r
+            <!-- Use this sequence for a part with fixed block sizes -->\r
+            <xs:element minOccurs="1" maxOccurs="1" name="NumBlocks" type="xs:positiveInteger"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="BlockSize" type="HexAddressType"/>\r
+          </xs:sequence>\r
+          <xs:sequence minOccurs="0">\r
+            <!-- Use this sequence for a part with variable block sizes -->\r
+            <xs:element maxOccurs="unbounded" name="VariableBlockSize">\r
+              <xs:complexType>\r
+                <xs:simpleContent>\r
+                  <xs:extension base="HexAddressType">\r
+                    <xs:attribute name="BlockNum" type="xs:nonNegativeInteger" use="required"/>\r
+                  </xs:extension>\r
+                </xs:simpleContent>\r
+              </xs:complexType>\r
+            </xs:element>\r
+          </xs:sequence>\r
+        </xs:choice>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FlashDeviceDefinitions">\r
+    <xs:complexType>\r
+      <xs:annotation>\r
+        <xs:documentation xml:lang="en">We allow specifying the FlashMap filename</xs:documentation>\r
+      </xs:annotation>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="FlashDefinitionFile"/>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="FvImages"/>\r
+        <!-- DataRegions is for Future Use! -->\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="DataRegions"/>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageBindingSequence"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FrameworkModules">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is used in a Framework Platform Description (FPD) file</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvAttribute">\r
+    <xs:complexType>\r
+      <xs:attribute name="Name" type="xs:NCName" use="required"/>\r
+      <xs:attribute name="Value" type="xs:normalizedString" use="required"/>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FwImage">\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="1" ref="FvRegionName"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvOption"/>\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvAttribute"/>\r
+      </xs:sequence>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvImageBindingSequence">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="ValidRegionNameListType">\r
+          <xs:attribute name="PartId" type="KeywordType" use="required"/>\r
+          <xs:attribute name="OutputFile" type="PathAndFilename" use="required"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvImages">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This section allows the user to define specific information regarding the FvImage</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:choice>\r
+        <xs:sequence minOccurs="0">\r
+          <!-- This is the current style -->\r
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">\r
+            <xs:complexType>\r
+              <xs:attribute name="Name" type="xs:string" use="required"/>\r
+              <xs:attribute name="Value" type="xs:string" use="required"/>\r
+            </xs:complexType>\r
+          </xs:element>\r
+          <xs:choice>\r
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImage">\r
+              <xs:complexType>\r
+                <xs:sequence>\r
+                  <xs:element minOccurs="1" maxOccurs="unbounded" name="FvImageNames" type="xs:NCName"/>\r
+                  <xs:element minOccurs="0" maxOccurs="1" name="FvImageOptions">\r
                     <xs:complexType>\r
-                        <xs:attributeGroup ref="FlashDeviceImageFileAttributes"/>\r
+                      <xs:sequence>\r
+                        <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">\r
+                          <xs:complexType>\r
+                            <xs:attribute name="Name" type="xs:string" use="required"/>\r
+                            <xs:attribute name="Value" type="xs:string" use="required"/>\r
+                          </xs:complexType>\r
+                        </xs:element>\r
+                      </xs:sequence>\r
                     </xs:complexType>\r
+                  </xs:element>\r
+                </xs:sequence>\r
+                <xs:attribute name="Type" type="FvImageTypes" use="optional"/>\r
+              </xs:complexType>\r
+            </xs:element>\r
+          </xs:choice>\r
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImageName">\r
+            <xs:complexType>\r
+              <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="FvImageOptions">\r
+                  <xs:complexType>\r
+                    <xs:sequence>\r
+                      <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">\r
+                        <xs:complexType>\r
+                          <xs:attribute name="Name" type="xs:string" use="required"/>\r
+                          <xs:attribute name="Value" type="xs:string" use="required"/>\r
+                        </xs:complexType>\r
+                      </xs:element>\r
+                    </xs:sequence>\r
+                  </xs:complexType>\r
                 </xs:element>\r
-            </xs:all>\r
-            <xs:attributeGroup ref="FlashDeviceImageAttributes"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FlashDeviceInfo">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This is the Flash Devcie definition List</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
+              </xs:sequence>\r
+              <xs:attribute name="Name" type="FvRegionTypes" use="required"/>\r
+            </xs:complexType>\r
+          </xs:element>\r
+        </xs:sequence>\r
+      </xs:choice>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="FvRegionName">\r
+    <xs:complexType>\r
+      <xs:simpleContent>\r
+        <xs:extension base="KeywordType">\r
+          <xs:attributeGroup ref="FvRegionNameAttributes"/>\r
+        </xs:extension>\r
+      </xs:simpleContent>\r
+    </xs:complexType>\r
+  </xs:element>\r
+  <xs:element name="ModuleSA">\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This element is used to specify information in the FPD ModuleSA section.</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>\r
+        <!-- Only specification is allow here. We need to let this be an addtion OR, if the WORD portion MATCHES, this entry takes precedence.</xs:documentation -->\r
+        <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>\r
+        <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>\r
+        <!-- The following BuildOptions Sections is for Legacy Ffs -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="BuildOptions">\r
+          <xs:complexType>\r
             <xs:sequence>\r
-                <xs:element name="Blocks">\r
-                    <xs:complexType>\r
+              <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="ImageEntryPoint" type="C_NameType"/>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory">\r
+                <xs:complexType>\r
+                  <xs:simpleContent>\r
+                    <xs:extension base="xs:anyURI">\r
+                      <xs:attribute default="UNIFIED" name="IntermediateDirectories" use="optional">\r
+                        <xs:simpleType>\r
+                          <xs:restriction base="UCNameType">\r
+                            <xs:enumeration value="MODULE"/>\r
+                            <xs:enumeration value="UNIFIED"/>\r
+                          </xs:restriction>\r
+                        </xs:simpleType>\r
+                      </xs:attribute>\r
+                    </xs:extension>\r
+                  </xs:simpleContent>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element minOccurs="0" maxOccurs="1" name="Ffs">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="Attribute">\r
+                      <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="255" name="Block">\r
-                                <xs:complexType>\r
-                                    <xs:simpleContent>\r
-                                        <xs:extension base="BlockNameType">\r
-                                            <xs:attributeGroup ref="BlockAttributes"/>\r
-                                        </xs:extension>\r
-                                    </xs:simpleContent>\r
-                                </xs:complexType>\r
-                            </xs:element>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="Name" type="C_NameType"/>\r
+                          <xs:element minOccurs="1" maxOccurs="1" name="Value" type="C_NameType"/>\r
                         </xs:sequence>\r
-                    </xs:complexType>\r
-                </xs:element>\r
-                <xs:element name="Regions">\r
-                    <xs:complexType>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="Sections">\r
+                      <xs:complexType>\r
+                        <xs:sequence minOccurs="1">\r
+                          <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                          <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">\r
+                            <xs:complexType>\r
+                              <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                                <xs:element name="Section">\r
+                                  <xs:complexType>\r
+                                    <xs:sequence>\r
+                                      <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                      <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                      <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                      <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                      <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                                    </xs:sequence>\r
+                                    <xs:attributeGroup ref="SectionsAttributes"/>\r
+                                  </xs:complexType>\r
+                                </xs:element>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element name="Sections">\r
+                <xs:complexType>\r
+                  <xs:sequence minOccurs="1">\r
+                    <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Region">\r
-                                <xs:complexType>\r
-                                    <xs:all>\r
-                                        <xs:element name="SubRegions">\r
-                                            <xs:complexType>\r
-                                                <xs:sequence minOccurs="0" maxOccurs="unbounded">\r
-                                                    <xs:element name="SubRegion">\r
-                                                        <xs:complexType>\r
-                                                            <xs:simpleContent>\r
-                                                                <xs:extension base="xs:string">\r
-                                                                    <xs:attributeGroup ref="SubRegionAttributes"/>\r
-                                                                </xs:extension>\r
-                                                            </xs:simpleContent>\r
-                                                        </xs:complexType>\r
-                                                    </xs:element>\r
-                                                </xs:sequence>\r
-                                            </xs:complexType>\r
-                                        </xs:element>\r
-                                    </xs:all>\r
-                                    <xs:attributeGroup ref="RegionAttributes"/>\r
-                                </xs:complexType>\r
-                            </xs:element>\r
+                          <xs:element ref=" Filenames " minOccurs="0"/>\r
+                          <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                          <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                          <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                          <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
                         </xs:sequence>\r
-                    </xs:complexType>\r
-                </xs:element>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="FlashDeviceInfoAttributes"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FlashDeviceOverrideImage">\r
-        <xs:annotation>\r
-            <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>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="Name" type="NameConvention"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="File" type="FvImageOverrideFileType"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FlashDeviceOverrideInfo">\r
-        <xs:annotation>\r
-            <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>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="Name" type="UCNameType"/>\r
-                <xs:element default="512KB" minOccurs="0" maxOccurs="1" name="FlashSize" type="FlashSize"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="BaseAddress" type="HexAddressType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="DirectoryNamingConvention"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="MicrocodeFile" type="FileNameConvention"/>\r
-                <xs:element minOccurs="0" maxOccurs="255" name="Block" type="BlockNameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="Region" type="RegionDataType"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FvImage">\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageNames"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FvImageOptions"/>\r
-            </xs:sequence>\r
-            <xs:attribute name="Type" type="FvImageTypes" use="optional"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FvImageName">\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element ref="FvImageOptions"/>\r
-            </xs:sequence>\r
-            <xs:attribute name="Name" type="FvRegionTypes" use="required"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FvImageNames" type="xs:NCName"/>\r
-    <xs:element name="FvImageOptions">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This element is used specify different name value pairs.</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Enable"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Disable"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FvImages">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This section allows the user to define specific information regarding the FvImage</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="NameValue"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImage"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImageName"/>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                    <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                          <xs:element name="Section">\r
+                            <xs:complexType>\r
+                              <xs:sequence>\r
+                                <xs:element ref=" Filenames " minOccurs="0"/>\r
+                                <xs:element name="Args" type=" ArgsType " minOccurs="0"/>\r
+                                <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>\r
+                                <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>\r
+                                <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>\r
+                              </xs:sequence>\r
+                              <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                            </xs:complexType>\r
+                          </xs:element>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                  <xs:attributeGroup ref=" SectionsAttributes "/>\r
+                </xs:complexType>\r
+              </xs:element>\r
+              <xs:element name="Options">\r
+                <xs:complexType>\r
+                  <xs:sequence>\r
+                    <xs:element name=" Option " minOccurs="1" maxOccurs="unbounded">\r
+                      <xs:complexType>\r
+                        <xs:simpleContent>\r
+                          <xs:extension base=" xs:normalizedString ">\r
+                            <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>\r
+                            <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>\r
+                            <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>\r
+                            <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>\r
+                            <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>\r
+                            <xs:attribute name="Platform" type=" UiNameType " use="optional"/>\r
+                          </xs:extension>\r
+                        </xs:simpleContent>\r
+                      </xs:complexType>\r
+                    </xs:element>\r
+                  </xs:sequence>\r
+                </xs:complexType>\r
+              </xs:element>\r
             </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="ModuleSA">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This element is used to specify information in the Platform Description File.</xs:documentation>\r
-            <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>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
+            <!-- Do not use ToolChain - it is a legacy value -->\r
+            <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>\r
+            <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>\r
+            <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>\r
+            <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>\r
+            <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>\r
+            <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>\r
+          </xs:complexType>\r
+        </xs:element>\r
+        <!-- The following Externs Section is for Legacy Ffs  -->\r
+        <xs:element minOccurs="0" maxOccurs="1" name="Externs">\r
+          <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
-                <!-- DO NOT USE! REMOVE SourceFiles in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>\r
-                <!-- DO NOT USE! REMOVE Includes in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>\r
-                <!-- Libraries stays in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>\r
-                <!-- DO NOT USE! REMOVE Protocols in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>\r
-                <!-- DO NOT USE! REMOVE Events in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>\r
-                <!-- DO NOT USE! REMOVE Hobs in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>\r
-                <!-- DO NOT USE! REMOVE PPIs in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>\r
-                <!-- DO NOT USE! REMOVE Variables in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>\r
-                <!-- DO NOT USE! REMOVE BootModes in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>\r
-                <!-- DO NOT USE! REMOVE SystemTables in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>\r
-                <!-- DO NOT USE! REMOVE DataHubs in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>\r
-                <!-- DO NOT USE! REMOVE Formsets in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>\r
-                <!-- DO NOT USE! REMOVE Guids in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>\r
-                <!-- EXTERNS stays in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
-                <xs:choice>\r
-                    <!-- DO NOT USE! REMOVE PcdBuildDeclarations in FINAL -->\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>\r
-                    <!-- PcdBuildDefinition stays in FINAL -->\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>\r
-                </xs:choice>\r
-                <!-- BuildOptions stays in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="MsaAttributes"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="NameValue">\r
-        <xs:complexType>\r
-            <xs:simpleContent>\r
-                <xs:extension base="xs:string">\r
-                    <xs:attribute name="Name" type="xs:string" use="required"/>\r
-                    <xs:attribute name="Value" type="xs:string" use="required"/>\r
-                </xs:extension>\r
-            </xs:simpleContent>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="Overrides">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">DO NOT USE! - Removing this from Schema</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceOverrideInfo"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceOverrideImage"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="PlatformDescriptions">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">DO NOT USE! - Use PlatformList instead</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence maxOccurs="unbounded">\r
-                <xs:element ref="Platform"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="PlatformList">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This is used in the Framework Database file</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence maxOccurs="unbounded">\r
-                <xs:element ref="Platform"/>\r
+              <xs:element name="PcdIsDriver" type=" PcdDriverTypes " minOccurs="0" maxOccurs="1"/>\r
+              <xs:element name="Specification" type=" Sentence " minOccurs="0" maxOccurs="unbounded"/>\r
+              <xs:element name="Extern" minOccurs="0" maxOccurs="unbounded">\r
+                <xs:complexType>\r
+                  <xs:choice minOccurs="1">\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" ModuleEntryPoint " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" ModuleUnloadImage " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                    </xs:sequence>\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" Constructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>\r
+                      <xs:element name=" Destructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>\r
+                    </xs:sequence>\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" DriverBinding " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" ComponentName " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" DriverConfig " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" DriverDiag " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                    </xs:sequence>\r
+                    <xs:sequence minOccurs="0" maxOccurs="1">\r
+                      <xs:element name=" SetVirtualAddressMapCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                      <xs:element name=" ExitBootServicesCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>\r
+                    </xs:sequence>\r
+                  </xs:choice>\r
+                  <xs:attributeGroup ref=" ExternAttributes "/>\r
+                </xs:complexType>\r
+              </xs:element>\r
             </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="FrameworkModules">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">This is used in a Framework Platform Description (FPD) file</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="SEC" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="PEI_CORE" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="PEIM" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="DXE_CORE" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="DXE_DRIVERS" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="OTHER_COMPONENTS" type="Components"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="TianoImage">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">DO NOT USE - Use FrameworkModules Instead.</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="SEC" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="PEI_CORE" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="PEIM" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="DXE_CORE" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="DXE_DRIVERS" type="Components"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="OTHER_COMPONENTS" type="Components"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:simpleType name="EfiFvAttributeType">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">The list of EFI_FLASH_AREA Attributes</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:restriction base="UCNameType">\r
-            <xs:enumeration value="EFI_FLASH_AREA_FV"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_MEMMAPPED_FV"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_SUBFV"/>\r
-        </xs:restriction>\r
-    </xs:simpleType>\r
-    <xs:simpleType name="EfiFvAreaType">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">The list of valid EFI Area Types</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:restriction base="UCNameType">\r
-            <xs:enumeration value="EFI_FLASH_AREA_EFI_VARIABLES"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_UNUSED"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_MAIN_BIOS"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_GUID_DEFINED"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_FTW_STATE"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_FTW_BACKUP"/>\r
-            <xs:enumeration value="EFI_FLASH_AREA_RECOVERY_BIOS"/>\r
-        </xs:restriction>\r
-    </xs:simpleType>\r
-    <xs:simpleType name="EfiNameGuidType">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">Right now, only EFI_FLASH_MAP_HOB_GUID is defined</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:restriction base="UCNameType">\r
-            <xs:enumeration value="EFI_FLASH_MAP_HOB_GUID"/>\r
-        </xs:restriction>\r
-    </xs:simpleType>\r
-    <xs:simpleType name="FlashSize">\r
-        <xs:restriction base="xs:string">\r
-            <xs:enumeration value="256KB"/>\r
-            <xs:enumeration value="512KB"/>\r
-            <xs:enumeration value="1MB"/>\r
-            <xs:enumeration value="2MB"/>\r
-            <xs:enumeration value="4MB"/>\r
-        </xs:restriction>\r
-    </xs:simpleType>\r
-    <xs:simpleType name="FvImageTypes">\r
-        <xs:restriction base="xs:NCName">\r
-            <xs:enumeration value="Attributes"/>\r
-            <xs:enumeration value="Options"/>\r
-            <xs:enumeration value="Components"/>\r
-            <xs:enumeration value="ValidImageNames"/>\r
-        </xs:restriction>\r
-    </xs:simpleType>\r
-    <xs:simpleType name="FvSubRegionTypes">\r
-        <xs:restriction base="UCNameType">\r
-            <xs:enumeration value="NV_VARIABLE_STORE"/>\r
-            <xs:enumeration value="MICROCODE"/>\r
-            <xs:enumeration value="NV_FTW_WORKING"/>\r
-        </xs:restriction>\r
-    </xs:simpleType>\r
-    <xs:complexType name="Components">\r
-        <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
-            <xs:element ref="ModuleSA"/>\r
-        </xs:sequence>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:sequence>\r
+      <xs:attributeGroup ref="MsaAttributes"/>\r
     </xs:complexType>\r
-    <xs:complexType name="FlashData">\r
-        <xs:sequence>\r
-            <xs:element minOccurs="0" maxOccurs="unbounded" name="UserDefinedFvRegion" type="NameConvention"/>\r
-            <xs:choice minOccurs="0" maxOccurs="1">\r
-                <xs:sequence>\r
-                    <xs:element minOccurs="1" maxOccurs="1" ref="FlashDeviceInfo"/>\r
-                    <xs:element minOccurs="1" maxOccurs="1" ref="FlashDeviceImage"/>\r
-                </xs:sequence>\r
-            </xs:choice>\r
-            <xs:element minOccurs="0" maxOccurs="1" ref="Overrides"/>\r
-        </xs:sequence>\r
-    </xs:complexType>\r
-    <xs:complexType name="FvImageFileType">\r
-        <xs:sequence>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Name" type="FileNameConvention"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Region" type="FvRegionTypes"/>\r
-            <xs:element minOccurs="1" maxOccurs="unbounded" name="RawData" type="RawDataType"/>\r
-        </xs:sequence>\r
+  </xs:element>\r
+  <xs:element name="FvOption">\r
+    <xs:complexType>\r
+      <xs:attribute name="Name" type="xs:NCName" use="required"/>\r
+      <xs:attribute name="Value" type="xs:normalizedString" use="required"/>\r
     </xs:complexType>\r
-    <xs:complexType name="FvImageOverrideFileType">\r
-        <xs:sequence>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="Name" type="FileNameConvention"/>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="Region" type="FvRegionTypes"/>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="UserDefinedFvRegion" type="NameConvention"/>\r
-            <xs:element minOccurs="0" maxOccurs="unbounded" name="RawData" type="RawDataType"/>\r
-        </xs:sequence>\r
-    </xs:complexType>\r
-    <xs:complexType name="RawDataType">\r
-        <xs:sequence>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Name" type="NameConvention"/>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="Region" type="FvRegionTypes"/>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="UserDefinedFvRegion" type="NameConvention"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="SubRegion" type="FvSubRegionTypes"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Data" type="HexDataType"/>\r
-        </xs:sequence>\r
-    </xs:complexType>\r
-    <xs:complexType name="RegionDataType">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">Define the regions and their uses for the device</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:sequence>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Name" type="UCNameType"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Size" type="HexAddressType"/>\r
-            <xs:element minOccurs="1" maxOccurs="unbounded" name="Attributes" type="EfiFvAttributeType"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="AreaType" type="EfiFvAreaType"/>\r
-            <xs:element minOccurs="0" maxOccurs="unbounded" name="SubRegion" type="SubRegionType"/>\r
-        </xs:sequence>\r
-    </xs:complexType>\r
-    <xs:complexType name="SubRegionType">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">Define the regions and their uses for the device</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:sequence>\r
-            <xs:element default="true" minOccurs="1" maxOccurs="1" name="CreateHob" type="xs:boolean"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Name" type="UCNameType"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Size" type="HexAddressType"/>\r
-            <xs:element minOccurs="1" maxOccurs="unbounded" name="Attributes" type="EfiFvAttributeType"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="AreaType" type="EfiFvAreaType"/>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="NameGuid" type="EfiNameGuidType"/>\r
-        </xs:sequence>\r
+  </xs:element>\r
+  <xs:element name="PlatformList">\r
+    <!-- Valid for DB usage only! -->\r
+    <xs:annotation>\r
+      <xs:documentation xml:lang="en">This is used in the FrameworkDatabase file</xs:documentation>\r
+    </xs:annotation>\r
+    <xs:complexType>\r
+      <xs:sequence>\r
+        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
+      </xs:sequence>\r
     </xs:complexType>\r
-    <xs:attributeGroup name="BlockAttributes">\r
-        <xs:attribute name="Name" type="BlockNameType" use="required"/>\r
-        <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
-        <xs:attribute name="Flags" type="HexAddressType" use="optional"/>\r
-    </xs:attributeGroup>\r
-    <xs:attributeGroup name="FlashDeviceImageAttributes">\r
-        <xs:attribute name="Name" type="xs:string" use="required"/>\r
-    </xs:attributeGroup>\r
-    <xs:attributeGroup name="FlashDeviceImageFileAttributes">\r
-        <xs:attribute name="Name" type="xs:string" use="required"/>\r
-        <xs:attribute name="Region" type="xs:string" use="required"/>\r
-        <xs:attribute name="SubRegion" type="xs:string" use="optional"/>\r
-        <xs:attribute name="Optional" type="xs:boolean" use="optional"/>\r
-    </xs:attributeGroup>\r
-    <xs:attributeGroup name="FlashDeviceInfoAttributes">\r
-        <xs:attribute name="Name" type="xs:string" use="required"/>\r
-        <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
-        <xs:attribute name="BaseAddress" type="HexAddressType" use="required"/>\r
-        <xs:attribute name="ErasePolarity" type="Polarity" use="required"/>\r
-    </xs:attributeGroup>\r
-    <xs:attributeGroup name="RawDataAttributes">\r
-        <xs:attribute name="Name" type="xs:string" use="required"/>\r
-        <xs:attribute name="Region" type="xs:string" use="required"/>\r
-        <xs:attribute name="SubRegion" type="xs:string" use="required"/>\r
-    </xs:attributeGroup>\r
-    <xs:attributeGroup name="RegionAttributes">\r
-        <xs:attribute name="Name" type="xs:string" use="required"/>\r
-        <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
-        <xs:attribute name="Flags" type="HexAddressType" use="optional"/>\r
-        <xs:attribute name="Alignment" type="HexAddressType" use="optional"/>\r
-        <xs:attribute name="Attributes" type="xs:string" use="required"/>\r
-        <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>\r
-    </xs:attributeGroup>\r
-    <xs:attributeGroup name="SubRegionAttributes">\r
-        <xs:attribute name="CreateHob" type="xs:boolean" use="required"/>\r
-        <xs:attribute name="Name" type="xs:string" use="required"/>\r
-        <xs:attribute name="Size" type="HexAddressType" use="required"/>\r
-        <xs:attribute name="Attributes" type="xs:string" use="required"/>\r
-        <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>\r
-        <xs:attribute name="NameGuid" type="xs:string" use="required"/>\r
-        <xs:attribute name="AreaTypeGuid" type="xs:string" use="optional"/>\r
-        <xs:attribute name="FileSystemGuid" type="xs:string" use="optional"/>\r
-    </xs:attributeGroup>\r
+  </xs:element>\r
 </xs:schema>\r