]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
Move SmmLib from IntelFrameworkPkg to MdePkg because this library is useful to both...
[mirror_edk2.git] / BaseTools / Conf / XMLSchema / WorkspaceContent.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 Filename: WorkspaceContent.xsd
4
5 Copyright (c) 2008, Intel Corp. All rights reserved.
6
7 This program and the accompanying materials are licensed and made available
8 under the terms and conditions of the BSD License which may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 -->
15 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
16 elementFormDefault="qualified"
17 targetNamespace="http://edk2.TianoCore.org/2008/1.0"
18 xmlns="http://edk2.TianoCore.org/2008/1.0">
19 <xs:annotation>
20 <xs:documentation xml:lang="en-us">This document covers the
21 WorkspaceContent.xml file that tracks what has been installed into an EDK
22 II development WORKSPACE.</xs:documentation>
23 </xs:annotation>
24 <xs:element name="WorkspaceContent">
25 <xs:annotation>
26 <xs:documentation xml:lang="en-us"> This file describes the distributions,
27 packages, stand-alone (non-package) modules and miscellaneous files that
28 have been installed in THIS WORKSPACE. Additionally, any tools that are
29 installed as part of a distribution are tracked (tools are not required
30 to be installed within a WORKSPACE.) </xs:documentation>
31 </xs:annotation>
32 <xs:complexType>
33 <xs:sequence>
34 <xs:element ref="Header" minOccurs="1" maxOccurs="1">
35 <xs:annotation>
36 <xs:documentation xml:lang="en-us"> This section tracks required
37 information about this WORKSPACE. </xs:documentation>
38 </xs:annotation>
39 </xs:element>
40 <xs:element ref="DistributionPackage" minOccurs="1"
41 maxOccurs="unbounded">
42 <xs:annotation>
43 <xs:documentation xml:lang="en-us"> The list of UEFI/PI distribution
44 packages that have been installed in this WORKSPACE.
45 </xs:documentation>
46 </xs:annotation>
47 </xs:element>
48 </xs:sequence>
49 </xs:complexType>
50 </xs:element>
51
52 <xs:element name="Header">
53 <xs:complexType>
54 <xs:sequence>
55 <xs:element minOccurs="0" maxOccurs="1" name="Name"
56 type="xs:normalizedString">
57 <xs:annotation>
58 <xs:documentation xml:lang="en-us"> This User Interface Name can be
59 entered during initialization of a WORKSPACE to permit a developer
60 to uniquely identify a WORKSPACE. </xs:documentation>
61 <xs:documentation xml:lang="en-us"> This value can be used by report
62 generators. </xs:documentation>
63 </xs:annotation>
64 </xs:element>
65 <xs:element minOccurs="1" maxOccurs="1" name="AbsolutePath"
66 type="xs:anyURI">
67 <xs:annotation>
68 <xs:documentation xml:lang="en-us"> When the WORKSPACE is first
69 initialized, this is the absolute path to the WORKSPACE. If the
70 user moves or re-names the directory, the RmPkg tool will need to
71 verify the content of this WORKSPACE before removing any content.
72 </xs:documentation>
73 </xs:annotation>
74 </xs:element>
75 <xs:element minOccurs="1" maxOccurs="1" name="LastModifiedDate"
76 type="xs:dateTime">
77 <xs:annotation>
78 <xs:documentation xml:lang="en-us"> The date and time of the last
79 Package Installation or Removal. The format is:
80 YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T
81 character separator between the calendar date and the time.
82 </xs:documentation>
83 </xs:annotation>
84 </xs:element>
85 <xs:element minOccurs="1" maxOccurs="1"
86 name="WorkspaceContentSpecification" default="1.0" type="xs:decimal"
87 />
88 </xs:sequence>
89 </xs:complexType>
90 </xs:element>
91
92
93
94 <xs:element name="ModuleList">
95 <xs:complexType>
96 <xs:sequence>
97 <xs:element minOccurs="1" maxOccurs="unbounded" name="Module">
98 <xs:complexType>
99 <xs:sequence>
100 <xs:element name="Name" minOccurs="1" maxOccurs="1">
101 <xs:annotation>
102 <xs:documentation xml:lang="en-us"> The User Interface Name of
103 the module. </xs:documentation>
104 </xs:annotation>
105 <xs:complexType>
106 <xs:simpleContent>
107 <xs:extension base="xs:normalizedString">
108 <xs:attribute name="BaseName" type="xs:NCName"
109 use="required">
110 <xs:annotation>
111 <xs:documentation xml:lang="en-us"> The BaseName is
112 used to create files and folders during a build, and
113 is used by packaging tools as a keyword to create
114 the INF file. </xs:documentation>
115 </xs:annotation>
116 </xs:attribute>
117 </xs:extension>
118 </xs:simpleContent>
119 </xs:complexType>
120 </xs:element>
121 <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
122 <xs:annotation>
123 <xs:documentation xml:lang="en-us"> This is the GUID of the
124 module. Backward compatible versions of a module can use the
125 same GUID, however the version attribute must be changed
126 (incrementally.) Non-backward compatible versions of a
127 module must also provide a new GUID, while resetting the
128 version attribute is optional. </xs:documentation>
129 </xs:annotation>
130 </xs:element>
131 <xs:element name="InstalledFolder" minOccurs="1" maxOccurs="1"
132 type="xs:anyURI">
133 <xs:annotation>
134 <xs:documentation xml:lang="en-us"> This is the WORKSPACE
135 relative path that the Module was installed in.
136 </xs:documentation>
137 </xs:annotation>
138 </xs:element>
139 <xs:element name="InfFilename" minOccurs="1" maxOccurs="1"
140 type="xs:anyURI">
141 <xs:annotation>
142 <xs:documentation xml:lang="en-us"> This is filename of the
143 INF file created in the InstalledFolder (listed above)
144 during installation. </xs:documentation>
145 </xs:annotation>
146 </xs:element>
147 </xs:sequence>
148 </xs:complexType>
149 </xs:element>
150 </xs:sequence>
151 </xs:complexType>
152 </xs:element>
153
154 <xs:element name="DistributionPackage">
155 <xs:complexType>
156 <xs:sequence>
157 <xs:element minOccurs="1" maxOccurs="1" name="Name">
158 <xs:annotation>
159 <xs:documentation xml:lang="en-us"> The User Interface Name of the
160 distribution. </xs:documentation>
161 </xs:annotation>
162 <xs:complexType>
163 <xs:simpleContent>
164 <xs:extension base="xs:normalizedString">
165 <xs:attribute name="BaseName" type="xs:NCName" use="required">
166 <xs:annotation>
167 <xs:documentation xml:lang="en-us"> This is the actual
168 BaseName used during the installation. Since users may
169 change the Distribution Package's default BaseName (used
170 to create the PKG and MANIFEST files) this is the real
171 name used to create the files. </xs:documentation>
172 </xs:annotation>
173 </xs:attribute>
174 </xs:extension>
175 </xs:simpleContent>
176 </xs:complexType>
177 </xs:element>
178 <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
179 <xs:annotation>
180 <xs:documentation xml:lang="en-us"> This is the GUID of the
181 distribution, backward compatible versions of a distribution can
182 use the same GUID, however the version attribute must be changed
183 (incrementally.) Non-backward compatible versions of a
184 distribution must also provide a new GUID, while resetting the
185 version attribute is optional. </xs:documentation>
186 </xs:annotation>
187 </xs:element>
188 <xs:element minOccurs="1" maxOccurs="1" name="PkgFilename"
189 type="xs:anyURI">
190 <xs:annotation>
191 <xs:documentation xml:lang="en-us"> This is the filename of the XML
192 distribution package surface area (PKG) file that was stored in
193 the Conf/Pkgs folder of the WORKSPACE for this distribution
194 package. </xs:documentation>
195 </xs:annotation>
196 </xs:element>
197 <xs:element minOccurs="1" maxOccurs="1" name="ManifestFilename"
198 type="xs:anyURI">
199 <xs:annotation>
200 <xs:documentation xml:lang="en-us"> This is the filename of the
201 distribution package manifest (.manifest) file that was created
202 and stored in the Conf/Pkgs folder of the WORKSPACE for this
203 distribution package. The InstallPkg tool must create this file
204 using the extracted locations of the content zip file (or,
205 alternatively, the user can create the file by redirecting the
206 output of the zip -Tv Contents.zip.) </xs:documentation>
207 </xs:annotation>
208 </xs:element>
209 <xs:element minOccurs="1" maxOccurs="1" name="InstalledDate"
210 type="xs:dateTime" />
211 <xs:element name="DistributionProperties" minOccurs="0" maxOccurs="1"
212 nillable="true">
213 <xs:annotation>
214 <xs:documentation xml:lang="en-us"> This section tracks information
215 and content that is not associated with either packages or
216 modules, or is not required for building packages or modules.
217 </xs:documentation>
218 </xs:annotation>
219 <xs:complexType>
220 <xs:attribute name="ReadOnly" type="xs:boolean" default="false"
221 use="optional">
222 <xs:annotation>
223 <xs:documentation xml:lang="en-us">If set to true, all content
224 within this distribution package should NOT be
225 modified.</xs:documentation>
226 </xs:annotation>
227 </xs:attribute>
228 <xs:attribute name="RePackage" type="xs:boolean" default="false"
229 use="optional">
230 <xs:annotation>
231 <xs:documentation xml:lang="en-us">If set to true, then the
232 content can be repackaged into another distribution
233 package.</xs:documentation>
234 </xs:annotation>
235 </xs:attribute>
236 <xs:attribute name="ModifiedToolsDef" type="xs:boolean"
237 default="false" use="optional">
238 <xs:annotation>
239 <xs:documentation xml:lang="en-us">If set to true, then either
240 the distribution or one of its packages has a user extensions
241 section that modified the tools_def.txt file.
242 </xs:documentation>
243 </xs:annotation>
244 </xs:attribute>
245 <xs:attribute name="ProvidesTools" type="xs:boolean" default="false"
246 use="optional">
247 <xs:annotation>
248 <xs:documentation xml:lang="en-us"> This is used to identify a
249 distribution that provides tools that may or may not be
250 installed in a WORKSPACE. </xs:documentation>
251 </xs:annotation>
252 </xs:attribute>
253 <xs:attribute name="ProvidesMiscellaneousFiles" type="xs:boolean"
254 default="false" use="optional">
255 <xs:annotation>
256 <xs:documentation xml:lang="en-us"> This is used to identify a
257 distribution that provides miscellaneous files that must be
258 installed in a WORKSPACE. </xs:documentation>
259 </xs:annotation>
260 </xs:attribute>
261 <xs:attribute name="UnknownUserExtensions" type="xs:boolean"
262 default="false" use="optional">
263 <xs:annotation>
264 <xs:documentation xml:lang="en-us"> This is used to identify a
265 distribution that has a UserExtensions section at the
266 Distribution, Package or Module level that uses an Identifier
267 other than BuildOptions, ToolsDef or DistributionPackage.
268 </xs:documentation>
269 </xs:annotation>
270 </xs:attribute>
271 </xs:complexType>
272 </xs:element>
273 <xs:element name="PackageList" minOccurs="0" maxOccurs="1">
274 <xs:annotation>
275 <xs:documentation xml:lang="en-us"> This section tracks individual
276 packages (collections of related items.) Each package listed in
277 this section must have a DEC file associated with it.
278 </xs:documentation>
279 </xs:annotation>
280 <xs:complexType>
281 <xs:sequence>
282 <xs:element name="Package" minOccurs="1" maxOccurs="unbounded">
283 <xs:complexType>
284 <xs:sequence>
285 <xs:element name="Name" minOccurs="1" maxOccurs="1">
286 <xs:annotation>
287 <xs:documentation xml:lang="en-us"> The User Interface
288 Name of the package. </xs:documentation>
289 </xs:annotation>
290 <xs:complexType>
291 <xs:simpleContent>
292 <xs:extension base="xs:normalizedString">
293 <xs:attribute name="BaseName" type="xs:NCName"
294 use="required">
295 <xs:annotation>
296 <xs:documentation xml:lang="en-us"> The BaseName
297 is used to create files and folders during a
298 build, and is used by packaging tools as a
299 keyword to create the DEC file.
300 </xs:documentation>
301 </xs:annotation>
302 </xs:attribute>
303 </xs:extension>
304 </xs:simpleContent>
305 </xs:complexType>
306 </xs:element>
307 <xs:element ref="GUID" minOccurs="1" maxOccurs="1">
308 <xs:annotation>
309 <xs:documentation xml:lang="en-us"> This is the GUID of
310 the package, backward compatible versions of a package
311 can use the same GUID, however the version attribute
312 must be changed (incrementally.) Non-backward
313 compatible versions of a package must also provide a
314 new GUID, while resetting the version attribute is
315 optional. </xs:documentation>
316 </xs:annotation>
317 </xs:element>
318 <xs:element name="InstalledFolder" type="xs:anyURI"
319 minOccurs="1" maxOccurs="1">
320 <xs:annotation>
321 <xs:documentation xml:lang="en-us"> This is used to
322 track the actual installation location, relative to
323 the WORKSPACE. During an installation, the user may be
324 presented with an option to relocate package content
325 from the ZIP portion of the archive into a different
326 location. </xs:documentation>
327 <xs:documentation> Any installation tools must modify
328 this value if the location is different from the
329 default location. </xs:documentation>
330 <xs:documentation> Any removal tools must check this
331 value to locate correctly, the items that will be
332 removed. </xs:documentation>
333 </xs:annotation>
334 </xs:element>
335 <xs:element name="DecFilename" minOccurs="1" maxOccurs="1"
336 type="xs:anyURI">
337 <xs:annotation>
338 <xs:documentation xml:lang="en-us"> This is the filename
339 of the package declaration (DEC) filename created
340 during installation in the InstalledFolder listed
341 above. </xs:documentation>
342 </xs:annotation>
343 </xs:element>
344 <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">
345 <xs:annotation>
346 <xs:documentation xml:lang="en-us"> This section is used
347 to track the actual installation location, relative to
348 the WORKSPACE. Every module that is part of this
349 package must be listed here. During an installation,
350 the user may be presented with an option to relocate
351 module content from the ZIP portion of the archive
352 into a different location, the installation tools must
353 modify this value if the location is different from
354 the default location. Any removal tools must check
355 this value to locate correctly, the items that will be
356 removed. </xs:documentation>
357 <xs:documentation xml:lang="en-us"> The name of any INF
358 files that were created during the installation of a
359 distribution must also be listed in this section.
360 </xs:documentation>
361 </xs:annotation>
362 </xs:element>
363 </xs:sequence>
364 </xs:complexType>
365 </xs:element>
366 </xs:sequence>
367 </xs:complexType>
368 </xs:element>
369 <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">
370 <xs:annotation>
371 <xs:documentation xml:lang="en-us"> This section is used to record
372 distribution packages that contain modules that are not part of a
373 package. Modules that are part of packages are listed under the
374 Package element of the PackageList section. </xs:documentation>
375 <xs:documentation xml:lang="en-us"> Module only distribution will
376 typically be for binary only modules, like the enhanced FAT
377 driver. </xs:documentation>
378 </xs:annotation>
379 </xs:element>
380 </xs:sequence>
381 </xs:complexType>
382 </xs:element>
383
384 <xs:element name="GUID">
385 <xs:complexType>
386 <xs:simpleContent>
387 <xs:extension base="RegistryFormatGuid">
388 <xs:attribute name="Version" type="xs:decimal" use="required" />
389 </xs:extension>
390 </xs:simpleContent>
391 </xs:complexType>
392 </xs:element>
393
394 <!-- Simple Types that further restrict allowed content. -->
395
396 <xs:simpleType name="RegistryFormatGuid">
397 <xs:annotation>
398 <xs:documentation xml:lang="en-us"> A Registry format GUID must contain
399 five different Hexadecimal character sets that are separated by a dash
400 (-) character. </xs:documentation>
401 </xs:annotation>
402 <xs:restriction base="xs:normalizedString">
403 <xs:pattern
404 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*"
405 />
406 </xs:restriction>
407 </xs:simpleType>
408
409 </xs:schema>