]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/XMLSchema/FrameworkDataElements.xsd
Changed the group names VpdGroup and HiiGroup to HiiEnable and VpdEnable. Changed...
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataElements.xsd
index ffa1e7441f5f95e53cf16ee826b95278d0f11e93..65db34a3248aaf67b1333f6867a7e9f7d42c32d5 100644 (file)
                                     <xs:attributeGroup ref="EventAttributes"/>\r
                                 </xs:complexType>\r
                             </xs:element>\r
-                            <!-- Remove Arch Section and use Arch Attribute instead in above. -->\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:attributeGroup ref="EventAttributes"/>\r
                                 </xs:complexType>\r
                             </xs:element>\r
-                            <!-- Remove Arch and use Arch attribute in above -->\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: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: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
-                            <!-- DO NOT USE remove and use FeatureFlag instead -->\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="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
-                                        <!-- DO NOT USE remove and use FeatureFlag instead -->\r
                                         <xs:element minOccurs="0" maxOccurs="1" ref="DefaultValue"/>\r
                                         <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\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: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: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="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:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
                             <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="MaxSku" type="HexByteDataType"/>\r
                             <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="DatumSize">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:simpleType>\r
-                                    <xs:restriction base="xs:int">\r
-                                        <xs:minInclusive value="1"/>\r
-                                        <xs:maxInclusive value="16777215"/>\r
-                                    </xs:restriction>\r
-                                </xs:simpleType>\r
-                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
                                 </xs:complexType>\r
                             </xs:element>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID*</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This Bit means that the Variable data is associated with HII</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This bit enables the Vital Product Data area within flash for maintaining PCD information</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean">\r
-                                <xs:annotation>\r
-                                    <xs:documentation>This is only applicable to ItemType DYNAMIC_EX</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
+                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
+                            <xs:element default="false" minOccurs="1" maxOccurs="1" name="AlternateNameSpaceEnable" type="xs:boolean"/>\r
                             <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuEnable" type="xs:boolean"/>\r
                             <xs:element default="false" minOccurs="1" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
                             <xs:choice minOccurs="0">\r
                                     <xs:documentation xml:lang="en">This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined.</xs:documentation>\r
                                 </xs:annotation>\r
                             </xs:element>\r
-                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is the specific Sku ID for this build.</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DatumSize">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">Max Number of Bytes of the data.</xs:documentation>\r
-                                </xs:annotation>\r
-                                <xs:simpleType>\r
-                                    <xs:restriction base="xs:int">\r
-                                        <xs:minInclusive value="1"/>\r
-                                        <xs:maxInclusive value="16777215"/>\r
-                                    </xs:restriction>\r
-                                </xs:simpleType>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is the Variable's GUID if and only if HII is enabled.</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
+                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
                             <xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.)</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
-                            <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
-                                <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">FIELD IS NOT USED! REMOVE in FINAL!</xs:documentation>\r
-                                </xs:annotation>\r
-                            </xs:element>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdAttributes"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
-    <!-- PcdDynamicBuildDeclarations -->\r
+    <xs:element name="DynamicPcdBuildDefinitions">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
+            <xs:documentation xml:lang="en">FPD uses this PCD information for Dynamic PCDs Only</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:group minOccurs="0" maxOccurs="1" ref="SkuGroup"/>\r
+                            <xs:choice minOccurs="0" maxOccurs="1">\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="HiiEnable"/>\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="VpdEnable"/>\r
+                            </xs:choice>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="PcdBuildDefinition">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Child of FPD ModuleSA element for FIXED_AT_BUILD, PATCHABLE_IN_MODULE, and FEATURE_FLAG PCDS Only!</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence minOccurs="1">\r
+                <xs:element maxOccurs="unbounded" name="PcdData">\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:group minOccurs="0" maxOccurs="1" ref="SkuGroup"/>\r
+                            <xs:choice minOccurs="0" maxOccurs="1">\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="HiiEnable"/>\r
+                                <xs:group minOccurs="0" maxOccurs="1" ref="VpdEnable"/>\r
+                            </xs:choice>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DatumSize" type="DatumSizeLimitation"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:group name="HiiEnable">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">If HiiEnable group is specified, then HiiEnable is default true</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:sequence>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableName" type="xs:normalizedString"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
+        </xs:sequence>\r
+    </xs:group>\r
+    <xs:group name="VpdEnable">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">If VpdEnable group is specified, then VpdEnable is default true</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:sequence>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VpdOffset" type="Hex64BitDataType"/>\r
+        </xs:sequence>\r
+    </xs:group>\r
+    <xs:group name="SkuGroup">\r
+        <xs:sequence>\r
+            <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuSet" type="SkuListType"/>\r
+            <xs:element default="0x00" minOccurs="0" maxOccurs="1" name="SkuList" type="SkuListType"/>\r
+            <xs:element default="false" minOccurs="0" maxOccurs="1" name="SkuDataArrayEnable" type="xs:boolean"/>\r
+            <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\r
+                <xs:complexType>\r
+                    <xs:sequence minOccurs="1">\r
+                        <xs:element name="Id" type="xs:int"/>\r
+                        <xs:element name="Value" type="xs:normalizedString"/>\r
+                    </xs:sequence>\r
+                </xs:complexType>\r
+            </xs:element>\r
+        </xs:sequence>\r
+    </xs:group>\r
+    <xs:element name="PcdCoded">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence minOccurs="1">\r
+                <xs:element maxOccurs="unbounded" name="PcdEntry">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en">This is the valid content of the PCD table of a Module. The contents may not be wired at build time, and these only refer to Platform Build values, not modules.</xs:documentation>\r
+                        <xs:documentation xml:lang="en">This element is valid for PcdInfo.xml and FPD files.</xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValue"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
+                        </xs:sequence>\r
+                        <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->\r
+                        <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="PcdDeclarations">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Child of Package Surface Area Description (SPD)</xs:documentation>\r
+            <xs: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
+                <!-- 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:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="UserExtensions">\r
+        <xs:complexType>\r
+            <xs:complexContent mixed="true">\r
+                <xs:extension base="xs:anyType">\r
+                    <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
+                    <xs:attribute name="Identifier" type="xs:integer" use="required"/>\r
+                </xs:extension>\r
+            </xs:complexContent>\r
+        </xs:complexType>\r
+    </xs:element>\r
     <xs:element name="Variables">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">A list of EFI Variables described by GUID string pair.</xs:documentation>\r