Intermediate Check-in this MSA schema handles both old and new elements.
authorlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 9 Jun 2006 04:32:47 +0000 (04:32 +0000)
committerlhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 9 Jun 2006 04:32:47 +0000 (04:32 +0000)
This is not the final version of the XML Transition Schema - what is here works.
THE LAST SECTION, FPD File, still to come.  Now this handles both old and new MSA and SPD formats.

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

Tools/XMLSchema/FrameworkDataAttributes.xsd
Tools/XMLSchema/FrameworkDataElements.xsd
Tools/XMLSchema/FrameworkDataTypes.xsd
Tools/XMLSchema/FrameworkHeaders.xsd
Tools/XMLSchema/NamingConvention.xsd
Tools/XMLSchema/SurfaceArea.xsd

index a699cea199de8d9264d36518b7e2e5be76e2ed8c..b74475e20721f0faa20dacad9129ec328af59579 100644 (file)
         <xs:attribute name="Version" type="VersionDataType" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="BootModeAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="BootModeName" type="BootModeNames" use="required"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE, remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="BootModeUsage" use="required"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         <xs:attribute default="Unicode" name="OutputFiletype" type="xs:string" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="DataHubAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE, remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="DataHubUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         <xs:attribute name="Separator" type="ToothPick"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="EventAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- Make EventGroup Required in final -->\r
         <xs:attribute name="EventGroup" type="EventTypes" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE, remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="EventUsage" use="optional"/>\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="ExternAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="FilenameAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
-        <!-- LAH Does a Filename need to have FeatureFlag Attribute? -->\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="FileType" type="xs:string" use="optional"/>\r
+        <!-- DO NOT USE, remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- DO NOT USE, remove Path from use -->\r
         <xs:attribute name="Path" type="DirectoryNamingConvention" use="optional"/>\r
+        <!-- DO NOT USE, remove ToolChain from use, use ToolChainFamily -->\r
         <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>\r
+        <xs:attribute name="TagName" type="xs:NCName" use="optional"/>\r
+        <xs:attribute name="ToolCode" type="xs:NCName" use="optional"/>\r
+        <xs:attribute name="ToolChainFamily" type="xs:NCName" use="optional"/>\r
+        <!-- DO NOT USE, remove Usage from use -->\r
         <xs:attribute name="Usage" type="FileNameUsage" use="optional"/>\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="FormsetAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="GuidAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="GuidUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         <xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>\r
         <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
     </xs:attributeGroup>\r
+    <xs:attributeGroup name="HiiPackageAttributes">\r
+        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <xs:attribute name="Usage" type="HiiPackageUsage" use="required"/>\r
+    </xs:attributeGroup>\r
     <xs:attributeGroup name="HobAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
         <xs:attribute name="HobType" type="HobTypes" use="required"/>\r
+        <!-- DO NOT USE remove HobEnabled from use -->\r
         <xs:attribute default="true" name="HobEnabled" type="xs:boolean" use="optional"/>\r
+        <!-- USAGE is required in final -->\r
         <xs:attribute name="Usage" type="HobUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         <xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="LibraryAttributes">\r
-        <!-- LibraryAttributes is used for Libraries -> Library elements in FPD files -->\r
+        <!-- LibraryAttributes is used for Libraries / Library elements in FPD files -->\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <!-- LAH Does a LibraryInstance need to have FeatureFlag Attribute? -->\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="LibraryClassAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
-        <xs:attribute name="RecommendedInstance" type="xs:NCName" use="optional"/>\r
+        <xs:attribute name="RecommendedInstanceVersion" type="xs:decimal" use="optional"/>\r
         <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
         <xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
     </xs:attributeGroup>\r
+    <xs:attributeGroup name="MsaGuidAttributes">\r
+        <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <xs:attribute name="Usage" type="GuidUsage" use="optional"/>\r
+    </xs:attributeGroup>\r
     <xs:attributeGroup name="ModuleNameAttributes">\r
         <xs:attribute name="Guid" type="GuidType" use="required"/>\r
         <!-- DO NOT USE remove Guid from use, Start using ModuleGuid instead -->\r
         <xs:attribute name="Version" type="VersionDataType" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="MsaAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="BuildSequence" type="xs:int" use="optional"/>\r
         <xs:attribute name="PackageGuid" type="GuidType" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="OptionAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="BuildTarget" type="BuildTargets" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <!-- LAH Does an Option need to have FeatureFlag Attribute? -->\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="ModuleType" type="ModuleTypeDef" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="PackageAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="PackageGuid" type="GuidType" use="optional"/>\r
     </xs:attributeGroup>\r
     <!-- PackageNameAttributres are only used in the Package Dependencies section of an SPD file. -->\r
     <xs:attributeGroup name="PackageNameAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <!-- DO NOT USE remove Guid and start using PackageGuid instead -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- CHANGE PackageGuid to REQUIRED in final -->\r
         <xs:attribute name="PackageGuid" type="GuidType" use="optional"/>\r
+        <!-- DO NOT USE remove PackageTypeDependency from Use -->\r
         <!-- PackageTypeDepencency is used to identify if a SOURCE or BINARY PackageType is required, in case PackageGuid and/or PackageVersion are not tracked. -->\r
         <xs:attribute name="PackageTypeDependency" type="PackageType" use="optional"/>\r
         <xs:attribute name="PackageVersion" type="xs:string" use="optional"/>\r
             <xs:documentation xml:lang="en">PcdUsage is only valid for PcdItemTypes = FEATURE_FLAG</xs:documentation>\r
             <xs:documentation xml:lang="en">Only NON FEATURE_FLAG PCDS should have the FeatureFlag attribute set.</xs:documentation>\r
         </xs:annotation>\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>\r
     <xs:attributeGroup name="PlatformAttributes">\r
         <!-- DO NOT USE remove AlternateName from use -->\r
         <xs:attribute name="AlternateName" type="FileNameConvention" use="optional"/>\r
-        <!-- DO NOT USE remove Arch from use -->\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="PpiAttributes">\r
-        <!-- DO NOT USE remove Arch from use -->\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="PpiUsage" use="optional"/>\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="PpiNotifyAttributes">\r
-        <!-- DO NOT USE remove Arch from use -->\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="PpiNotifyUsage" use="optional"/>\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="ProtocolAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead-->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="ProtocolUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         <xs:attribute name="ModuleTypeList" type="ModuleTypeList" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="ProtocolNotifyAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="ProtocolNotifyUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         </xs:annotation>\r
         <xs:attribute name="BindingOrder" type="xs:int" use="optional"/>\r
         <xs:attribute default="true" name="Compressible" type="xs:boolean" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <!-- LAH Does a Section need to have FeatureFlag Attribute? -->\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         </xs:annotation>\r
         <xs:attribute name="EncapsulationType" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="EncapsulationTag" type="xs:string" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <!-- LAH Does a Filename need to have FeatureFlag Attribute? -->\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="SystemTableAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="SystemTableUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
         <xs:attribute name="Url" type="xs:anyURI"/>\r
     </xs:attributeGroup>\r
     <xs:attributeGroup name="VariableAttributes">\r
+        <!-- DO NOT USE remove Arch from use, use SupArchList instead -->\r
         <xs:attribute name="Arch" type="SupportedArchitectures" use="optional"/>\r
         <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
+        <!-- DO NOT USE remove EnableFeature from use -->\r
         <xs:attribute default="true" name="EnableFeature" type="xs:boolean" use="optional"/>\r
         <xs:attribute name="FeatureFlag" type="xs:normalizedString" use="optional"/>\r
+        <!-- DO NOT USE remove Guid from use -->\r
         <xs:attribute name="Guid" type="GuidType" use="optional"/>\r
+        <!-- Make Usage REQUIRED in final -->\r
         <xs:attribute name="Usage" type="VariableUsage" use="optional"/>\r
         <!-- DO NOT USE remove OverrideID from use -->\r
         <xs:attribute name="OverrideID" type="xs:int" use="optional"/>\r
index f38f47211d69a61217e649ebc53e20b79352ae5c..8427b738327ae5eebf61e8b833fc45937aa6f48f 100644 (file)
     <xs:element name="E-Mail" type="E-Mail"/>\r
     <xs:element name="Events">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This is a list of Events</xs:documentation>\r
+            <xs:documentation xml:lang="en">This is a list of MSA Events</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
                             <xs:element name="Event">\r
                                 <xs:complexType>\r
                                     <xs:sequence>\r
-                                        <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                                        <xs:choice>\r
+                                            <xs:element minOccurs="0" maxOccurs="1" name="GuidC_Name" type="GuidC_NameType"/>\r
+                                            <!-- DO NOT USE, removing C_Name in final -->\r
+                                            <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>\r
+                                        </xs:choice>\r
+                                        <!-- DO NOT USE, removing Guid and GuidValue from Final -->\r
                                         <xs:choice minOccurs="0">\r
                                             <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
                                             <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
                             <xs:element name="Event">\r
                                 <xs:complexType>\r
                                     <xs:sequence>\r
-                                        <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                                        <xs:choice>\r
+                                            <xs:element minOccurs="0" maxOccurs="1" name="GuidC_Name" type="GuidC_NameType"/>\r
+                                            <!-- DO NOT USE, removing C_Name in final -->\r
+                                            <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>\r
+                                        </xs:choice>\r
+                                        <!-- DO NOT USE, removing Guid and GuidValue from Final -->\r
                                         <xs:choice minOccurs="0">\r
                                             <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
                                             <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
     <xs:element name="ExitBootServicesCallBack" type="C_Name"/>\r
     <xs:element name="Externs">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This is a child of MSA files, both Library and Module.</xs:documentation>\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:documentation xml:lang="en">This is a child of MSA files.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
     </xs:element>\r
     <xs:element name="Filename">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">Describe the valid content of a filename</xs:documentation>\r
+            <xs:documentation xml:lang="en">Describe the valid content of a filename This should extend PathAndFilename - Variable names not allowed here!</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element name="GuidEntry">\r
                     <xs:annotation>\r
-                        <xs:documentation xml:lang="en">Describe the valid content of a PCD GUID element</xs:documentation>\r
+                        <xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>\r
                     </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="0" maxOccurs="1">\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <!-- DO NOT USE removing GuidValue from use -->\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                            <!-- DO NOT USE removing FeatureFlag from use, use FeatureFlag Attribute instead -->\r
                             <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
                             <!-- DO NOT USE remove ConditionalExpression and use FeatureFlag instead -->\r
                             <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConditionalExpression"/>\r
+                            <!-- DO NOT USE, remove DefaultValue from use -->\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>\r
+                            <!-- DO NOT USE, remove HelpText from use -->\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="GuidAttributes"/>\r
                     <xs:complexType>\r
                         <xs:simpleContent>\r
                             <xs:extension base="C_Name">\r
-                                <xs:attributeGroup ref="FormsetAttributes"/>\r
+                                <xs:attributeGroup ref="HiiPackageAttributes"/>\r
                             </xs:extension>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 <xs:element name="Hob">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>\r
+                            <xs:choice>\r
+                                <!-- Remove Name from use -->\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="GuidC_Name" type="GuidC_NameType"/>\r
+                            </xs:choice>\r
+                            <!-- Remove C_Name from use -->\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>\r
+                            <!-- Remove Guid and GuidValue from use -->\r
                             <xs:choice minOccurs="0">\r
                                 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
                                 <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="BaseNameConvention">\r
+                <xs:extension base="xs:NCName">\r
                     <xs:attributeGroup ref="LibraryClassAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">This section defines what Classes of Library that this library supports. A Library may belong to multiple different library classes.</xs:documentation>\r
         </xs:annotation>\r
-        <xs:complexType mixed="true">\r
+        <xs:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element ref="LibraryClass"/>\r
             </xs:sequence>\r
     </xs:element>\r
     <xs:element name="PackageDependencies">\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 (SPD) to track package dependencies for a module</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence maxOccurs="unbounded">\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="BaseNameConvention">\r
+                <xs:extension base="UiNameType">\r
                     <xs:attributeGroup ref="PackageAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element name="SystemTable">\r
                     <xs:complexType>\r
-                        <xs:sequence>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>\r
+                        <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                            <xs:choice>\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="GuidC_Name" type="GuidC_NameType"/>\r
+                                <!-- Remove Entry from Use -->\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>\r
+                            </xs:choice>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="SystemTableAttributes"/>\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
+            <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                     </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:sequence>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>\r
+                            <xs:choice>\r
+                                <!-- DO NOT USE remove String from final -->\r
+                                <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>\r
+                                <!-- Make VariableName required -->\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="VariableNameDataType"/>\r
+                            </xs:choice>\r
                             <xs:choice minOccurs="1">\r
+                                <!-- DO NOT USE, use GuidC_Name instead -->\r
                                 <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
+                                <!-- DO NOT USE, use GuidC_Name instead -->\r
                                 <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                                <!-- Make GuidC_Name required -->\r
+                                <xs:element minOccurs="0" maxOccurs="1" name="GuidC_Name" type="GuidC_NameType"/>\r
                             </xs:choice>\r
+                            <!-- DO NOT USE, removiing  ByteOffset, Bit Offset and OffsetBitSize-->\r
                             <xs:element minOccurs="0" maxOccurs="1" name="ByteOffset" type="HexWordDataType">\r
                                 <xs:annotation>\r
                                     <xs:documentation xml:lang="en">This entry represents the Hex Byte Offset {0x0, 0xn} to where the data starts.</xs:documentation>\r
index dae8f8e605e14c7effaed0c1ebb3e66e3a6b5a08..885ab5b77b862431896a17dff2e66023d39529cc 100644 (file)
         </xs:restriction>\r
     </xs:simpleType>\r
     <xs:simpleType name="GuidListType">\r
-      <xs:list itemType="GuidTypes"/>\r
+        <xs:list itemType="GuidTypes"/>\r
     </xs:simpleType>\r
     <xs:simpleType name="GuidUsage">\r
         <xs:restriction base="NameConvention">\r
             <xs:pattern value="L(:)?(&quot;)(\w+)*((\W*)*(\s*)*(\w*)*)*(&quot;)"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
+    <xs:simpleType name="VariableNameDataType">\r
+        <xs:list itemType="HexWordDataType"/>\r
+    </xs:simpleType>\r
     <xs:simpleType name="UsageTypes">\r
         <xs:restriction base="NameConvention">\r
             <xs:enumeration value="ALWAYS_CONSUMED"/>\r
index a798526839f2cec129cdce7b3888e95cec7e9928..a68e260df966e7a253c36704b3e5afee8e1dc475 100644 (file)
         <xs:complexType>\r
             <xs:sequence>\r
                 <xs:choice>\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="BaseName"/>\r
                     <!-- BaseName needs to be removed  -->\r
-                    <xs:element minOccurs="0" maxOccurs="1" name="ModuleName" type="xs:NCName"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="BaseName"/>\r
+                    <!-- ModuleName needs to be required -->\r
+                    <xs:element minOccurs="0" maxOccurs="1" name="ModuleName" type="UiNameType"/>\r
                 </xs:choice>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="ComponentType"/>\r
                 <xs:choice>\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
                     <!-- Guid needs to be removed -->\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
                     <!-- GuidValue needs to be required -->\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
                 </xs:choice>\r
+                <!-- Version needs to be a decimal in final -->\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
                 <xs:choice minOccurs="1" maxOccurs="1">\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="Created"/>\r
                     <!-- Created needs to be removed -->\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Created"/>\r
+                    <!-- CreatedDate needs to be removed -->\r
                     <xs:element minOccurs="0" maxOccurs="1" ref="CreatedDate"/>\r
-                    <!-- CreatedDate needs to be required -->\r
                 </xs:choice>\r
                 <xs:choice>\r
-                    <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>\r
                     <!-- Updated needs to be removed -->\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Updated"/>\r
+                    <!-- ModifiedDate needs to be removed -->\r
                     <xs:element minOccurs="0" maxOccurs="1" ref="ModifiedDate"/>\r
                 </xs:choice>\r
                 <xs:element minOccurs="0" maxOccurs="1" name="SupportedArchitectures">\r
                         <xs:list itemType="SupportedArchitectures"/>\r
                     </xs:simpleType>\r
                 </xs:element>\r
+                <xs:element default="false" minOccurs="0" name="BinaryModule" type="xs:boolean"/>\r
+                <!-- Specification needs to be required - FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00000052 -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Specification"/>\r
-                <!-- Specification needs to be required - FRAMEWORK_BUILD_PACKAGING_SPECIFICATION   0x00090000 -->\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
index ca19200321dd9d9e68d10b5964cafc87b94e9bcc..a44d3b6bad1ab6a60bcd1a5543ad45aba373336c 100644 (file)
             <xs:pattern value="0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?"/>\r
         </xs:restriction>\r
     </xs:simpleType>\r
+    <xs:simpleType name="GuidC_NameType">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en"> C_Names must start with either an underscore (_) character followed by one or more alpha characters, followed by any combination of underscore or alphanumeric characters.</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:restriction base="xs:string">\r
+            <xs:pattern value="((_)*([a-zA-Z])+((_)*[a-zA-Z0-9]*))*"/>\r
+        </xs:restriction>\r
+    </xs:simpleType>\r
     <xs:simpleType name="GuidNamingConvention">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en"> A GUID must contain five different Hexadecimal character sets that are separated by a dash (-) character. </xs:documentation>\r
index 796e9b49843e3c9243f222f6260179339c50a2d8..ed47c113c341dd6933ca174a867bbba354ba1fbe 100644 (file)
                 <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="SourceFiles"/>\r
                 <xs:choice minOccurs="0">\r
-                  <!-- DO NOT USE! removing Includes, use PackageDependencies instead -->\r
-                  <xs:element minOccurs="0" maxOccurs="1" ref="Includes"/>\r
-                  <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>\r
+                    <!-- DO NOT USE! removing Includes, use PackageDependencies instead -->\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="1" maxOccurs="1" ref="SpdHeader"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdIncludes"/>\r
-                <!-- DO NOT USE removing PackageDependencies, this is moving to FDP installation process -->\r
+                <!-- DO NOT USE removing THIS INSTANCE of PackageDependencies, this is moving to FDP installation process -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>\r
                 <!-- DO NOT USE removing MsaFiles, use MsaFileList instead , do not wrap in choice, too many entries to convert all at once. -->\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="MsaFiles"/>\r