Updated schema, added some new elements that will be used in the final. Added a Datum...
authorlhauch <lhauch@de2fecce-e211-0410-80a6-f3fac2684e05>
Tue, 6 Jun 2006 03:09:40 +0000 (03:09 +0000)
committerlhauch <lhauch@de2fecce-e211-0410-80a6-f3fac2684e05>
Tue, 6 Jun 2006 03:09:40 +0000 (03:09 +0000)
MAJOR CHANGE TO Framework Doc - SPD Has been added.  I will add Andrew's comments tomorrow.

git-svn-id: https://edk2.tianocore.org/svn/edk2/trunk@424 de2fecce-e211-0410-80a6-f3fac2684e05

edk2/Tools/FrameworkWizardMinReq.doc
edk2/Tools/XMLSchema/FrameworkDataElements.xsd
edk2/Tools/XMLSchema/FrameworkDataTypes.xsd
edk2/Tools/XMLSchema/FrameworkPlatformDataElements.xsd
edk2/Tools/XMLSchema/SurfaceArea.xsd

index 8ce27eb..823cd93 100644 (file)
Binary files a/edk2/Tools/FrameworkWizardMinReq.doc and b/edk2/Tools/FrameworkWizardMinReq.doc differ
index 8136662..344111a 100644 (file)
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
-    <xs:element name="MsaFileList">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType>\r
-            <xs:sequence>\r
-                <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">\r
-                    <xs:complexType>\r
-                        <xs:simpleContent>\r
-                            <xs:extension base="xs:anyURI">\r
-                                <xs:attributeGroup ref="ModuleNameSaAttributes"/>\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="MsaPcdDeclarations">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="MsaFileList">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename">\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:anyURI">\r
+                                <xs:attributeGroup ref="ModuleNameSaAttributes"/>\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="OutputDirectory">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Define where we want our output to go. The Attribute, IntermediateDirectories, default MODULE, says that intermediate files will be local to the module, versus a unified directory structure.</xs:documentation>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
                             <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>\r
                             <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
-                            <xs:element minOccurs="0" 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="0" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\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 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: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 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: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="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: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:documentation xml:lang="en">FPD uses this PCD information for Dynamic PCDs Only</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\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" type="HexDoubleWordDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:group minOccurs="0" maxOccurs="1" ref="SkuGroup"/>\r
+                            <xs:choice minOccurs="0" maxOccurs="1">\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="HiiGroup"/>\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="VpdGroup"/>\r
+                            </xs:choice>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="PcdBuildDefinition">\r
+        <xs:annotation>\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:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:group minOccurs="0" maxOccurs="1" ref="SkuGroup"/>\r
+                            <xs:choice minOccurs="0" maxOccurs="1">\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="HiiGroup"/>\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="VpdGroup"/>\r
+                            </xs:choice>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:group name="HiiGroup">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">If HiiGroup 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="xs:normalizedString"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
+        </xs:sequence>\r
+    </xs:group>\r
+    <xs:group name="VpdGroup">\r
+        <xs:sequence>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>\r
+        </xs:sequence>\r
+    </xs:group>\r
+    <xs:group name="SkuGroup">\r
+        <xs:sequence>\r
+            <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuSet" type="SkuListType"/>\r
+            <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuList" type="SkuListType"/>\r
+            <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\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:sequence>\r
+    </xs:group>\r
+    <xs:element name="PcdCoded">\r
+        <xs:annotation>\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: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" 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:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
     <xs:element name="PcdDeclarations">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="UserExtensions">\r
+        <xs:complexType>\r
+            <xs:complexContent mixed="true">\r
+                <xs:extension base="xs:anyType">\r
+                    <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
+                    <xs:attribute name="Identifier" type="xs:integer" use="required"/>\r
+                </xs:extension>\r
+            </xs:complexContent>\r
+        </xs:complexType>\r
+    </xs:element>\r
     <xs:element name="Variables">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">A list of EFI Variables described by GUID string pair.</xs:documentation>\r
index 8199df0..10bde1f 100644 (file)
             <xs:pattern value="[1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
+    <xs:simpleType name="DatumSizeLimitation">\r
+        <xs:restriction base="xs:int">\r
+            <xs:minInclusive value="1"/>\r
+            <xs:maxInclusive value="16777215"/>\r
+        </xs:restriction>\r
+    </xs:simpleType>\r
     <xs:simpleType name="DefaultValue">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en"> The DefaultValue is a union of a string and an integer. </xs:documentation>\r
             </xs:enumeration>\r
         </xs:restriction>\r
     </xs:simpleType>\r
+    <xs:simpleType name="SkuListType">\r
+        <xs:list itemType="HexByteDataType"/>\r
+    </xs:simpleType>\r
     <xs:simpleType name="SupportedArchitectures">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en"> These are the currently Supportted Architectures type codes </xs:documentation>\r
index 188ea90..08a8ecf 100644 (file)
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>  <!-- DO NOT USE! REMOVE in FINAL -->\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
-                <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>  <!-- DO NOT USE! REMOVE in FINAL -->\r
+                <!-- DO NOT USE! REMOVE Protocols in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>\r
+                <!-- DO NOT USE! REMOVE Events in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>\r
+                <!-- DO NOT USE! REMOVE Hobs in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>\r
+                <!-- DO NOT USE! REMOVE PPIs in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>\r
+                <!-- DO NOT USE! REMOVE Variables in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>\r
+                <!-- DO NOT USE! REMOVE BootModes in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>\r
+                <!-- DO NOT USE! REMOVE SystemTables in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>\r
+                <!-- DO NOT USE! REMOVE DataHubs in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>\r
+                <!-- DO NOT USE! REMOVE Formsets in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Formsets"/>\r
+                <!-- DO NOT USE! REMOVE Guids in FINAL -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>\r
+                <!-- EXTERNS stays in FINAL -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>\r
+                <xs:choice>\r
+                    <!-- DO NOT USE! REMOVE PcdBuildDeclarations in FINAL -->\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDeclarations"/>\r
+                    <!-- PcdBuildDefinition stays in FINAL -->\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>\r
+                </xs:choice>\r
+                <!-- BuildOptions stays in FINAL -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
             </xs:sequence>\r
             <xs:attributeGroup ref="MsaAttributes"/>\r
index a0223cb..e5e0276 100644 (file)
                 <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:element minOccurs="0" maxOccurs="1" ref="PcdDynamicBuildDeclarations"/>\r
+                <xs:choice minOccurs="0">\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="BuildOptions"/>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>\r
+                <xs:choice minOccurs="0">\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>\r
+                </xs:choice>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>\r
                 <xs:choice minOccurs="0">\r
                     <!-- DO NOT USE! removing PCDs, use MsaPcdDeclarations instead -->\r
                     <xs:element minOccurs="0" maxOccurs="1" ref="PCDs"/>\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="MsaPcdDeclarations"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>\r
                 </xs:choice>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="BuildOptions"/>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
                     <xs:element minOccurs="0" maxOccurs="1" ref="PcdDefinitions"/>\r
                     <xs:element minOccurs="0" maxOccurs="1" ref="PcdDeclarations"/>\r
                 </xs:choice>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r