]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1) Move almost new schema related to PCD on branch to transition scheme in main trunk.
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 21 Jun 2006 16:07:38 +0000 (16:07 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 21 Jun 2006 16:07:38 +0000 (16:07 +0000)
2) Remove the original unused PCD schema in FPD in main trunk.
2) Modify PCD tools to support updated schema in main trunk.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@585 6f19259b-4bc3-4df7-8a09-765794883524

Tools/Source/GenBuild/org/tianocore/build/pcd/action/CollectPCDAction.java
Tools/XMLSchema/FrameworkDataAttributes.xsd
Tools/XMLSchema/FrameworkDataElements.xsd
Tools/XMLSchema/FrameworkDataTypes.xsd
Tools/XMLSchema/FrameworkPlatformDataElements.xsd
Tools/XMLSchema/SurfaceArea.xsd

index 92f320bc3557a07979f3ac3b7bd4fd5060db3495..f9de63fc0d208173a1e1ba686027e418ed80f449 100644 (file)
@@ -1530,7 +1530,11 @@ public class CollectPCDAction {
                 pcdType      = Token.getpcdTypeFromString(pcdBuildData.getItemType().toString());\r
                 datumType    = Token.getdatumTypeFromString(pcdBuildData.getDatumType().toString());\r
                 tokenNumber  = Integer.decode(pcdBuildData.getToken().toString());\r
                 pcdType      = Token.getpcdTypeFromString(pcdBuildData.getItemType().toString());\r
                 datumType    = Token.getdatumTypeFromString(pcdBuildData.getDatumType().toString());\r
                 tokenNumber  = Integer.decode(pcdBuildData.getToken().toString());\r
-                datum        = pcdBuildData.getValue();\r
+                if (pcdBuildData.getValue() != null) {\r
+                    datum = pcdBuildData.getValue().toString();\r
+                } else {\r
+                    datum = null;\r
+                }\r
                 maxDatumSize = pcdBuildData.getMaxDatumSize();\r
 \r
                 if ((pcdType    == Token.PCD_TYPE.FEATURE_FLAG) &&\r
                 maxDatumSize = pcdBuildData.getMaxDatumSize();\r
 \r
                 if ((pcdType    == Token.PCD_TYPE.FEATURE_FLAG) &&\r
@@ -2128,6 +2132,7 @@ public class CollectPCDAction {
         boolean             hasSkuId0       = false;\r
         Token.PCD_TYPE      pcdType         = Token.PCD_TYPE.UNKNOWN;\r
         int                 tokenNumber     = 0;\r
         boolean             hasSkuId0       = false;\r
         Token.PCD_TYPE      pcdType         = Token.PCD_TYPE.UNKNOWN;\r
         int                 tokenNumber     = 0;\r
+        String              hiiDefaultValue = null;\r
 \r
         List<DynamicPcdBuildDefinitions.PcdBuildData.SkuInfo>   skuInfoList = null;\r
         DynamicPcdBuildDefinitions.PcdBuildData                 dynamicInfo = null;\r
 \r
         List<DynamicPcdBuildDefinitions.PcdBuildData.SkuInfo>   skuInfoList = null;\r
         DynamicPcdBuildDefinitions.PcdBuildData                 dynamicInfo = null;\r
@@ -2198,10 +2203,10 @@ public class CollectPCDAction {
             // Judge whether is DefaultGroup at first, because most case is DefautlGroup.\r
             // \r
             if (skuInfoList.get(index).getValue() != null) {\r
             // Judge whether is DefaultGroup at first, because most case is DefautlGroup.\r
             // \r
             if (skuInfoList.get(index).getValue() != null) {\r
-                skuInstance.value.setValue(skuInfoList.get(index).getValue());\r
+                skuInstance.value.setValue(skuInfoList.get(index).getValue().toString());\r
                 if ((exceptionString = verifyDatum(token.cName, \r
                                                    null, \r
                 if ((exceptionString = verifyDatum(token.cName, \r
                                                    null, \r
-                                                   skuInfoList.get(index).getValue(), \r
+                                                   skuInfoList.get(index).getValue().toString()\r
                                                    token.datumType, \r
                                                    token.datumSize)) != null) {\r
                     throw new EntityException(exceptionString);\r
                                                    token.datumType, \r
                                                    token.datumSize)) != null) {\r
                     throw new EntityException(exceptionString);\r
@@ -2215,7 +2220,7 @@ public class CollectPCDAction {
                 // \r
                 if (datum != null) {\r
                     if ((skuInstance.id == 0)                                   &&\r
                 // \r
                 if (datum != null) {\r
                     if ((skuInstance.id == 0)                                   &&\r
-                        !datum.equalsIgnoreCase(skuInfoList.get(index).getValue())) {\r
+                        !datum.toString().equalsIgnoreCase(skuInfoList.get(index).getValue().toString())) {\r
                         exceptionString = "[FPD file error] For dynamic PCD " + token.cName + ", the value in module " + moduleName + " is " + datum.toString() + " but the "+\r
                                           "value of sku 0 data in <DynamicPcdBuildDefinition> is " + skuInstance.value.value + ". They are must be same!"+\r
                                           " or you could not define value for a dynamic PCD in every <ModuleSA>!"; \r
                         exceptionString = "[FPD file error] For dynamic PCD " + token.cName + ", the value in module " + moduleName + " is " + datum.toString() + " but the "+\r
                                           "value of sku 0 data in <DynamicPcdBuildDefinition> is " + skuInstance.value.value + ". They are must be same!"+\r
                                           " or you could not define value for a dynamic PCD in every <ModuleSA>!"; \r
@@ -2255,10 +2260,16 @@ public class CollectPCDAction {
                 if (exceptionString != null) {\r
                     throw new EntityException(exceptionString);\r
                 }\r
                 if (exceptionString != null) {\r
                     throw new EntityException(exceptionString);\r
                 }\r
+                \r
+                if (skuInfoList.get(index).getHiiDefaultValue() != null) {\r
+                    hiiDefaultValue = skuInfoList.get(index).getHiiDefaultValue().toString();\r
+                } else {\r
+                    hiiDefaultValue = null;\r
+                }\r
 \r
                 if ((exceptionString = verifyDatum(token.cName, \r
                                                    null, \r
 \r
                 if ((exceptionString = verifyDatum(token.cName, \r
                                                    null, \r
-                                                   skuInfoList.get(index).getHiiDefaultValue()\r
+                                                   hiiDefaultValue\r
                                                    token.datumType, \r
                                                    token.datumSize)) != null) {\r
                     throw new EntityException(exceptionString);\r
                                                    token.datumType, \r
                                                    token.datumSize)) != null) {\r
                     throw new EntityException(exceptionString);\r
@@ -2275,7 +2286,7 @@ public class CollectPCDAction {
                 skuInstance.value.setHiiData(skuInfoList.get(index).getVariableName(),\r
                                              translateSchemaStringToUUID(skuInfoList.get(index).getVariableGuid().toString()),\r
                                              skuInfoList.get(index).getVariableOffset(),\r
                 skuInstance.value.setHiiData(skuInfoList.get(index).getVariableName(),\r
                                              translateSchemaStringToUUID(skuInfoList.get(index).getVariableGuid().toString()),\r
                                              skuInfoList.get(index).getVariableOffset(),\r
-                                             skuInfoList.get(index).getHiiDefaultValue());\r
+                                             skuInfoList.get(index).getHiiDefaultValue().toString());\r
                 token.skuData.add(skuInstance);\r
                 continue;\r
             }\r
                 token.skuData.add(skuInstance);\r
                 continue;\r
             }\r
index b08c8b7b86dfef149c7304073b478895a6884318..288d12f30909df5c58f3937d0d9b618aeae88642 100644 (file)
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
     </xs:attributeGroup>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
     </xs:attributeGroup>\r
+    <xs:attributeGroup name="DynamicBuildPcdAttributes">\r
+      <xs:annotation>\r
+        <xs:documentation xml:lang="en">These attributes are for the Pcds listed in PcdData, PcdEntry and/or PcdBuildData entries.</xs:documentation>\r
+      </xs:annotation>\r
+      <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>\r
+    </xs:attributeGroup>\r
     <xs:attributeGroup name="PcdBuildDefinitionAttributes">\r
     <xs:attributeGroup name="PcdBuildDefinitionAttributes">\r
-        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>\r
     </xs:attributeGroup>\r
         <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>\r
     </xs:attributeGroup>\r
+    <xs:attributeGroup name="PcdCodedAttributes">\r
+      <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
+      <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+      <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
+    </xs:attributeGroup>    \r
     <xs:attributeGroup name="PcdDeclarationAttributes">\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
     <xs:attributeGroup name="PcdDeclarationAttributes">\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
index 8e00b70ea680fbba7cc95a0898ef68d46bad5824..5d9966d740e5deef5f27dc5c1516dc90d3d6e739 100644 (file)
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
-    <xs:element name="PcdBuildDeclarations">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">NEW: Will become a child of ModuleSA in the FPD</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:choice minOccurs="1">\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Filename"/>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
-                    <xs:annotation>\r
-                        <xs:documentation xml:lang="en">Child of PcdBuildDeclarations</xs:documentation>\r
-                        <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>\r
-                        <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
-                    </xs:annotation>\r
-                    <xs:complexType>\r
-                        <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This as a unique identifier defined for either this name space.</xs:documentation>\r
-                                    <xs:documentation xml:lang="en">The Target Attribute may be used to define a Target name space, such as PCI.</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:complexType>\r
-                                    <xs:simpleContent>\r
-                                        <xs:extension base="HexDoubleWordDataType">\r
-                                            <xs:attribute name="Target" type="C_Name" use="optional"/>\r
-                                        </xs:extension>\r
-                                    </xs:simpleContent>\r
-                                </xs:complexType>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">\r
-                                <xs:annotation>\r
-                                    <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>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This Bit means that the Variable data is associated with HII</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This bit enables the Vital Product Data area within flash for maintaining PCD information</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean">\r
-                                <xs:annotation>\r
-                                    <xs:documentation>This is only applicable to ItemType DYNAMIC_EX</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
-                            <xs:choice minOccurs="0">\r
-                                <xs:element minOccurs="0" maxOccurs="1" name="SkuDataArray">\r
-                                    <xs:annotation>\r
-                                        <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>\r
-                                    </xs:annotation>\r
-                                    <xs:simpleType>\r
-                                        <xs:list itemType="xs:normalizedString"/>\r
-                                    </xs:simpleType>\r
-                                </xs:element>\r
-                                <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\r
-                                    <xs:annotation>\r
-                                        <xs:documentation xml:lang="en">This section is for a list of SkuData Elements, ID and Value</xs:documentation>\r
-                                    </xs:annotation>\r
-                                    <xs:complexType>\r
-                                        <xs:sequence minOccurs="1">\r
-                                            <xs:element name="Id" type="xs:int"/>\r
-                                            <xs:element name="Value" type="xs:normalizedString"/>\r
-                                        </xs:sequence>\r
-                                    </xs:complexType>\r
-                                </xs:element>\r
-                            </xs:choice>\r
-                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="MaxSku" type="HexByteDataType">\r
-                                <xs:annotation>\r
-                                    <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>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is the specific Sku ID for this build.</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DatumSize">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:simpleType>\r
-                                    <xs:restriction base="xs:int">\r
-                                        <xs:minInclusive value="1"/>\r
-                                        <xs:maxInclusive value="16777215"/>\r
-                                    </xs:restriction>\r
-                                </xs:simpleType>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is the Variable's GUID if and only if HII is enabled.</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">\r
-                                <xs:annotation>\r
-                                    <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>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">FIELD IS NOT USED! REMOVE in FINAL!</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
-                        </xs:sequence>\r
-                        <xs:attributeGroup ref="PcdAttributes"/>\r
-                        <xs:attribute name="PcdIsDriver">\r
-                            <xs:simpleType>\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:restriction base="UCNameType">\r
-                                    <xs:enumeration value="PEI_PCD_DRIVER"/>\r
-                                    <xs:enumeration value="DXE_PCD_DRIVER"/>\r
-                                </xs:restriction>\r
-                            </xs:simpleType>\r
-                        </xs:attribute>\r
-                    </xs:complexType>\r
-                </xs:element>\r
-            </xs:choice>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <!-- PcdBuildDeclarations -->\r
-    <xs:element name="PcdDynamicBuildDeclarations">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
-            <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>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
-                    <xs:annotation>\r
-                        <xs:documentation xml:lang="en">Child of PcdBuildDeclarations</xs:documentation>\r
-                        <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>\r
-                        <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
-                    </xs:annotation>\r
-                    <xs:complexType>\r
-                        <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This as a unique identifier defined for either this name space.</xs:documentation>\r
-                                    <xs:documentation xml:lang="en">The Target Attribute may be used to define a Target name space, such as PCI.</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:complexType>\r
-                                    <xs:simpleContent>\r
-                                        <xs:extension base="HexDoubleWordDataType">\r
-                                            <xs:attribute name="Target" type="C_Name" use="optional"/>\r
-                                        </xs:extension>\r
-                                    </xs:simpleContent>\r
-                                </xs:complexType>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
-                            <xs:choice minOccurs="0">\r
-                                <xs:element minOccurs="0" maxOccurs="1" name="SkuDataArray">\r
-                                    <xs:annotation>\r
-                                        <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>\r
-                                    </xs:annotation>\r
-                                    <xs:simpleType>\r
-                                        <xs:list itemType="xs:normalizedString"/>\r
-                                    </xs:simpleType>\r
-                                </xs:element>\r
-                                <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\r
-                                    <xs:annotation>\r
-                                        <xs:documentation xml:lang="en">This section is for a list of SkuData Elements, ID and Value</xs:documentation>\r
-                                    </xs:annotation>\r
-                                    <xs:complexType>\r
-                                        <xs:sequence minOccurs="1">\r
-                                            <xs:element name="Id" type="xs:int"/>\r
-                                            <xs:element name="Value" type="xs:normalizedString"/>\r
-                                        </xs:sequence>\r
-                                    </xs:complexType>\r
-                                </xs:element>\r
-                            </xs:choice>\r
-                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="MaxSku" type="HexByteDataType">\r
-                                <xs:annotation>\r
-                                    <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>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
-                        </xs:sequence>\r
-                        <xs:attributeGroup ref="PcdAttributes"/>\r
-                        <xs:attribute name="PcdIsDriver">\r
-                            <xs:simpleType>\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:restriction base="UCNameType">\r
-                                    <xs:enumeration value="PEI_PCD_DRIVER"/>\r
-                                    <xs:enumeration value="DXE_PCD_DRIVER"/>\r
-                                </xs:restriction>\r
-                            </xs:simpleType>\r
-                        </xs:attribute>\r
-                    </xs:complexType>\r
-                </xs:element>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
     <xs:element name="DynamicPcdBuildDefinitions">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
     <xs:element name="DynamicPcdBuildDefinitions">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdBuildData">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                     <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                                 </xs:complexType>\r
                             </xs:element>\r
                         </xs:sequence>\r
                                 </xs:complexType>\r
                             </xs:element>\r
                         </xs:sequence>\r
-                        <xs:attributeGroup ref="PcdAttributes"/>\r
+                        <xs:attributeGroup ref="DynamicBuildPcdAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
             <xs:documentation xml:lang="en">Child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only!</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:documentation xml:lang="en">Child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only!</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
-            <xs:sequence minOccurs="1">\r
-                <xs:element maxOccurs="unbounded" name="PcdData">\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdData">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                     <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <!-- MaxDatumSize is only required if the DatumType is VOID* -->\r
                             <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>                            \r
                             <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>                            \r
-                            <xs:element minOccurs="0" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="Value" type="DefaultValueType"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdBuildDefinitionAttributes"/>\r
                     </xs:complexType>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdBuildDefinitionAttributes"/>\r
                     </xs:complexType>\r
     </xs:element>\r
     <xs:group name="DefaultGroup">\r
         <xs:sequence>\r
     </xs:element>\r
     <xs:group name="DefaultGroup">\r
         <xs:sequence>\r
-            <xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="Value" type="DefaultValueType"/>\r
         </xs:sequence>\r
     </xs:group>\r
     <xs:group name="HiiEnable">\r
         </xs:sequence>\r
     </xs:group>\r
     <xs:group name="HiiEnable">\r
             <xs:documentation xml:lang="en">If HiiEnable group is specified, then HiiEnable is default true</xs:documentation>\r
         </xs:annotation>\r
         <xs:sequence>\r
             <xs:documentation xml:lang="en">If HiiEnable group is specified, then HiiEnable is default true</xs:documentation>\r
         </xs:annotation>\r
         <xs:sequence>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="VariableNameDataType"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="VariableNameDataType"/>\r
             <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
             <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="HiiDefaultValue" type="xs:normalizedString"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="HiiDefaultValue" type="DefaultValueType"/>\r
         </xs:sequence>\r
     </xs:group>\r
     <xs:group name="VpdEnable">\r
         </xs:sequence>\r
     </xs:group>\r
     <xs:group name="VpdEnable">\r
             <xs:documentation xml:lang="en">If VpdEnable group is specified, then VpdEnable is default true</xs:documentation>\r
         </xs:annotation>\r
         <xs:sequence>\r
             <xs:documentation xml:lang="en">If VpdEnable group is specified, then VpdEnable is default true</xs:documentation>\r
         </xs:annotation>\r
         <xs:sequence>\r
-            <xs:element minOccurs="0" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>\r
         </xs:sequence>\r
     </xs:group>\r
     <xs:element name="PcdCoded">\r
         </xs:sequence>\r
     </xs:group>\r
     <xs:element name="PcdCoded">\r
             <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
-            <xs:sequence minOccurs="1">\r
-                <xs:element maxOccurs="unbounded" name="PcdEntry">\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
                     <xs:annotation>\r
                         <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>\r
                         <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>\r
                     </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                     <xs:annotation>\r
                         <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>\r
                         <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>\r
                     </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
                         </xs:sequence>\r
                         <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->\r
                         </xs:sequence>\r
                         <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->\r
-                        <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
+                        <xs:attributeGroup ref="PcdCodedAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
                 <xs:element maxOccurs="unbounded" name="PcdEntry">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                 <xs:element maxOccurs="unbounded" name="PcdEntry">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="HelpText"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdDeclarationAttributes"/>\r
                     </xs:complexType>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdDeclarationAttributes"/>\r
                     </xs:complexType>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
                             <xs:element default="0" minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
                             <xs:element default="0" minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdAttributes"/>\r
                     </xs:complexType>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdAttributes"/>\r
                     </xs:complexType>\r
index b99fd2b495a6cfc97989fb0b2845b5dbe3bdc6d0..7cf160294a9fa850ccb28fbd14cff7fd49c933bd 100644 (file)
             <xs:maxInclusive value="16777215"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
             <xs:maxInclusive value="16777215"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
-    <xs:simpleType name="DefaultValue">\r
-        <xs:union memberTypes="xs:normalizedString xs:int UnicodeString"/>\r
-    </xs:simpleType>\r
+    <xs:simpleType name="DefaultValueType">\r
+      <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>\r
+    </xs:simpleType>    \r
     <xs:simpleType name="EfiSectionType">\r
         <xs:restriction base="UCNameType">\r
             <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
     <xs:simpleType name="EfiSectionType">\r
         <xs:restriction base="UCNameType">\r
             <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
             <xs:enumeration value="PRIVATE"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
             <xs:enumeration value="PRIVATE"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
+    <xs:simpleType name="HexByteArrayType">\r
+      <xs:list itemType="HexByteDataType"/>\r
+    </xs:simpleType>\r
+    <xs:simpleType name="HexByteArrayListType">\r
+      <xs:restriction base="xs:normalizedString">\r
+        <xs:pattern value="((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>\r
+      </xs:restriction>\r
+    </xs:simpleType>\r
     <xs:simpleType name="HexWordArrayType">\r
       <xs:restriction base="xs:normalizedString">\r
          <xs:pattern value="((( )?0x[a-fA-F0-9]{4})(,)?)+( )?"/>\r
     <xs:simpleType name="HexWordArrayType">\r
       <xs:restriction base="xs:normalizedString">\r
          <xs:pattern value="((( )?0x[a-fA-F0-9]{4})(,)?)+( )?"/>\r
index 3fb6b07af765a291587119731a392bc9b66ef22d..234535901fcb66cab4d884cb607bfbbe742d21bc 100644 (file)
-<?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
-    Filename: FrameworkPlatformDataElements.xsd\r
-    \r
-    Copyright (c) 2006, Intel Corp.\r
-    All rights reserved. This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\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:include schemaLocation="FrameworkPlatformDataTypes.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: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: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:complexType>\r
-                        <xs:attributeGroup ref="FlashDeviceImageFileAttributes"/>\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:element name="Blocks">\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:sequence>\r
-                    </xs:complexType>\r
-                </xs:element>\r
-                <xs:element name="Regions">\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: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:choice>\r
-                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImage"/>\r
-                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvRegionName"/>\r
-                </xs:choice>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImageName"/>\r
-            </xs:sequence>\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 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
-            <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
-                <xs:choice minOccurs="0">\r
-                    <!-- DO NOT USE! REMOVE Externs stays in FINAL -->\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
-                    <xs:element minOccurs="0" maxOccurs="1" name="Extern">\r
-                        <xs:annotation>\r
-                            <xs:documentation xml:lang="en">Only specification is allow here. We need to let this be an addtion OR, if the WORD portion exists, this entry takes precedence.</xs:documentation>\r
-                        </xs:annotation>\r
-                        <xs:complexType>\r
-                            <xs:sequence>\r
-                                <xs:element minOccurs="1" maxOccurs="unbounded" ref="Specification"/>\r
-                            </xs:sequence>\r
-                        </xs:complexType>\r
-                    </xs:element>\r
-                </xs:choice>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\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:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>\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="Filename" type="PathAndFilename" minOccurs="0" maxOccurs="unbounded"/>\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:choice>\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:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>\r
-                </xs:choice>\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: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="0" maxOccurs="1" name="FlashDefinitionFile" type="PathAndFilename"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>\r
-    <xs:element name="PlatformDefinitions">\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <!-- This is the list of ALL architectures that are supported by this Platform -->\r
-                <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
-                <xs:element minOccurs="1" maxOccurs="1" name="BuildTargets" type="BuildTargetList"/>\r
-                <xs:element default="UNIFIED" name="IntermediateDirectories" type="IntermediateOutputType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="xs:anyURI"/>\r
-                <!-- SkuInfo is only defined if Sku enabled -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceDefinitions"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="FfsFormatDeclarations"/>\r
-            </xs:sequence>\r
-        </xs:complexType>\r
-    </xs:element>    \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: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: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:complexType>\r
-</xs:schema>\r
+<?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="FrameworkDataAttributes.xsd"/>
+    <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
+    <xs:include schemaLocation="FrameworkDataElements.xsd"/>
+    <xs:include schemaLocation="FrameworkPlatformDataTypes.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="1" ref="FvImages"/>
+                <xs:element minOccurs="0" maxOccurs="1" 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:all>
+                <xs:element minOccurs="0" maxOccurs="1" name="RawData">
+                    <xs:complexType>
+                        <xs:sequence minOccurs="0" maxOccurs="1">
+                            <xs:element name="Data" type="xs:string"/>
+                        </xs:sequence>
+                        <xs:attributeGroup ref="RawDataAttributes"/>
+                    </xs:complexType>
+                </xs:element>
+                <xs:element minOccurs="0" maxOccurs="1" name="File">
+                    <xs:complexType>
+                        <xs:attributeGroup ref="FlashDeviceImageFileAttributes"/>
+                    </xs:complexType>
+                </xs:element>
+            </xs:all>
+            <xs:attributeGroup ref="FlashDeviceImageAttributes"/>
+        </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 name="Blocks">
+                    <xs:complexType>
+                        <xs:sequence>
+                            <xs:element minOccurs="1" maxOccurs="255" name="Block">
+                                <xs:complexType>
+                                    <xs:simpleContent>
+                                        <xs:extension base="BlockNameType">
+                                            <xs:attributeGroup ref="BlockAttributes"/>
+                                        </xs:extension>
+                                    </xs:simpleContent>
+                                </xs:complexType>
+                            </xs:element>
+                        </xs:sequence>
+                    </xs:complexType>
+                </xs:element>
+                <xs:element name="Regions">
+                    <xs:complexType>
+                        <xs:sequence>
+                            <xs:element minOccurs="1" maxOccurs="unbounded" name="Region">
+                                <xs:complexType>
+                                    <xs:all>
+                                        <xs:element name="SubRegions">
+                                            <xs:complexType>
+                                                <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                                                    <xs:element name="SubRegion">
+                                                        <xs:complexType>
+                                                            <xs:simpleContent>
+                                                                <xs:extension base="xs:string">
+                                                                    <xs:attributeGroup ref="SubRegionAttributes"/>
+                                                                </xs:extension>
+                                                            </xs:simpleContent>
+                                                        </xs:complexType>
+                                                    </xs:element>
+                                                </xs:sequence>
+                                            </xs:complexType>
+                                        </xs:element>
+                                    </xs:all>
+                                    <xs:attributeGroup ref="RegionAttributes"/>
+                                </xs:complexType>
+                            </xs:element>
+                        </xs:sequence>
+                    </xs:complexType>
+                </xs:element>
+            </xs:sequence>
+            <xs:attributeGroup ref="FlashDeviceInfoAttributes"/>
+        </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="FvImageTypes" 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:NCName"/>
+    <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:choice>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImage"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvRegionName"/>
+                </xs:choice>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvImageName"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="FvRegionName">
+        <xs:complexType>
+            <xs:simpleContent>
+                <xs:extension base="KeywordType">
+                    <xs:attributeGroup ref="FvRegionNameAttributes"/>
+                </xs:extension>
+            </xs:simpleContent>
+        </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">
+                <!-- DO NOT USE! REMOVE SourceFiles in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>
+                <!-- DO NOT USE! REMOVE Includes in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>
+                <!-- Libraries stays in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
+                <!-- DO NOT USE! REMOVE Protocols in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>
+                <!-- DO NOT USE! REMOVE Events in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>
+                <!-- DO NOT USE! REMOVE Hobs in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>
+                <!-- DO NOT USE! REMOVE PPIs in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>
+                <!-- DO NOT USE! REMOVE Variables in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>
+                <!-- DO NOT USE! REMOVE BootModes in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>
+                <!-- DO NOT USE! REMOVE SystemTables in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>
+                <!-- DO NOT USE! REMOVE DataHubs in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>
+                <!-- DO NOT USE! REMOVE Formsets in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>
+                <!-- DO NOT USE! REMOVE Guids in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>
+                <xs:choice minOccurs="0">
+                    <!-- DO NOT USE! REMOVE Externs stays in FINAL -->
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>
+                    <xs:element minOccurs="0" maxOccurs="1" name="Extern">
+                        <xs:annotation>
+                            <xs:documentation xml:lang="en">Only specification is allow here. We need to let this be an addtion OR, if the WORD portion exists, this entry takes precedence.</xs:documentation>
+                        </xs:annotation>
+                        <xs:complexType>
+                            <xs:sequence>
+                                <xs:element minOccurs="1" maxOccurs="unbounded" ref="Specification"/>
+                            </xs:sequence>
+                        </xs:complexType>
+                    </xs:element>
+                </xs:choice>
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>
+                <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>
+                <!-- BuildOptions stays in FINAL -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>
+                <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>
+            </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:annotation>
+            <xs:documentation xml:lang="en">DO NOT USE! - Removing this from Schema</xs:documentation>
+        </xs:annotation>
+        <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:annotation>
+            <xs:documentation xml:lang="en">DO NOT USE! - Use PlatformList instead</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence maxOccurs="unbounded">
+                <xs:element ref="Platform"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="PlatformList">
+        <xs:annotation>
+            <xs:documentation xml:lang="en">This is used in the Framework Database file</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence maxOccurs="unbounded">
+                <xs:element ref="Platform"/>
+                <xs:element name="Filename" type="PathAndFilename" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="FrameworkModules">
+        <xs:annotation>
+            <xs:documentation xml:lang="en">This is used in a Framework Platform Description (FPD) file</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:choice>
+                    <xs:sequence>
+                        <xs:element minOccurs="0" maxOccurs="1" name="SEC" type="Components"/>
+                        <xs:element minOccurs="0" maxOccurs="1" name="PEI_CORE" type="Components"/>
+                        <xs:element minOccurs="0" maxOccurs="1" name="PEIM" type="Components"/>
+                        <xs:element minOccurs="0" maxOccurs="1" name="DXE_CORE" type="Components"/>
+                        <xs:element minOccurs="0" maxOccurs="1" name="DXE_DRIVERS" type="Components"/>
+                        <xs:element minOccurs="0" maxOccurs="1" name="OTHER_COMPONENTS" type="Components"/>
+                    </xs:sequence>
+                    <xs:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>
+                </xs:choice>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="TianoImage">
+        <xs:annotation>
+            <xs:documentation xml:lang="en">DO NOT USE - Use FrameworkModules Instead.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="1" name="SEC" type="Components"/>
+                <xs:element minOccurs="0" maxOccurs="1" name="PEI_CORE" type="Components"/>
+                <xs:element minOccurs="0" maxOccurs="1" name="PEIM" type="Components"/>
+                <xs:element minOccurs="0" maxOccurs="1" name="DXE_CORE" type="Components"/>
+                <xs:element minOccurs="0" 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:element name="FlashDeviceDefinitions">
+        <xs:complexType>
+            <xs:annotation>
+                <xs:documentation xml:lang="en">We allow specifying the FlashMap filename</xs:documentation>
+            </xs:annotation>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="1" name="FlashDefinitionFile" type="PathAndFilename"/>
+                <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="PlatformDefinitions">
+        <xs:complexType>
+            <xs:sequence>
+                <!-- This is the list of ALL architectures that are supported by this Platform -->
+                <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>
+                <xs:element minOccurs="1" maxOccurs="1" name="BuildTargets" type="BuildTargetList"/>
+                <xs:element default="UNIFIED" name="IntermediateDirectories" type="IntermediateOutputType"/>
+                <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory" type="xs:anyURI"/>
+                <!-- SkuInfo is only defined if Sku enabled -->
+                <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>
+                <xs:element minOccurs="0" maxOccurs="1" ref="FlashDeviceDefinitions"/>
+                <xs:element minOccurs="0" maxOccurs="1" ref="FfsFormatDeclarations"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>    
+    <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>
index 4c3f16f822f960fc91de5be9f36c731ad7f28d76..c5de6b308270b5b261da90b74f5a7e6aa0091b46 100644 (file)
             <xs:sequence>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="PlatformHeader"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="PlatformDefinitions"/>                \r
             <xs:sequence>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="PlatformHeader"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="PlatformDefinitions"/>                \r
-                <xs:element minOccurs="0" maxOccurs="1" ref="SkuInfo"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Flash"/>\r
                 <!-- DO NOT USE! removing TianoImage, use FrameworkModules instead. -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="TianoImage"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="FrameworkModules"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Flash"/>\r
                 <!-- DO NOT USE! removing TianoImage, use FrameworkModules instead. -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="TianoImage"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="FrameworkModules"/>\r
-                <!-- DO NOT USE! removing PcdBuildDeclarations here, use PcdBuildDeclaratiion in ModuleSA instead. -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>\r
-                <xs:choice minOccurs="0">\r
-                    <!-- DO NOT USE! removing PcdDynamicBuildDeclarations here, use DynamicPcdBuildDefinitions in ModuleSA instead. -->\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="PcdDynamicBuildDeclarations"/>\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="DynamicPcdBuildDefinitions"/>\r
-                </xs:choice>\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="DynamicPcdBuildDefinitions"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
             </xs:sequence>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
             </xs:sequence>\r