]> git.proxmox.com Git - mirror_edk2.git/blob - Tools/XMLSchema/FrameworkPlatformDataElements.xsd
Fixed EDKT147, which will fail the single module build when a module is just defined...
[mirror_edk2.git] / Tools / XMLSchema / FrameworkPlatformDataElements.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2006/Edk2.0" targetNamespace="http://www.TianoCore.org/2006/Edk2.0">
3 <!--
4 Filename: FrameworkPlatformDataElements.xsd
5
6 Copyright (c) 2006, Intel Corp.
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which may be found at 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:annotation>
16 <xs:documentation xml:lang="en"> This schema defines EFI and Framework Platform Data Elements that are specific to platform creation.</xs:documentation>
17 </xs:annotation>
18 <xs:include schemaLocation="NamingConvention.xsd"/>
19 <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>
20 <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
21 <xs:include schemaLocation="FrameworkDataElements.xsd"/>
22 <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>
23 <xs:element name="DataArray">
24 <xs:complexType>
25 <xs:simpleContent>
26 <xs:extension base="HexByteArrayType">
27 <xs:attribute name="Name" type="xs:normalizedString" use="required"/>
28 </xs:extension>
29 </xs:simpleContent>
30 </xs:complexType>
31 </xs:element>
32 <xs:element name="DataId">
33 <xs:complexType>
34 <xs:simpleContent>
35 <xs:extension base="xs:NCName">
36 <xs:attribute name="Seq" type="xs:nonNegativeInteger" use="required"/>
37 <xs:attribute name="SubRegion" type="UCNameType" use="required"/>
38 <xs:attribute name="DataSource" type="xs:normalizedString" use="required"/>
39 <xs:attribute name="SourceType" type="xs:NCName" use="required"/>
40 <xs:attribute name="DataSize" type="HexAddressType" use="optional"/>
41 <xs:attribute name="Alignment" type="xs:positiveInteger" use="optional"/>
42 </xs:extension>
43 </xs:simpleContent>
44 </xs:complexType>
45 </xs:element>
46 <xs:element name="DataRegions">
47 <xs:complexType>
48 <xs:sequence>
49 <xs:element minOccurs="1" maxOccurs="unbounded" name="FvDataRegion">
50 <xs:complexType>
51 <xs:sequence>
52 <xs:element minOccurs="1" maxOccurs="unbounded" ref="DataId"/>
53 <xs:element minOccurs="0" maxOccurs="unbounded" ref="DataArray"/>
54 </xs:sequence>
55 <xs:attribute name="Name" type="UCNameType" use="required"/>
56 </xs:complexType>
57 </xs:element>
58 </xs:sequence>
59 </xs:complexType>
60 </xs:element>
61 <xs:element name="Flash">
62 <xs:complexType>
63 <xs:sequence>
64 <xs:element minOccurs="0" maxOccurs="1" ref="FlashDefinitionFile"/>
65 <xs:element minOccurs="0" maxOccurs="1" ref="FvImages"/>
66 </xs:sequence>
67 <xs:attribute name="MicrocodeFile" type="PathAndFilename" use="optional"/>
68 </xs:complexType>
69 </xs:element>
70 <!-- Valid Flash Definition Files that can be used for a platform The UiName and Perferred tags are optional, for use with Wizards.-->
71 <xs:element name="FlashDefinitionFile">
72 <xs:complexType>
73 <xs:simpleContent>
74 <xs:extension base="PathAndFilename">
75 <!-- Id will be required eventually. -->
76 <xs:attribute name="Id" type="KeywordType" use="optional"/>
77 <xs:attribute name="UiName" type="UiNameType" use="optional"/>
78 <xs:attribute name="Preferred" type="xs:boolean" use="optional" default="false"/>
79 </xs:extension>
80 </xs:simpleContent>
81 </xs:complexType>
82 </xs:element>
83 <!-- For Future Use! -->
84 <!-- This describes the physical layout of the hardware device, used by tools to verify different regions fit within a given number of blocks. -->
85 <!-- An EFI Region MUST start on a block boundary. A region may span multiple blocks. -->
86 <xs:element name="FlashDevice">
87 <xs:complexType>
88 <xs:sequence>
89 <xs:element name="PartNumber" type="xs:NCName"/>
90 <xs:choice>
91 <xs:sequence minOccurs="0">
92 <!-- Use this sequence for a part with fixed block sizes -->
93 <xs:element minOccurs="1" maxOccurs="1" name="NumBlocks" type="xs:positiveInteger"/>
94 <xs:element minOccurs="1" maxOccurs="1" name="BlockSize" type="HexAddressType"/>
95 </xs:sequence>
96 <xs:sequence minOccurs="0">
97 <!-- Use this sequence for a part with variable block sizes -->
98 <xs:element maxOccurs="unbounded" name="VariableBlockSize">
99 <xs:complexType>
100 <xs:simpleContent>
101 <xs:extension base="HexAddressType">
102 <xs:attribute name="BlockNum" type="xs:nonNegativeInteger" use="required"/>
103 </xs:extension>
104 </xs:simpleContent>
105 </xs:complexType>
106 </xs:element>
107 </xs:sequence>
108 </xs:choice>
109 </xs:sequence>
110 </xs:complexType>
111 </xs:element>
112 <xs:element name="FlashDeviceDefinitions">
113 <xs:complexType>
114 <xs:annotation>
115 <xs:documentation xml:lang="en">We allow specifying the FlashMap filename</xs:documentation>
116 </xs:annotation>
117 <xs:sequence>
118 <xs:element minOccurs="1" maxOccurs="unbounded" ref="FlashDefinitionFile"/>
119 <xs:element minOccurs="1" maxOccurs="1" ref="FvImages"/>
120 <!-- DataRegions is for Future Use! -->
121 <xs:element minOccurs="0" maxOccurs="1" ref="DataRegions"/>
122 <xs:element minOccurs="1" maxOccurs="unbounded" ref="FvImageBindingSequence"/>
123 </xs:sequence>
124 </xs:complexType>
125 </xs:element>
126 <xs:element name="FrameworkModules">
127 <xs:annotation>
128 <xs:documentation xml:lang="en">This is used in a Framework Platform Description (FPD) file</xs:documentation>
129 </xs:annotation>
130 <xs:complexType>
131 <xs:sequence>
132 <xs:element minOccurs="1" maxOccurs="unbounded" ref="ModuleSA"/>
133 </xs:sequence>
134 </xs:complexType>
135 </xs:element>
136 <xs:element name="FvAttribute">
137 <xs:complexType>
138 <xs:attribute name="Name" type="xs:NCName" use="required"/>
139 <xs:attribute name="Value" type="xs:normalizedString" use="required"/>
140 </xs:complexType>
141 </xs:element>
142 <xs:element name="FwImage">
143 <xs:complexType>
144 <xs:sequence>
145 <xs:element minOccurs="1" maxOccurs="1" ref="FvRegionName"/>
146 <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvOption"/>
147 <xs:element minOccurs="0" maxOccurs="unbounded" ref="FvAttribute"/>
148 </xs:sequence>
149 </xs:complexType>
150 </xs:element>
151 <xs:element name="FvImageBindingSequence">
152 <xs:complexType>
153 <xs:simpleContent>
154 <xs:extension base="ValidRegionNameListType">
155 <xs:attribute name="PartId" type="KeywordType" use="required"/>
156 <xs:attribute name="OutputFile" type="PathAndFilename" use="required"/>
157 </xs:extension>
158 </xs:simpleContent>
159 </xs:complexType>
160 </xs:element>
161 <xs:element name="FvImages">
162 <xs:annotation>
163 <xs:documentation xml:lang="en">This section allows the user to define specific information regarding the FvImage</xs:documentation>
164 </xs:annotation>
165 <xs:complexType>
166 <xs:choice>
167 <xs:sequence minOccurs="0">
168 <!-- This is the current style -->
169 <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">
170 <xs:complexType>
171 <xs:attribute name="Name" type="xs:string" use="required"/>
172 <xs:attribute name="Value" type="xs:string" use="required"/>
173 </xs:complexType>
174 </xs:element>
175 <xs:choice>
176 <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImage">
177 <xs:complexType>
178 <xs:sequence>
179 <xs:element minOccurs="1" maxOccurs="unbounded" name="FvImageNames" type="xs:NCName"/>
180 <xs:element minOccurs="0" maxOccurs="1" name="FvImageOptions">
181 <xs:complexType>
182 <xs:sequence>
183 <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">
184 <xs:complexType>
185 <xs:attribute name="Name" type="xs:string" use="required"/>
186 <xs:attribute name="Value" type="xs:string" use="required"/>
187 </xs:complexType>
188 </xs:element>
189 </xs:sequence>
190 </xs:complexType>
191 </xs:element>
192 </xs:sequence>
193 <xs:attribute name="Type" type="FvImageTypes" use="optional"/>
194 </xs:complexType>
195 </xs:element>
196 </xs:choice>
197 <xs:element minOccurs="0" maxOccurs="unbounded" name="FvImageName">
198 <xs:complexType>
199 <xs:sequence>
200 <xs:element minOccurs="1" maxOccurs="1" name="FvImageOptions">
201 <xs:complexType>
202 <xs:sequence>
203 <xs:element minOccurs="0" maxOccurs="unbounded" name="NameValue">
204 <xs:complexType>
205 <xs:attribute name="Name" type="xs:string" use="required"/>
206 <xs:attribute name="Value" type="xs:string" use="required"/>
207 </xs:complexType>
208 </xs:element>
209 </xs:sequence>
210 </xs:complexType>
211 </xs:element>
212 </xs:sequence>
213 <xs:attribute name="Name" type="FvRegionTypes" use="required"/>
214 </xs:complexType>
215 </xs:element>
216 </xs:sequence>
217 </xs:choice>
218 </xs:complexType>
219 </xs:element>
220 <xs:element name="FvRegionName">
221 <xs:complexType>
222 <xs:simpleContent>
223 <xs:extension base="KeywordType">
224 <xs:attributeGroup ref="FvRegionNameAttributes"/>
225 </xs:extension>
226 </xs:simpleContent>
227 </xs:complexType>
228 </xs:element>
229 <xs:element name="ModuleSA">
230 <xs:annotation>
231 <xs:documentation xml:lang="en">This element is used to specify information in the FPD ModuleSA section.</xs:documentation>
232 </xs:annotation>
233 <xs:complexType>
234 <xs:sequence>
235 <xs:element minOccurs="0" maxOccurs="1" ref="Libraries"/>
236 <!-- Only specification is allow here. We need to let this be an addtion OR, if the WORD portion MATCHES, this entry takes precedence.</xs:documentation -->
237 <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>
238 <xs:element minOccurs="0" maxOccurs="1" ref="PcdBuildDefinition"/>
239 <xs:element minOccurs="0" maxOccurs="1" ref="ModuleSaBuildOptions"/>
240 <!-- The following BuildOptions Sections is for Legacy Ffs -->
241 <xs:element minOccurs="0" maxOccurs="1" name="BuildOptions">
242 <xs:complexType>
243 <xs:sequence>
244 <xs:element minOccurs="0" maxOccurs="1" ref="UserDefinedAntTasks"/>
245 <xs:element minOccurs="0" maxOccurs="1" name="ImageEntryPoint" type="C_NameType"/>
246 <xs:element minOccurs="0" maxOccurs="1" name="OutputDirectory">
247 <xs:complexType>
248 <xs:simpleContent>
249 <xs:extension base="xs:anyURI">
250 <xs:attribute default="UNIFIED" name="IntermediateDirectories" use="optional">
251 <xs:simpleType>
252 <xs:restriction base="UCNameType">
253 <xs:enumeration value="MODULE"/>
254 <xs:enumeration value="UNIFIED"/>
255 </xs:restriction>
256 </xs:simpleType>
257 </xs:attribute>
258 </xs:extension>
259 </xs:simpleContent>
260 </xs:complexType>
261 </xs:element>
262 <xs:element minOccurs="0" maxOccurs="1" name="Ffs">
263 <xs:complexType>
264 <xs:sequence>
265 <xs:element minOccurs="0" maxOccurs="1" name="Attribute">
266 <xs:complexType>
267 <xs:sequence>
268 <xs:element minOccurs="1" maxOccurs="1" name="Name" type="C_NameType"/>
269 <xs:element minOccurs="1" maxOccurs="1" name="Value" type="C_NameType"/>
270 </xs:sequence>
271 </xs:complexType>
272 </xs:element>
273 <xs:element minOccurs="0" maxOccurs="1" name="Sections">
274 <xs:complexType>
275 <xs:sequence minOccurs="1">
276 <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
277 <xs:complexType>
278 <xs:sequence>
279 <xs:element ref=" Filenames " minOccurs="0"/>
280 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
281 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
282 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
283 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
284 </xs:sequence>
285 <xs:attributeGroup ref=" SectionsAttributes "/>
286 </xs:complexType>
287 </xs:element>
288 <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">
289 <xs:complexType>
290 <xs:sequence minOccurs="1" maxOccurs="unbounded">
291 <xs:element name="Section">
292 <xs:complexType>
293 <xs:sequence>
294 <xs:element ref=" Filenames " minOccurs="0"/>
295 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
296 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
297 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
298 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
299 </xs:sequence>
300 <xs:attributeGroup ref="SectionsAttributes"/>
301 </xs:complexType>
302 </xs:element>
303 </xs:sequence>
304 <xs:attributeGroup ref=" SectionsAttributes "/>
305 </xs:complexType>
306 </xs:element>
307 </xs:sequence>
308 <xs:attributeGroup ref=" SectionsAttributes "/>
309 </xs:complexType>
310 </xs:element>
311 </xs:sequence>
312 </xs:complexType>
313 </xs:element>
314 <xs:element name="Sections">
315 <xs:complexType>
316 <xs:sequence minOccurs="1">
317 <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
318 <xs:complexType>
319 <xs:sequence>
320 <xs:element ref=" Filenames " minOccurs="0"/>
321 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
322 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
323 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
324 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
325 </xs:sequence>
326 <xs:attributeGroup ref=" SectionsAttributes "/>
327 </xs:complexType>
328 </xs:element>
329 <xs:element name="Sections" minOccurs="0" maxOccurs="unbounded">
330 <xs:complexType>
331 <xs:sequence minOccurs="1" maxOccurs="unbounded">
332 <xs:element name="Section">
333 <xs:complexType>
334 <xs:sequence>
335 <xs:element ref=" Filenames " minOccurs="0"/>
336 <xs:element name="Args" type=" ArgsType " minOccurs="0"/>
337 <xs:element name="OutFile" type=" FileNameConvention " minOccurs="0"/>
338 <xs:element name="OutputFileExtension" type=" xs:string " minOccurs="0"/>
339 <xs:element name="ToolName" type=" ToolType " minOccurs="0"/>
340 </xs:sequence>
341 <xs:attributeGroup ref=" SectionsAttributes "/>
342 </xs:complexType>
343 </xs:element>
344 </xs:sequence>
345 <xs:attributeGroup ref=" SectionsAttributes "/>
346 </xs:complexType>
347 </xs:element>
348 </xs:sequence>
349 <xs:attributeGroup ref=" SectionsAttributes "/>
350 </xs:complexType>
351 </xs:element>
352 <xs:element name="Options">
353 <xs:complexType>
354 <xs:sequence>
355 <xs:element name=" Option " minOccurs="1" maxOccurs="unbounded">
356 <xs:complexType>
357 <xs:simpleContent>
358 <xs:extension base=" xs:normalizedString ">
359 <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>
360 <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>
361 <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>
362 <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>
363 <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>
364 <xs:attribute name="Platform" type=" UiNameType " use="optional"/>
365 </xs:extension>
366 </xs:simpleContent>
367 </xs:complexType>
368 </xs:element>
369 </xs:sequence>
370 </xs:complexType>
371 </xs:element>
372 </xs:sequence>
373 <!-- Do not use ToolChain - it is a legacy value -->
374 <xs:attribute name="ToolChain" type="ToolChains" use="optional"/>
375 <xs:attribute name="BuildTargets" type=" BuildTargetList " use="optional"/>
376 <xs:attribute name="ToolChainFamily" type=" ToolsNameConvention " use="optional"/>
377 <xs:attribute name="TagName" type=" ToolsNameConvention " use="optional"/>
378 <xs:attribute name="ToolCommand" type=" ToolsNameConvention " use="optional"/>
379 <xs:attribute name="SupArchList" type=" ArchListType " use="optional"/>
380 </xs:complexType>
381 </xs:element>
382 <!-- The following Externs Section is for Legacy Ffs -->
383 <xs:element minOccurs="0" maxOccurs="1" name="Externs">
384 <xs:complexType>
385 <xs:sequence minOccurs="1">
386 <xs:element name="PcdIsDriver" type=" PcdDriverTypes " minOccurs="0" maxOccurs="1"/>
387 <xs:element name="Specification" type=" Sentence " minOccurs="0" maxOccurs="unbounded"/>
388 <xs:element name="Extern" minOccurs="0" maxOccurs="unbounded">
389 <xs:complexType>
390 <xs:choice minOccurs="1">
391 <xs:sequence minOccurs="0" maxOccurs="1">
392 <xs:element name=" ModuleEntryPoint " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
393 <xs:element name=" ModuleUnloadImage " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
394 </xs:sequence>
395 <xs:sequence minOccurs="0" maxOccurs="1">
396 <xs:element name=" Constructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>
397 <xs:element name=" Destructor " type=" C_NameType " minOccurs="0" maxOccurs="1"/>
398 </xs:sequence>
399 <xs:sequence minOccurs="0" maxOccurs="1">
400 <xs:element name=" DriverBinding " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
401 <xs:element name=" ComponentName " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
402 <xs:element name=" DriverConfig " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
403 <xs:element name=" DriverDiag " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
404 </xs:sequence>
405 <xs:sequence minOccurs="0" maxOccurs="1">
406 <xs:element name=" SetVirtualAddressMapCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
407 <xs:element name=" ExitBootServicesCallBack " type=" C_NameType " minOccurs="0" maxOccurs="unbounded"/>
408 </xs:sequence>
409 </xs:choice>
410 <xs:attributeGroup ref=" ExternAttributes "/>
411 </xs:complexType>
412 </xs:element>
413 </xs:sequence>
414 </xs:complexType>
415 </xs:element>
416 </xs:sequence>
417 <xs:attributeGroup ref="MsaAttributes"/>
418 </xs:complexType>
419 </xs:element>
420 <xs:element name="FvOption">
421 <xs:complexType>
422 <xs:attribute name="Name" type="xs:NCName" use="required"/>
423 <xs:attribute name="Value" type="xs:normalizedString" use="required"/>
424 </xs:complexType>
425 </xs:element>
426 <xs:element name="PlatformList">
427 <!-- Valid for DB usage only! -->
428 <xs:annotation>
429 <xs:documentation xml:lang="en">This is used in the FrameworkDatabase file</xs:documentation>
430 </xs:annotation>
431 <xs:complexType>
432 <xs:sequence>
433 <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>
434 </xs:sequence>
435 </xs:complexType>
436 </xs:element>
437 </xs:schema>