]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/XMLSchema/FrameworkDataElements.xsd
Added More Comments and started doing data type checking so that if a ModuleName...
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataElements.xsd
index bbc75d9729d7d441d7492ca1c576cd3232e4908e..67fd6a893d191d14dc34dd6b6729b9ec605a0284 100644 (file)
@@ -17,6 +17,7 @@
     </xs:annotation>\r
     <xs:include schemaLocation="NamingConvention.xsd"/>\r
     <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+    <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
     <xs:element name="Abstract">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>\r
@@ -25,7 +26,7 @@
         <xs:complexType>\r
             <xs:simpleContent>\r
                 <xs:extension base="Sentence">\r
-                    <xs:attribute name="URL" type="xs:anyURI"/>\r
+                    <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     <xs:element name="Constructor" type="C_Name"/>\r
     <xs:element name="Copyright" type="Sentence"/>\r
     <xs:element name="Created" type="DateType"/>\r
+    <xs:element name="CreatedDate" type="DateType"/>\r
     <xs:element name="CreatedBy" type="UserName"/>\r
     <xs:element name="DataHubs">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">This is a list of Extern statements, right now, only Driver Binding information is provided.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
-                <xs:element name="Extern">\r
+            <xs:sequence minOccurs="1">\r
+                <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
                     <xs:complexType>\r
                         <xs:choice minOccurs="1">\r
                             <xs:sequence minOccurs="0" maxOccurs="1">\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="PackageName"/>\r
+                <!-- remove Arch element, start using the Arch attribute for the PackageName element above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="1">\r
     <xs:element name="InstalledDate" type="DateType"/>\r
     <xs:element name="Libraries">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">Different Instances of Libraries</xs:documentation>\r
+            <xs:documentation xml:lang="en">Different (Module)  Instances of Libraries used ONLY in FPD Files.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Library">\r
                     <xs:complexType>\r
                         <xs:simpleContent>\r
-                            <xs:extension base="BaseNameConvention">\r
+                            <xs:extension base="xs:NCName">\r
                                 <xs:attributeGroup ref="LibraryAttributes"/>\r
                             </xs:extension>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- remove Arch Element HERE, start using the Arch attribute in Library element above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:choice minOccurs="1" maxOccurs="unbounded">\r
                         <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- /remove Arch Element -->\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="LibraryClass">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">Define in the MSA and/or SPD, what class of library is being produced by a library module - for components, it can also specify what class of library is consumed.</xs:documentation>\r
+            <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
                 <xs:extension base="BaseNameConvention">\r
-                    <xs:attribute name="Usage" type="LibraryUsage" use="optional"/>\r
+                    <xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
+                    <xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>\r
+                    <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="0">\r
-                <xs:element minOccurs="1" maxOccurs="1" ref="LibraryClass"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="LibraryClass">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en">Used in MSA and SPD files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="BaseNameConvention">\r
+                                <xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>\r
+                                <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="IncludeHeader"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
                 <xs:extension base="Paragraph">\r
-                    <xs:attribute name="URL" type="xs:anyURI"/>\r
+                    <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="Modified" type="DateType"/>\r
+    <xs:element name="ModifiedDate" type="DateType"/>\r
     <xs:element name="Module">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">This is record format for a Module entry in the Framework Database file.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="BaseNameConvention">\r
+                <xs:extension base="xs:NCName">\r
                     <xs:attributeGroup ref="ModuleNameAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
             <xs:sequence minOccurs="1">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="MsaFile">\r
                     <xs:annotation>\r
-                        <xs:documentation xml:lang="en">Describe the valid content of a Surface Area Package Description (SPD) file</xs:documentation>\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 minOccurs="0" maxOccurs="1">\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: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:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdAttributes"/>\r
+                        <xs:attribute name="PcdIsDriver" use="optional"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
     </xs:element>\r
     <xs:element name="PackageList">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages installed in a workspace.</xs:documentation>\r
+            <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages installed in a workspace. (Database)</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence maxOccurs="unbounded">\r
                     <xs:complexType>\r
                         <xs:sequence maxOccurs="unbounded">\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
+                            <xs:choice minOccurs="1">\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
+                                <!-- DO NOT USE Guid should be removed, use PackageGuid instead -->\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
+                            </xs:choice>\r
+                            <xs:choice minOccurs="1">\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Version"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
+                            </xs:choice>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>\r
                         </xs:sequence>\r
     </xs:element>\r
     <xs:element name="PackageName">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module</xs:documentation>\r
+            <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module (SPD) </xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
     </xs:element>\r
     <xs:element name="PcdBuildDeclarations">\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: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: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: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: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="1" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
                                 <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This field is only valid if AlternateNameSpaceEnable is true.</xs:documentation>\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: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:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <!-- PcdDynamicBuildDeclarations -->\r
     <xs:element name="PcdDefinitions">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>\r
                         <xs:sequence>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="Token"/>\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="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
-                <xs:element name="PlatformName">\r
+                <xs:element minOccurs="0" maxOccurs="1" name="PlatformName">\r
                     <xs:annotation>\r
                         <xs:documentation xml:lang="en">Define the Name of a Platform</xs:documentation>\r
                     </xs:annotation>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
-                <xs:element ref="Path"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Path"/>\r
+                <!--\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="File"/>\r
+                    -->\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="InstalledDate"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="ModifiedDate"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" name="AlternatePcdFile" type="FileNameConvention"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" name="AlternateFdfFile" type="FileNameConvention"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="Updated" type="DateType"/>\r
+    <xs:element name="UpdatedDate" type="DateType"/>\r
     <xs:element name="URL" type="xs:anyURI"/>\r
     <xs:element name="URI" type="xs:anyURI"/>\r
     <xs:element name="UserDefinedAntTasks">\r