]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/XMLSchema/FrameworkDataElements.xsd
Updated the FPD and SPD files to newer schema formats. Also updated a couple of...
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataElements.xsd
index 67fd6a893d191d14dc34dd6b6729b9ec605a0284..8136662969b7bee886dbed1fe29387648f9292ea 100644 (file)
                             </xs:simpleContent>\r
                         </xs:complexType>\r
                     </xs:element>\r
+                    <!-- Arch element should be removed - use Arch attributes to the above instead. -->\r
                     <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                         <xs:complexType>\r
                             <xs:sequence minOccurs="1">\r
             <xs:documentation xml:lang="en">Describe the valid Framework Component Type</xs:documentation>\r
         </xs:annotation>\r
     </xs:element>\r
-    <xs:element name="Condition">\r
-        <xs:annotation>\r
-            <xs:documentation xml:lang="en">A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean.</xs:documentation>\r
-        </xs:annotation>\r
-        <xs:complexType mixed="true">\r
-            <xs:sequence minOccurs="0" maxOccurs="1">\r
-                <xs:element minOccurs="0" maxOccurs="1" name="Condition" type="xs:normalizedString"/>\r
-            </xs:sequence>\r
-            <xs:attribute name="ConditionalTarget" type="ConditionalTarget" use="optional"/>\r
-        </xs:complexType>\r
-    </xs:element>\r
     <xs:element name="ConditionalExpression">\r
+        <!-- DO NOT USE remove and use FeatureFlag instead -->\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">A conditional expression that must be evaluated to determine whether a feature is implemented or not. The expression must be either numeric, string or boolean.</xs:documentation>\r
         </xs:annotation>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- Remove Arch and use Arch Attribute for DataHubRecord instead. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                                 <xs:complexType>\r
                                     <xs:sequence>\r
                                         <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                                        <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\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:choice>\r
                                     </xs:sequence>\r
                                     <xs:attributeGroup ref="EventAttributes"/>\r
                                 </xs:complexType>\r
                             </xs:element>\r
+                            <!-- Remove Arch Section and use Arch Attribute instead in Event. -->\r
                             <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                                 <xs:complexType>\r
                                     <xs:sequence>\r
                                             <xs:complexType>\r
                                                 <xs:sequence>\r
                                                     <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                                                    <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\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:choice>\r
                                                 </xs:sequence>\r
                                                 <xs:attributeGroup ref="EventAttributes"/>\r
                                             </xs:complexType>\r
                                 <xs:complexType>\r
                                     <xs:sequence>\r
                                         <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                                        <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\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:choice>\r
                                     </xs:sequence>\r
                                     <xs:attributeGroup ref="EventAttributes"/>\r
                                 </xs:complexType>\r
                             </xs:element>\r
+                            <!-- Remove Arch and use Arch attribute in Event above -->\r
                             <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                                 <xs:complexType>\r
                                     <xs:sequence>\r
                                             <xs:complexType>\r
                                                 <xs:sequence>\r
                                                     <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                                                    <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
                                                 </xs:sequence>\r
                                                 <xs:attributeGroup ref="EventAttributes"/>\r
                                             </xs:complexType>\r
                         <xs:attributeGroup ref="ExternAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>\r
+                <!-- Remove Arch and use Arch Attribute in above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
+                <!-- DO NOT USE Arch remove it element and use Arch Attribute to Filename instead -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="1">\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE! removing Arch element, use Arch attribute in Formset instead. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
+                            <xs:choice minOccurs="1">\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                            </xs:choice>\r
                             <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
                         </xs:sequence>\r
                         <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\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
                             <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
                         <xs:attributeGroup ref="GuidAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE Arch, Arch should be removed and the attribute Arch should be used in the above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                                         <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
                                         <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\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
                                         <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>\r
                                         <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
                         <xs:sequence>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:normalizedString"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="C_Name"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\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:choice>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="HobAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE Arch, use attribute Arch for Hob in above -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="IndustryStdHeaders">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" ref="IncludeHeader"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
     <xs:element name="InstalledDate" type="DateType"/>\r
     <xs:element name="Libraries">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">Different (Module)  Instances of Libraries used ONLY in FPD Files.</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:complexType>\r
             <xs:simpleContent>\r
                 <xs:extension base="BaseNameConvention">\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:attributeGroup ref="LibraryClassAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="LibraryClassDefinitions">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This section defines what Classes of Libraries that this library belongs to. A Library may belong to multiple different library classes.</xs:documentation>\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:sequence minOccurs="1" maxOccurs="unbounded">\r
             </xs:annotation>\r
             <xs:sequence>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="ModuleName"/>\r
-                <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
+                <xs:choice minOccurs="1">\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                </xs:choice>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
                 <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\r
             </xs:sequence>\r
                         <xs:attributeGroup ref="MsaAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE Arch element, use attribute Arch in above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="1">\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: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="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:complexType>\r
     </xs:element>\r
     <xs:element name="PCDs">\r
+        <!-- PCDs section is going away to be replaced by something else TB Named later -->\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Child of Module Surface Area documents, MSA and MBD files, Library Modules and Other Modules</xs:documentation>\r
             <xs:documentation xml:lang="en">One or more PcdData or PcdBuildData Elements Only one type is permitted</xs:documentation>\r
                     <xs:complexType>\r
                         <xs:sequence maxOccurs="unbounded">\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>\r
-                            <xs:choice minOccurs="1">\r
+                            <xs:choice minOccurs="0">\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:choice minOccurs="0">\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:choice minOccurs="1">\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Path"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Filename"/>\r
+                            </xs:choice>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="InstalledDate"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PackageAttributes"/>\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:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
-    <!-- PcdDynamicBuildDeclarations -->\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:documentation xml:lang="en">This permits entering information about a package's PCD information</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:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Token" type="Token"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <!-- DO NOT USE removing PcdDefinitions, use PcdDeclarations for SPD entries  Use PcdBuildDeclarations for MSA Entires and PcdDynamicBuildDeclarations for FPD Entries -->\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:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="Path"/>\r
-                <!--\r
-                <xs:element minOccurs="0" maxOccurs="1" ref="File"/>\r
-                    -->\r
+                <xs:choice minOccurs="0">\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Path"/>\r
+                    <xs:element minOccurs="0" maxOccurs="1" ref="Filename"/>\r
+                </xs:choice>\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:complexType>\r
                         <xs:sequence>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
-                            <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="C_Name"/>\r
+                            <xs:choice>\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                            </xs:choice>\r
+                            <xs:element minOccurs="0" maxOccurs="unbounded" name="FeatureFlag" type="xs:normalizedString"/>\r
                         </xs:sequence>\r
                         <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
                     </xs:complexType>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE Arch element, use Arch Attribute in above instead. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE! removing Arch element, use Arch attribute of Protocol or ProtocolNotify instead. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
+                <!-- DO NOT USE! removing Arch element, use Arch Attribute of Filename instead.  -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="1">\r
                     <xs:complexType>\r
                         <xs:sequence>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="String" type="xs:normalizedString"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
+                            <xs:choice minOccurs="1">\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\r
+                                <xs:element minOccurs="0" maxOccurs="1" ref="GuidValue"/>\r
+                            </xs:choice>\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
                         <xs:attributeGroup ref="VariableAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- DO NOT USE Arch element, use attribute Arch in above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence>\r