summaryrefslogtreecommitdiff
path: root/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Conf/XMLSchema/WorkspaceContent.xsd')
-rw-r--r--BaseTools/Conf/XMLSchema/WorkspaceContent.xsd409
1 files changed, 409 insertions, 0 deletions
diff --git a/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd b/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
new file mode 100644
index 0000000000..8809792ac4
--- /dev/null
+++ b/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Filename: WorkspaceContent.xsd
+
+ Copyright (c) 2008, Intel Corp. All rights reserved.
+
+ This program and the accompanying materials are licensed and made available
+ under the terms and conditions of the BSD License which may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="http://edk2.TianoCore.org/2008/1.0"
+ xmlns="http://edk2.TianoCore.org/2008/1.0">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">This document covers the
+ WorkspaceContent.xml file that tracks what has been installed into an EDK
+ II development WORKSPACE.</xs:documentation>
+ </xs:annotation>
+ <xs:element name="WorkspaceContent">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This file describes the distributions,
+ packages, stand-alone (non-package) modules and miscellaneous files that
+ have been installed in THIS WORKSPACE. Additionally, any tools that are
+ installed as part of a distribution are tracked (tools are not required
+ to be installed within a WORKSPACE.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="Header" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section tracks required
+ information about this WORKSPACE. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="DistributionPackage" minOccurs="1"
+ maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of UEFI/PI distribution
+ packages that have been installed in this WORKSPACE.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Name"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This User Interface Name can be
+ entered during initialization of a WORKSPACE to permit a developer
+ to uniquely identify a WORKSPACE. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This value can be used by report
+ generators. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="AbsolutePath"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> When the WORKSPACE is first
+ initialized, this is the absolute path to the WORKSPACE. If the
+ user moves or re-names the directory, the RmPkg tool will need to
+ verify the content of this WORKSPACE before removing any content.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="LastModifiedDate"
+ type="xs:dateTime">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The date and time of the last
+ Package Installation or Removal. The format is:
+ YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T
+ character separator between the calendar date and the time.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="WorkspaceContentSpecification" default="1.0" type="xs:decimal"
+ />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+
+
+ <xs:element name="ModuleList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Module">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User Interface Name of
+ the module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NCName"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The BaseName is
+ used to create files and folders during a build, and
+ is used by packaging tools as a keyword to create
+ the INF file. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the GUID of the
+ module. Backward compatible versions of a module can use the
+ same GUID, however the version attribute must be changed
+ (incrementally.) Non-backward compatible versions of a
+ module must also provide a new GUID, while resetting the
+ version attribute is optional. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InstalledFolder" minOccurs="1" maxOccurs="1"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the WORKSPACE
+ relative path that the Module was installed in.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfFilename" minOccurs="1" maxOccurs="1"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is filename of the
+ INF file created in the InstalledFolder (listed above)
+ during installation. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="DistributionPackage">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User Interface Name of the
+ distribution. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the actual
+ BaseName used during the installation. Since users may
+ change the Distribution Package's default BaseName (used
+ to create the PKG and MANIFEST files) this is the real
+ name used to create the files. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the GUID of the
+ distribution, backward compatible versions of a distribution can
+ use the same GUID, however the version attribute must be changed
+ (incrementally.) Non-backward compatible versions of a
+ distribution must also provide a new GUID, while resetting the
+ version attribute is optional. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="PkgFilename"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the filename of the XML
+ distribution package surface area (PKG) file that was stored in
+ the Conf/Pkgs folder of the WORKSPACE for this distribution
+ package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="ManifestFilename"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the filename of the
+ distribution package manifest (.manifest) file that was created
+ and stored in the Conf/Pkgs folder of the WORKSPACE for this
+ distribution package. The InstallPkg tool must create this file
+ using the extracted locations of the content zip file (or,
+ alternatively, the user can create the file by redirecting the
+ output of the zip -Tv Contents.zip.) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="InstalledDate"
+ type="xs:dateTime" />
+ <xs:element name="DistributionProperties" minOccurs="0" maxOccurs="1"
+ nillable="true">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section tracks information
+ and content that is not associated with either packages or
+ modules, or is not required for building packages or modules.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="ReadOnly" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">If set to true, all content
+ within this distribution package should NOT be
+ modified.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="RePackage" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">If set to true, then the
+ content can be repackaged into another distribution
+ package.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ModifiedToolsDef" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us">If set to true, then either
+ the distribution or one of its packages has a user extensions
+ section that modified the tools_def.txt file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ProvidesTools" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to identify a
+ distribution that provides tools that may or may not be
+ installed in a WORKSPACE. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ProvidesMiscellaneousFiles" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to identify a
+ distribution that provides miscellaneous files that must be
+ installed in a WORKSPACE. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="UnknownUserExtensions" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to identify a
+ distribution that has a UserExtensions section at the
+ Distribution, Package or Module level that uses an Identifier
+ other than BuildOptions, ToolsDef or DistributionPackage.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PackageList" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section tracks individual
+ packages (collections of related items.) Each package listed in
+ this section must have a DEC file associated with it.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Package" minOccurs="1" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The User Interface
+ Name of the package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NCName"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The BaseName
+ is used to create files and folders during a
+ build, and is used by packaging tools as a
+ keyword to create the DEC file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the GUID of
+ the package, backward compatible versions of a package
+ can use the same GUID, however the version attribute
+ must be changed (incrementally.) Non-backward
+ compatible versions of a package must also provide a
+ new GUID, while resetting the version attribute is
+ optional. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InstalledFolder" type="xs:anyURI"
+ minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is used to
+ track the actual installation location, relative to
+ the WORKSPACE. During an installation, the user may be
+ presented with an option to relocate package content
+ from the ZIP portion of the archive into a different
+ location. </xs:documentation>
+ <xs:documentation> Any installation tools must modify
+ this value if the location is different from the
+ default location. </xs:documentation>
+ <xs:documentation> Any removal tools must check this
+ value to locate correctly, the items that will be
+ removed. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DecFilename" minOccurs="1" maxOccurs="1"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the filename
+ of the package declaration (DEC) filename created
+ during installation in the InstalledFolder listed
+ above. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used
+ to track the actual installation location, relative to
+ the WORKSPACE. Every module that is part of this
+ package must be listed here. During an installation,
+ the user may be presented with an option to relocate
+ module content from the ZIP portion of the archive
+ into a different location, the installation tools must
+ modify this value if the location is different from
+ the default location. Any removal tools must check
+ this value to locate correctly, the items that will be
+ removed. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The name of any INF
+ files that were created during the installation of a
+ distribution must also be listed in this section.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to record
+ distribution packages that contain modules that are not part of a
+ package. Modules that are part of packages are listed under the
+ Package element of the PackageList section. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Module only distribution will
+ typically be for binary only modules, like the enhanced FAT
+ driver. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="GUID">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Simple Types that further restrict allowed content. -->
+
+ <xs:simpleType name="RegistryFormatGuid">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A Registry format GUID must contain
+ five different Hexadecimal character sets that are separated by a dash
+ (-) character. </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:pattern
+ value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"
+ />
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>