]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/XMLSchema/FrameworkDataElements.xsd
updated UserExtensions to match final schema.
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataElements.xsd
index bbc75d9729d7d441d7492ca1c576cd3232e4908e..2015e01676f449c50688b3c10592f3896f0240d8 100644 (file)
@@ -17,6 +17,8 @@
     </xs:annotation>\r
     <xs:include schemaLocation="NamingConvention.xsd"/>\r
     <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
+    <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>\r
+    <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
     <xs:element name="Abstract">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>\r
@@ -25,7 +27,7 @@
         <xs:complexType>\r
             <xs:simpleContent>\r
                 <xs:extension base="Sentence">\r
-                    <xs:attribute name="URL" type="xs:anyURI"/>\r
+                    <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Ffs"/>\r
                 <xs:element minOccurs="0" maxOccurs="1" ref="Sections"/>\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filenames"/>\r
+                <xs:element ref="Options" minOccurs="0" maxOccurs="1"/>\r
                 <xs:sequence minOccurs="0">\r
                     <xs:element minOccurs="0" maxOccurs="unbounded" name="Option">\r
                         <xs:complexType>\r
                             </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:complexType>\r
                     </xs:element>\r
                 </xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>                \r
             </xs:sequence>\r
             <xs:attribute name="ToolChain" type="ToolChains"/>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="Options">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="Option">\r
+        <!-- This element is used to store flags from the Tools -->\r
+        <xs:complexType>\r
+            <xs:simpleContent>\r
+                <xs:extension base="xs:normalizedString">\r
+                    <xs:attributeGroup ref="OptionAttributes"/>\r
+                </xs:extension>\r
+            </xs:simpleContent>\r
+        </xs:complexType>\r
+    </xs:element>    \r
+    <xs:element name="ModuleBuildOptions">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##local"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="ModuleSaBuildOptions">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="FvBinding" type="FfsNameType"/>\r
+                <!-- The FfsFileNameGuid allows the Platform Integrator to specify a GUID for the FFS File Name GUID -->\r
+                <xs:element minOccurs="0" maxOccurs="1" name="FfsFileNameGuid" type="GuidType"/>\r
+                <!-- If binding is specified, you MUST specify the FfsFormatKey -->\r
+                <xs:element minOccurs="0" maxOccurs="1" name="FfsFormatKey" type="FfsNameType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="ModuleDefinitions">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>    \r
     <xs:element name="C_Name" type="C_Name">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">C_Name is valid for all Description Files</xs:documentation>\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:element name="Constructor" type="C_Name"/>\r
     <xs:element name="Copyright" type="Sentence"/>\r
     <xs:element name="Created" type="DateType"/>\r
+    <xs:element name="CreatedDate" type="DateType"/>\r
     <xs:element name="CreatedBy" type="UserName"/>\r
     <xs:element name="DataHubs">\r
         <xs:annotation>\r
                         </xs: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: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:element minOccurs="0" maxOccurs="1" ref="Guid"/>\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: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:element name="Event">\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>\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: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: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" maxOccurs="unbounded">\r
-                <xs:element name="Extern">\r
+            <xs:sequence minOccurs="1">\r
+                <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="Specification"/>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
                     <xs:complexType>\r
                         <xs:choice minOccurs="1">\r
                             <xs:sequence minOccurs="0" maxOccurs="1">\r
                         <xs:attributeGroup ref="ExternAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\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: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: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:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element name="Formset">\r
-                    <xs:annotation>\r
-                        <xs:documentation xml:lang="en">Describe the valid content of a Formset</xs:documentation>\r
-                    </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:simpleContent>\r
                             <xs:extension base="C_Name">\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:element>\r
     <xs:element name="GuidDeclarations">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+        </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
                 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\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 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" ref="HelpText"/>\r
                         </xs:sequence>\r
-                        <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
+                        <xs:attributeGroup ref="GuidDeclarationAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\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:complexType mixed="true">\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: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:complexType>\r
     </xs:element>\r
     <xs:element name="GuidValue" type="GuidType"/>\r
-    <xs:element name="HelpText" type="Paragraph">\r
+    <xs:element name="HelpText" type="Paragraph"/>\r
+    <xs:element name="HiiPackages">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This section is used to describe how a GUID, PPI or PROTOCOL is to be used within the context of PCDs.</xs:documentation>\r
+            <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>\r
         </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                <xs:element name="HiiPackage">\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="C_Name">\r
+                                <xs:attributeGroup ref="HiiPackageAttributes"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
     </xs:element>\r
     <xs:element name="Hobs">\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
-                            <xs:element minOccurs="0" maxOccurs="1" ref="Guid"/>\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: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:element name="IncludeHeader">\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="FileNameConvention">\r
+                <xs:extension base="PathAndFilename">\r
+                    <!-- Need to use IncludeHeaderAttributes in final -->\r
                     <xs:attributeGroup ref="IncludeAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="PackageName"/>\r
+                <!-- remove Arch element, start using the Arch attribute for the PackageName element above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="1">\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="IndustryStdIncludes">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="IndustryStdHeader">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="Header" type="UiNameType"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" ref="HelpText"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>\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 Instances of Libraries</xs:documentation>\r
+            <xs:documentation xml:lang="en">Different (Module) Instances of Libraries used ONLY in FPD Files.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Library">\r
-                    <xs:complexType>\r
+                    <xs:complexType mixed="true">\r
                         <xs:simpleContent>\r
-                            <xs:extension base="BaseNameConvention">\r
+                            <xs:extension base="xs:NCName">\r
                                 <xs:attributeGroup ref="LibraryAttributes"/>\r
                             </xs:extension>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- remove Arch Element HERE, start using the Arch attribute in Library element above. -->\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="Arch">\r
                     <xs:complexType>\r
                         <xs:choice minOccurs="1" maxOccurs="unbounded">\r
                         <xs:attribute name="ArchType" type="SupportedArchitectures"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
+                <!-- /remove Arch Element -->\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="LibraryClass">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">Define in the MSA and/or SPD, what class of library is being produced by a library module - for components, it can also specify what class of library is consumed.</xs:documentation>\r
+            <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="BaseNameConvention">\r
-                    <xs:attribute name="Usage" type="LibraryUsage" use="optional"/>\r
+                <xs:extension base="xs:NCName">\r
+                    <xs:attributeGroup ref="LibraryClassAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
+    <!-- LAH This is LibraryClassDeclaration FINAL version -->\r
     <xs:element name="LibraryClassDeclaration">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">This element defines a class of library, along with the path to the Include Header for this library</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
-            <xs:sequence minOccurs="0">\r
-                <xs:element minOccurs="1" maxOccurs="1" ref="LibraryClass"/>\r
-                <xs:element minOccurs="1" maxOccurs="1" ref="IncludeHeader"/>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="LibraryClass">\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="xs:NCName">\r
+                                <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
+                                <xs:attribute name="RecommendedInstanceVersion" type="xs:decimal" use="optional"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="IncludeHeader"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstanceGuid" type="GuidType"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" name="RecommendedInstanceVersion" type="xs:decimal"/>\r
+                <xs:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <!-- LAH This is LibraryClassDeclarations FINAL version -->\r
     <xs:element name="LibraryClassDeclarations">\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:annotation>\r
-        <xs:complexType mixed="true">\r
-            <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
-                <xs:element ref="LibraryClassDeclaration"/>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClassDeclaration"/>\r
+                <xs:element name="LibraryClass" minOccurs="0" maxOccurs="unbounded">\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element name="IncludeHeader" type="PathAndFilename" minOccurs="1" maxOccurs="1"/>\r
+                            <xs:element ref="HelpText" minOccurs="1" maxOccurs="1"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="LibraryClassAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>            \r
             </xs:sequence>\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:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element ref="LibraryClass"/>\r
             </xs:sequence>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
                 <xs:extension base="Paragraph">\r
-                    <xs:attribute name="URL" type="xs:anyURI"/>\r
+                    <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="Modified" type="DateType"/>\r
+    <xs:element name="ModifiedDate" type="DateType"/>\r
     <xs:element name="Module">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">This is record format for a Module entry in the Framework Database file.</xs:documentation>\r
             </xs:annotation>\r
             <xs: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:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="BaseNameConvention">\r
+                <xs:extension base="xs:NCName">\r
                     <xs:attributeGroup ref="ModuleNameAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
     <xs:element name="ModuleUnloadImage" type="xs:normalizedString"/>\r
     <xs:element name="MsaFiles">\r
         <xs:complexType>\r
+          <xs:choice minOccurs="1" maxOccurs="unbounded">\r
             <xs:sequence minOccurs="1">\r
                 <xs:element minOccurs="0" maxOccurs="unbounded" name="MsaFile">\r
                     <xs:annotation>\r
-                        <xs:documentation xml:lang="en">Describe the valid content of a Surface Area Package Description (SPD) file</xs:documentation>\r
+                        <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
                     </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:sequence minOccurs="0" maxOccurs="1">\r
                         <xs: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:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
+            <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>\r
+          </xs:choice>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <!-- Use in Final -->\r
+    <xs:element name="MsaFileList">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Surface Area Package Description (SPD) list of Module Surface Area files</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>\r
+            </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="OutputDirectory">\r
             </xs:simpleContent>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="ProcessStep">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="ToolName" type="xs:string"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="ToolArgs" type="xs:string"/>\r
+                <!-- Input patterns  to be processed by the tool above -->\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="InputPattern" type="xs:string"/>\r
+                <!-- A pattern to match for the output -->\r
+                <xs:element minOccurs="1" maxOccurs="1" name="OutputPattern" type="xs:string"/>\r
+            </xs:sequence>\r
+            <xs:attributeGroup ref="SectionAttributes"/>\r
+        </xs:complexType>\r
+    </xs:element>    \r
+    <xs:element name="FfsFormatDeclarations">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="FfsFormatDeclaration">\r
+                    <!-- Required Attributes are the FfsFormatKeyword and SupModuleList -->\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="unbounded" ref="ProcessStep"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="FfsAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:element name="PackageDefinitions">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>\r
+                <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>\r
+            </xs:sequence>\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:sequence>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="HexDoubleWordDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
                             <xs:element 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:element minOccurs="0" maxOccurs="1" ref="HelpText"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdAttributes"/>\r
+                        <xs:attribute name="PcdIsDriver" use="optional"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\r
     </xs:element>\r
     <xs:element name="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:element minOccurs="1" maxOccurs="unbounded" ref="PackageName"/>\r
+                <xs:choice>\r
+                    <xs:element minOccurs="1" maxOccurs="unbounded" ref="Package"/>\r
+                    <xs:element minOccurs="1" maxOccurs="unbounded" ref="PackageName"/>                    \r
+                </xs:choice>\r
             </xs:sequence>\r
             <xs:attributeGroup ref="PackageNameAttributes"/>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="PackageHeaders">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This defines the minimum header file needed to support a given ModuleType.</xs:documentation>\r
+            <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
-                <xs:element minOccurs="1" maxOccurs="unbounded" ref="IncludeHeader"/>\r
+                <xs:choice>\r
+                    <!-- DO NOT USE! removing IncludeHeader, use IncludePkgHeader instead. -->\r
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="IncludeHeader"/>\r
+                    <xs:element minOccurs="0" maxOccurs="unbounded" name="IncludePkgHeader">\r
+                        <xs:complexType>\r
+                            <xs:simpleContent>\r
+                                <xs:extension base="PathAndFilename">\r
+                                    <xs:attributeGroup ref="PackageHeaderAttributes"/>\r
+                                </xs:extension>\r
+                            </xs:simpleContent>\r
+                        </xs:complexType>\r
+                    </xs:element>\r
+                </xs:choice>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="PackageList">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages installed in a workspace.</xs:documentation>\r
+            <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages installed in a workspace. (Database)</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence maxOccurs="unbounded">\r
-                <xs:element minOccurs="1" name="Package">\r
+                <xs:element minOccurs="0" name="Package">\r
                     <xs:annotation>\r
                         <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track individual package information. The Path is a relative path to the SPD File.</xs:documentation>\r
                     </xs:annotation>\r
                     <xs:complexType>\r
                         <xs:sequence maxOccurs="unbounded">\r
                             <xs:element minOccurs="0" maxOccurs="1" ref="PackageName"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Guid"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
-                            <xs:element minOccurs="1" maxOccurs="1" ref="Path"/>\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="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: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:element>\r
+                <xs:element name="Filename" type="PathAndFilename" minOccurs="0" maxOccurs="unbounded"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="Package">\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 (SPD) </xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType mixed="true">\r
+            <xs:simpleContent>\r
+                <xs:extension base="UiNameType">\r
+                    <xs:attributeGroup ref="PackageAttributes"/>\r
+                </xs:extension>\r
+            </xs:simpleContent>\r
+        </xs:complexType>\r
+    </xs:element>\r
     <xs:element name="PackageName">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module</xs:documentation>\r
+            <xs:documentation xml:lang="en">This tag is used in the Package Surface Area Description File to track package dependencies for a module (SPD) </xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:simpleContent>\r
-                <xs:extension base="BaseNameConvention">\r
+                <xs:extension base="UiNameType">\r
                     <xs:attributeGroup ref="PackageAttributes"/>\r
                 </xs:extension>\r
             </xs:simpleContent>\r
     </xs:element>\r
     <xs:element name="PcdBuildDeclarations">\r
         <xs:annotation>\r
-            <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
-            <xs:documentation xml:lang="en">We permit the FPD to use an external XML file for PCD information or else the information must be contained within the XML data element, PcdBuildData.</xs:documentation>\r
+            <xs:documentation xml:lang="en">NEW: Will become a child of ModuleSA in the FPD</xs:documentation>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:choice minOccurs="1">\r
                                     </xs:simpleContent>\r
                                 </xs:complexType>\r
                             </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes">\r
                                 <xs:annotation>\r
                                     <xs:documentation xml:lang="en">This specifies the size of the Pcd Datum. It is either 8, 16, 32 or 64 bits for values, 1 bit for BOOLEAN and variable length for elements defined as VOID*</xs:documentation>\r
                                     <xs:documentation xml:lang="en">This is the C Name for the Variable, and is valid if and only HII is enabled.</xs:documentation>\r
                                 </xs:annotation>\r
                             </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="VariableValueDefault" type="xs:normalizedString"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DataOffset" type="Hex64BitDataType">\r
                                 <xs:annotation>\r
                                     <xs:documentation xml:lang="en">If HII is enabled, This is the offset into the variable data entry, If Vpd is enabled, then it's the Offset into the VPD area of the image defined by platform manufacturer, if neither HII nor Vpd are enabled, it's the offset into the PCD Data Area. HII and VPD can never be enabled at the same time (as of the date of this document.)</xs:documentation>\r
                                 </xs:annotation>\r
                             </xs:element>\r
-                            <xs:element minOccurs="1" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="GuidOffset" type="Hex64BitDataType">\r
                                 <xs:annotation>\r
-                                    <xs:documentation xml:lang="en">This field is only valid if AlternateNameSpaceEnable is true.</xs:documentation>\r
+                                    <xs:documentation xml:lang="en">FIELD IS NOT USED! REMOVE in FINAL!</xs:documentation>\r
                                 </xs:annotation>\r
                             </xs:element>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue" type="xs:normalizedString"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="PcdAttributes"/>\r
+                        <xs:attribute name="PcdIsDriver">\r
+                            <xs:simpleType>\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en">This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only</xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:restriction base="UCNameType">\r
+                                    <xs:enumeration value="PEI_PCD_DRIVER"/>\r
+                                    <xs:enumeration value="DXE_PCD_DRIVER"/>\r
+                                </xs:restriction>\r
+                            </xs:simpleType>\r
+                        </xs:attribute>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:choice>\r
         </xs:complexType>\r
     </xs:element>\r
+    <!-- PcdBuildDeclarations -->\r
+    <xs:element name="PcdDynamicBuildDeclarations">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">Child of Framework Platform Description (FPD)</xs:documentation>\r
+            <xs:documentation xml:lang="en">We permit the FPD to use an external XML file for PCD information or else the information must be contained within the XML data element, PcdBuildData.</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="0" maxOccurs="unbounded" name="PcdBuildData">\r
+                    <xs:annotation>\r
+                        <xs:documentation xml:lang="en">Child of PcdBuildDeclarations</xs:documentation>\r
+                        <xs:documentation xml:lang="en">This is date element is used in the platform build description file and contains valid data for a Platform Build</xs:documentation>\r
+                        <xs:documentation xml:lang="en">There is ONE required Attribute, ItemType</xs:documentation>\r
+                    </xs:annotation>\r
+                    <xs:complexType>\r
+                        <xs:sequence>\r
+                            <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="Token">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en">This as a unique identifier defined for either this name space.</xs:documentation>\r
+                                    <xs:documentation xml:lang="en">The Target Attribute may be used to define a Target name space, such as PCI.</xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:complexType>\r
+                                    <xs:simpleContent>\r
+                                        <xs:extension base="HexDoubleWordDataType">\r
+                                            <xs:attribute name="Target" type="C_Name" use="optional"/>\r
+                                        </xs:extension>\r
+                                    </xs:simpleContent>\r
+                                </xs:complexType>\r
+                            </xs:element>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs: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:element minOccurs="0" maxOccurs="1" name="SkuDataArray">\r
+                                    <xs:annotation>\r
+                                        <xs:documentation xml:lang="en">This element is a list of two entries per line, the first should be an integer, while the second entry should be a string value</xs:documentation>\r
+                                    </xs:annotation>\r
+                                    <xs:simpleType>\r
+                                        <xs:list itemType="xs:normalizedString"/>\r
+                                    </xs:simpleType>\r
+                                </xs:element>\r
+                                <xs:element minOccurs="0" maxOccurs="unbounded" name="SkuData">\r
+                                    <xs:annotation>\r
+                                        <xs:documentation xml:lang="en">This section is for a list of SkuData Elements, ID and Value</xs:documentation>\r
+                                    </xs:annotation>\r
+                                    <xs:complexType>\r
+                                        <xs:sequence minOccurs="1">\r
+                                            <xs:element name="Id" type="xs:int"/>\r
+                                            <xs:element name="Value" type="xs:normalizedString"/>\r
+                                        </xs:sequence>\r
+                                    </xs:complexType>\r
+                                </xs:element>\r
+                            </xs:choice>\r
+                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="MaxSku" type="HexByteDataType">\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en">This value comes from a production line database, and has nothing to do with the number of SkuData IDs that have been defined.</xs:documentation>\r
+                                </xs:annotation>\r
+                            </xs:element>\r
+                            <xs:element default="0x00" minOccurs="1" maxOccurs="1" name="SkuId" type="HexByteDataType"/>\r
+                            <xs: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: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:attribute name="PcdIsDriver">\r
+                            <xs:simpleType>\r
+                                <xs:annotation>\r
+                                    <xs:documentation xml:lang="en">This is an enumerated data type that will be used for DYNAMIC_EX, PEIM or DXE only</xs:documentation>\r
+                                </xs:annotation>\r
+                                <xs:restriction base="UCNameType">\r
+                                    <xs:enumeration value="PEI_PCD_DRIVER"/>\r
+                                    <xs:enumeration value="DXE_PCD_DRIVER"/>\r
+                                </xs:restriction>\r
+                            </xs:simpleType>\r
+                        </xs:attribute>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <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="TokenDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>\r
+                            <xs:element minOccurs="1" maxOccurs="unbounded" name="SkuInfo">\r
+                                <xs:complexType>\r
+                                    <xs:sequence>\r
+                                        <xs:element minOccurs="1" maxOccurs="1" name="SkuId" type="xs:nonNegativeInteger"/>\r
+                                        <xs:choice>\r
+                                            <xs:group minOccurs="0" maxOccurs="1" ref="HiiEnable"/>\r
+                                            <xs:group minOccurs="0" maxOccurs="1" ref="VpdEnable"/>\r
+                                            <xs:group minOccurs="0" maxOccurs="1" ref="DefaultGroup"/>\r
+                                        </xs:choice>\r
+                                    </xs:sequence>\r
+                                </xs:complexType>\r
+                            </xs:element>\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="TokenDataType"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
+                            <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize" type="DatumSizeLimitation"/>                            \r
+                            <xs:element minOccurs="0" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdBuildDefinitionAttributes"/>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
+    <xs:group name="DefaultGroup">\r
+        <xs:sequence>\r
+            <xs:element minOccurs="1" maxOccurs="1" name="Value" type="xs:normalizedString"/>\r
+        </xs:sequence>\r
+    </xs:group>\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="VariableNameDataType"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableGuid" type="VariableGuidType"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="VariableOffset" type="Hex64BitDataType"/>\r
+            <xs:element minOccurs="0" maxOccurs="1" name="HiiDefaultValue" type="xs:normalizedString"/>\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: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" ref="HelpText"/>\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
+    <!-- LAH This is PcdDeclarations FINAL version -->\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 section is for entering information about a package's PCDs</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence minOccurs="1">\r
+                <xs:element maxOccurs="unbounded" name="PcdEntry">\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="TokenDataType"/>\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" ref="HelpText"/>\r
+                        </xs:sequence>\r
+                        <xs:attributeGroup ref="PcdDeclarationAttributes"/>\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:sequence>\r
                             <xs:element minOccurs="1" maxOccurs="1" ref="C_Name"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="Token" type="Token"/>\r
+                            <xs:element minOccurs="0" maxOccurs="1" name="TokenSpaceGuid" type="GuidType"/>\r
                             <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="HiiEnable" type="xs:boolean"/>\r
                             <xs:element default="false" minOccurs="0" maxOccurs="1" name="VpdEnable" type="xs:boolean"/>\r
         </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
-                <xs:element name="PlatformName">\r
+                <xs:element minOccurs="0" maxOccurs="1" name="PlatformName">\r
                     <xs:annotation>\r
                         <xs:documentation xml:lang="en">Define the Name of a Platform</xs:documentation>\r
                     </xs:annotation>\r
                         </xs:simpleContent>\r
                     </xs:complexType>\r
                 </xs:element>\r
-                <xs:element ref="Path"/>\r
+                <xs: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:element minOccurs="0" maxOccurs="1" name="AlternateFdfFile" type="FileNameConvention"/>\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="PpiDeclarations">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+        </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
                 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\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
+                                <!-- DO NOT USE removing Guid in final, use GuidValue instead -->\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" ref="HelpText"/>\r
                         </xs:sequence>\r
-                        <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
+                        <xs:attributeGroup ref="PpiDeclarationAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\r
             </xs:sequence>\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:complexType>\r
     </xs:element>\r
     <xs:element name="ProtocolDeclarations">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
+        </xs:annotation>\r
         <xs:complexType>\r
             <xs:sequence>\r
                 <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\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="1" ref="HelpText"/>\r
                         </xs:sequence>\r
-                        <xs:attribute name="Name" type="xs:normalizedString" use="required"/>\r
+                        <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>\r
                     </xs:complexType>\r
                 </xs:element>\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:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="SkuInfo">\r
+        <xs:complexType>\r
+            <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                <xs:element name="UiSkuName">\r
+                    <xs:complexType>\r
+                        <xs:simpleContent>\r
+                            <xs:extension base="UiNameType">\r
+                                <xs:attribute name="SkuID" type="xs:nonNegativeInteger" use="required"/>\r
+                            </xs:extension>\r
+                        </xs:simpleContent>\r
+                    </xs:complexType>\r
+                </xs:element>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>\r
     <xs:element name="Specification">\r
         <xs:annotation>\r
             <xs:documentation xml:lang="en">This string is used to provide the name and version of the Specification that the component conforms to.</xs:documentation>\r
         <xs:complexType>\r
             <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
                 <xs:element name="SystemTable">\r
-                    <xs:complexType>\r
-                        <xs:sequence>\r
+                    <xs:complexType mixed="true">\r
+                        <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
+                            <!-- Remove Entry from Use -->\r
                             <xs:element minOccurs="0" maxOccurs="1" name="Entry" type="xs:normalizedString"/>\r
                         </xs:sequence>\r
                         <xs:attributeGroup ref="SystemTableAttributes"/>\r
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="Updated" type="DateType"/>\r
+    <xs:element name="UpdatedDate" type="DateType"/>\r
     <xs:element name="URL" type="xs:anyURI"/>\r
     <xs:element name="URI" type="xs:anyURI"/>\r
     <xs:element name="UserDefinedAntTasks">\r
             </xs:sequence>\r
         </xs:complexType>\r
     </xs:element>\r
+    <xs:element name="UserExtensions">\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##local"/>\r
+            </xs:sequence>\r
+            <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
+            <xs:attribute name="Identifier" type="xs:integer" use="required"/>\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:element minOccurs="1" maxOccurs="1" ref="Guid"/>\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
                         <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
         </xs:complexType>\r
     </xs:element>\r
     <xs:element name="Version" type="xs:normalizedString"/>\r
+    <xs:element name="FarList">\r
+        <xs:annotation>\r
+            <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all DISTRIBUTION packages (FAR files) installed in a workspace. (Database)</xs:documentation>\r
+        </xs:annotation>\r
+        <xs:complexType>\r
+            <xs:sequence>\r
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>\r
+            </xs:sequence>\r
+        </xs:complexType>\r
+    </xs:element>    \r
 </xs:schema>\r