Added an Optional PcdUsage to PcdCoded element - however, this will have to change...
[mirror_edk2.git] / Tools / XMLSchema / FrameworkDataAttributes.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: FrameworkDataAttributes.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 Attribute. Only attributeGroups are specified in this file. </xs:documentation>
17 </xs:annotation>
18 <xs:include schemaLocation="NamingConvention.xsd"/>
19 <xs:include schemaLocation="FrameworkDataTypes.xsd"/>
20 <xs:include schemaLocation="FrameworkPlatformDataTypes.xsd"/>
21 <!-- Fix Name data type from xs:string -->
22 <xs:attributeGroup name="BlockAttributes">
23 <xs:attribute name="Name" type="BlockNameType" use="required"/>
24 <xs:attribute name="Size" type="HexAddressType" use="required"/>
25 <xs:attribute name="Flags" type="HexAddressType" use="optional"/>
26 </xs:attributeGroup>
27 <xs:attributeGroup name="BootModeAttributes">
28 <xs:attribute name="BootModeName" type="BootModeNames" use="required"/>
29 <xs:attribute name="Usage" type="BootModeUsage" use="required"/>
30 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
31 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
32 </xs:attributeGroup>
33 <xs:attributeGroup name="DataHubAttributes">
34 <xs:attribute name="Usage" type="DataHubUsage" use="required"/>
35 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
36 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
37 </xs:attributeGroup>
38 <xs:attributeGroup name="EventAttributes">
39 <xs:attribute name="Usage" type="EventUsage" use="required"/>
40 <xs:attribute name="EventGuidCName" type="C_NameType" use="optional"/>
41 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
42 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
43 </xs:attributeGroup>
44 <xs:attributeGroup name="ExternAttributes">
45 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
46 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
47 </xs:attributeGroup>
48 <xs:attributeGroup name="FfsAttributes">
49 <xs:attribute name="FfsFormatKeyword" type="KeywordType" use="required"/>
50 <xs:attribute name="FfsFileType" type="EfiFfsFileTypes" use="optional"/>
51 <xs:attribute name="FfsAttribTailPresent" type="xs:boolean" use="optional"/>
52 <xs:attribute name="FfsAttribRecovery" type="xs:boolean" use="optional" default="false"/>
53 <xs:attribute name="FfsAttribDataAlignment" type="FfsDataAlignmentType" use="optional"/>
54 <xs:attribute name="FfsAttribChecksumRequired" type="xs:boolean" use="optional" default="true"/>
55 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
56 </xs:attributeGroup>
57 <xs:attributeGroup name="FilenameAttributes">
58 <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>
59 <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>
60 <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>
61 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
62 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
63 </xs:attributeGroup>
64 <xs:attributeGroup name="FlashDeviceImageAttributes">
65 <xs:attribute name="Name" type="xs:string" use="required"/>
66 </xs:attributeGroup>
67 <xs:attributeGroup name="FlashDeviceImageFileAttributes">
68 <xs:attribute name="Name" type="xs:string" use="required"/>
69 <xs:attribute name="Region" type="xs:string" use="required"/>
70 <xs:attribute name="SubRegion" type="xs:string" use="optional"/>
71 <xs:attribute name="Optional" type="xs:boolean" use="optional"/>
72 </xs:attributeGroup>
73 <xs:attributeGroup name="FlashDeviceInfoAttributes">
74 <xs:attribute name="Name" type="xs:string" use="required"/>
75 <xs:attribute name="Size" type="HexAddressType" use="required"/>
76 <xs:attribute name="BaseAddress" type="HexAddressType" use="required"/>
77 <xs:attribute name="ErasePolarity" type="Polarity" use="required"/>
78 </xs:attributeGroup>
79 <xs:attributeGroup name="FvRegionNameAttributes">
80 <xs:attribute name="FvBaseAddressPcdCName" type="C_NameType" use="required"/>
81 <xs:attribute name="FvRegionSizePcdCName" type="C_NameType" use="required"/>
82 <xs:attribute name="FvRegionAlignmentPcdCName" type="C_NameType" use="optional"/>
83 <xs:attribute name="FvPcdTokenSpaceGuid" type="GuidType" use="optional"/>
84 <xs:attribute name="Alignment" type="xs:positiveInteger" use="optional"/>
85 </xs:attributeGroup>
86 <xs:attributeGroup name="GuidAttributes">
87 <xs:attribute name="Usage" type="GuidUsage" use="required"/>
88 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
89 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
90 </xs:attributeGroup>
91 <xs:attributeGroup name="GuidDeclarationAttributes">
92 <xs:attribute name="Name" type="UiNameType" use="required"/>
93 <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>
94 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
95 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
96 </xs:attributeGroup>
97 <xs:attributeGroup name="HiiPackageAttributes">
98 <xs:attribute name="Usage" type="HiiPackageUsage" use="required"/>
99 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
100 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
101 </xs:attributeGroup>
102 <xs:attributeGroup name="HobAttributes">
103 <xs:attribute name="Usage" type="HobUsage" use="required"/>
104 <xs:attribute name="HobGuidCName" type="C_NameType" use="optional"/>
105 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
106 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
107 </xs:attributeGroup>
108 <xs:attributeGroup name="IncludeHeaderAttributes">
109 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
110 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
111 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
112 </xs:attributeGroup>
113 <xs:attributeGroup name="IndustryStdHeaderAttributes">
114 <xs:attribute name="Name" type="KeywordType" use="required"/>
115 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
116 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
117 </xs:attributeGroup>
118 <xs:attributeGroup name="LibraryAttributes">
119 <!-- LibraryAttributes is used for Libraries / Library elements in FPD files -->
120 <xs:attribute name="ModuleGuid" type="GuidType" use="required"/>
121 <xs:attribute name="ModuleVersion" type="VersionDataType" use="optional"/>
122 <xs:attribute name="PackageGuid" type="GuidType" use="required"/>
123 <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>
124 </xs:attributeGroup>
125 <xs:attributeGroup name="LibraryClassAttributes">
126 <xs:attribute name="Usage" type="LibraryUsage" use="required"/>
127 <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>
128 <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>
129 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
130 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
131 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
132 </xs:attributeGroup>
133 <xs:attributeGroup name="LibraryClassDeclarationAttributes">
134 <xs:attribute name="Name" type="KeywordType" use="required"/>
135 <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>
136 <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>
137 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
138 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
139 </xs:attributeGroup>
140 <xs:attributeGroup name="MsaGuidAttributes">
141 <xs:attribute name="Usage" type="GuidUsage" use="optional"/>
142 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
143 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
144 </xs:attributeGroup>
145 <xs:attributeGroup name="ModuleNameAttributes">
146 <xs:attribute name="ModuleGuid" type="GuidType" use="required"/>
147 <xs:attribute name="ModuleName" type="UiNameType" use="optional"/>
148 <xs:attribute name="ModuleVersion" type="VersionDataType" use="optional"/>
149 </xs:attributeGroup>
150 <xs:attributeGroup name="MsaAttributes">
151 <xs:attribute name="PackageGuid" type="GuidType" use="required"/>
152 <xs:attribute name="ModuleGuid" type="GuidType" use="required"/>
153 <xs:attribute name="ModuleVersion" type="VersionDataType" use="optional"/>
154 <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>
155 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
156 </xs:attributeGroup>
157 <xs:attributeGroup name="OptionAttributes">
158 <xs:attribute name="BuildTargets" type="BuildTargetList" use="optional"/>
159 <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>
160 <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>
161 <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>
162 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
163 </xs:attributeGroup>
164 <xs:attributeGroup name="PackageHeaderAttributes">
165 <xs:attribute name="ModuleType" type="ModuleTypeDef" use="required"/>
166 </xs:attributeGroup>
167 <xs:attributeGroup name="PackageAttributes">
168 <!-- Used with the MSA File, PackageDependencies.Package -->
169 <xs:attribute name="PackageGuid" type="GuidType" use="required"/>
170 <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>
171 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
172 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
173 </xs:attributeGroup>
174 <xs:attributeGroup name="PackageNameAttributes">
175 <!--Used with the FrameworkDatabase PackageList.Packagename -->
176 <xs:attribute name="PackageGuid" type="GuidType" use="required"/>
177 <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>
178 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
179 </xs:attributeGroup>
180 <xs:attributeGroup name="DynamicBuildPcdAttributes">
181 <xs:annotation>
182 <xs:documentation xml:lang="en">These attributes are for the Pcds listed in PcdData, PcdEntry and/or PcdBuildData entries.</xs:documentation>
183 </xs:annotation>
184 <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>
185 </xs:attributeGroup>
186 <xs:attributeGroup name="PcdBuildDefinitionAttributes">
187 <xs:attribute name="ItemType" type="PcdItemTypes" use="required"/>
188 </xs:attributeGroup>
189 <xs:attributeGroup name="PcdCodedAttributes">
190 <!-- We need to modify ALL the MSA files that have PcdCoded sections to
191 set the PcdUsage. Once we modify all the MSA files and we modify the
192 wizard and the build tools, we need to make this required. -->
193 <xs:attribute name="Usage" type="PcdUsage" use="optional"/>
194 <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>
195 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
196 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
197 </xs:attributeGroup>
198 <xs:attributeGroup name="PcdDeclarationAttributes">
199 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
200 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
201 </xs:attributeGroup>
202 <xs:attributeGroup name="PlatformAttributes">
203 <xs:attribute name="PlatformGuid" type="GuidType" use="required"/>
204 <xs:attribute name="PlatformVersion" type="VersionDataType" use="required"/>
205 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
206 </xs:attributeGroup>
207 <xs:attributeGroup name="PpiDeclarationAttributes">
208 <xs:attribute name="Name" type="UiNameType" use="required"/>
209 <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>
210 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
211 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
212 </xs:attributeGroup>
213 <xs:attributeGroup name="PpiAttributes">
214 <xs:attribute name="Usage" type="PpiUsage" use="required"/>
215 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
216 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
217 </xs:attributeGroup>
218 <xs:attributeGroup name="PpiNotifyAttributes">
219 <xs:attribute name="Usage" type="PpiNotifyUsage" use="required"/>
220 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
221 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
222 </xs:attributeGroup>
223 <xs:attributeGroup name="ProcessStepAttributes">
224 <xs:annotation>
225 <xs:documentation xml:lang="en">Attributes are either compressable and/or sequence order binding</xs:documentation>
226 </xs:annotation>
227 <xs:attribute name="BindingOrder" type="xs:int" use="optional"/>
228 <xs:attribute name="SectionType" type="EfiSectionType" use="optional"/>
229 </xs:attributeGroup>
230 <xs:attributeGroup name="ProtocolAttributes">
231 <xs:attribute name="Usage" type="ProtocolUsage" use="required"/>
232 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
233 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
234 </xs:attributeGroup>
235 <xs:attributeGroup name="ProtocolDeclarationAttributes">
236 <xs:attribute name="Name" type="UiNameType" use="required"/>
237 <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>
238 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
239 <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>
240 </xs:attributeGroup>
241 <xs:attributeGroup name="ProtocolNotifyAttributes">
242 <xs:attribute name="Usage" type="ProtocolNotifyUsage" use="required"/>
243 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
244 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
245 </xs:attributeGroup>
246 <xs:attributeGroup name="RawDataAttributes">
247 <xs:attribute name="Name" type="xs:string" use="required"/>
248 <xs:attribute name="Region" type="xs:string" use="required"/>
249 <xs:attribute name="SubRegion" type="xs:string" use="required"/>
250 </xs:attributeGroup>
251 <xs:attributeGroup name="RegionAttributes">
252 <xs:attribute name="Name" type="xs:string" use="required"/>
253 <xs:attribute name="Size" type="HexAddressType" use="required"/>
254 <xs:attribute name="Flags" type="HexAddressType" use="optional"/>
255 <xs:attribute name="Attributes" type="xs:string" use="required"/>
256 <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>
257 <xs:attribute name="Alignment" type="HexAddressType" use="optional"/>
258 </xs:attributeGroup>
259 <xs:attributeGroup name="SectionsAttributes">
260 <xs:annotation>
261 <xs:documentation xml:lang="en">Attributes for Sections, EncapsulationTag and EncapsulationType</xs:documentation>
262 </xs:annotation>
263 <xs:attribute name="BindingOrder" type="xs:nonNegativeInteger" use="optional"/>
264 <xs:attribute name="Compressible" type="xs:boolean" default="true" use="optional"/>
265 <xs:attribute name="SectionType" type="EfiSectionType" use="optional"/>
266 <xs:attribute name="EncapsulationType" type="xs:normalizedString" use="optional"/>
267 <xs:attribute name="EncapsulationTag" type="xs:string" use="optional"/>
268 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
269 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
270 </xs:attributeGroup>
271 <xs:attributeGroup name="SubRegionAttributes">
272 <xs:attribute name="CreateHob" type="xs:boolean" use="required"/>
273 <xs:attribute name="Name" type="xs:string" use="required"/>
274 <xs:attribute name="Size" type="HexAddressType" use="required"/>
275 <xs:attribute name="Attributes" type="xs:string" use="required"/>
276 <xs:attribute name="AreaType" type="EfiFvAreaType" use="required"/>
277 <xs:attribute name="NameGuid" type="xs:string" use="required"/>
278 <xs:attribute name="AreaTypeGuid" type="xs:string" use="optional"/>
279 <xs:attribute name="FileSystemGuid" type="xs:string" use="optional"/>
280 </xs:attributeGroup>
281 <xs:attributeGroup name="SystemTableAttributes">
282 <xs:attribute name="Usage" type="SystemTableUsage" use="required"/>
283 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
284 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
285 </xs:attributeGroup>
286 <xs:attributeGroup name="UrlAttribute">
287 <xs:attribute name="Url" type="xs:anyURI"/>
288 </xs:attributeGroup>
289 <xs:attributeGroup name="VariableAttributes">
290 <xs:attribute name="Usage" type="VariableUsage" use="required"/>
291 <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>
292 <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>
293 </xs:attributeGroup>
294 </xs:schema>