blob: a4d354fbd4e0d0f1f66381ebf8a4e7ae8a471c7b [file] [log] [blame]
Joachim Krechcaab3af2020-02-11 09:24:23 +01001<?xml version="1.0" encoding="UTF-8"?>
2<!--
3
4 Copyright (c) 2020 ARM Limited. All rights reserved.
5
6 SPDX-License-Identifier: Apache-2.0
7
8 Licensed under the Apache License, Version 2.0 (the License); you may
9 not use this file except in compliance with the License.
10 You may obtain a copy of the License at
11
12 www.apache.org/licenses/LICENSE-2.0
13
14 Unless required by applicable law or agreed to in writing, software
15 distributed under the License is distributed on an AS IS BASIS, WITHOUT
16 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 See the License for the specific language governing permissions and
18 limitations under the License.
19
Joachim Krech5de94de2020-04-03 11:18:19 +020020 $Date: 03. April 2020
21 $Revision: 0.9.0
Joachim Krechcaab3af2020-02-11 09:24:23 +010022
23 $Project: Schema File for CMSIS Project Description File Format Specification
24
Joachim Krech5de94de2020-04-03 11:18:19 +020025 SchemaVersion=0.9.0
Joachim Krechcaab3af2020-02-11 09:24:23 +010026
Joachim Krech5de94de2020-04-03 11:18:19 +020027 0.9.0: (BETA) Specification of CMSIS Project Format, replacing CPDSC based on PACK.xsd.
28
Joachim Krechcaab3af2020-02-11 09:24:23 +010029-->
30
Joachim Krech5de94de2020-04-03 11:18:19 +020031<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="0.9.0">
Joachim Krechcaab3af2020-02-11 09:24:23 +010032
33 <xs:simpleType name="RestrictedString">
34 <xs:restriction base="xs:string">
35 <xs:pattern value="[\-_A-Za-z0-9]+" />
36 </xs:restriction>
37 </xs:simpleType>
38
39 <xs:simpleType name="SchemaVersionType">
40 <xs:restriction base="xs:string">
41 <xs:pattern value="[0-9]+\.[0-9]+((\.[0-9]+)|())" />
42 </xs:restriction>
43 </xs:simpleType>
44
45 <xs:simpleType name="ComponentVersionType">
46 <xs:restriction base="xs:string">
47 <xs:pattern value="[0-9]+\.[0-9]+((\.[0-9]+)|())((\-[0-9A-Za-z_\-\.]+)|([_A-Za-z][0-9A-Za-z_\-\.]*)|())((\+[\-\._A-Za-z0-9]+)|())" />
48 </xs:restriction>
49 </xs:simpleType>
50
51 <xs:simpleType name="PackVersionType">
52 <xs:restriction base="xs:string">
53 <!-- major . minor . patch [[-]quality] [+build] -->
54 <xs:pattern value="[0-9]+.[0-9]+.[0-9]+((\-[0-9A-Za-z_\-\.]+)|([_A-Za-z][0-9A-Za-z_\-\.]*)|())((\+[\-\._A-Za-z0-9]+)|())" />
55 </xs:restriction>
56 </xs:simpleType>
57
58 <!-- version can contain one or more of alphanumeric characters and symbols '_' '-' '.'
59 Allows specifing a version range: minVersion : maxVersion
60 -->
61 <xs:simpleType name="VersionRangeType">
62 <xs:restriction base="xs:string">
63 <xs:pattern value="[0-9]+.[0-9]+((.[0-9]+)|())((\-[0-9A-Za-z_\-\.]+)|([_A-Za-z][0-9A-Za-z_\-\.]*)|())((\+[\-\._A-Za-z0-9]+)|())((:[0-9]+.[0-9]+((.[0-9]+)|()))|())((\-[0-9A-Za-z_\-\.]+)|([_A-Za-z][0-9A-Za-z_\-\.]*)|())((\+[\-\._A-Za-z0-9]+)|())" />
64 </xs:restriction>
65 </xs:simpleType>
66
67 <!-- Dendian enumeration type -->
68 <xs:simpleType name="DendianEnum">
69 <xs:restriction base="xs:token">
70 <xs:enumeration value="Little-endian" />
71 <xs:enumeration value="Big-endian" />
72 <xs:enumeration value="Configurable" />
73 <xs:enumeration value="*" />
74 </xs:restriction>
75 </xs:simpleType>
76
77 <!-- Dfpu enumeration type -->
78 <xs:simpleType name="DfpuEnum">
79 <xs:restriction base="xs:token">
80 <!-- core has FPU (type of FPU depends on Dcore) -->
81 <xs:enumeration value="FPU" />
82 <xs:enumeration value="1" />
83 <!-- core has no FPU -->
84 <xs:enumeration value="NO_FPU" />
85 <xs:enumeration value="0" />
86 <!-- single precision FPU -->
87 <xs:enumeration value="SP_FPU" />
88 <!-- double precision FPU -->
89 <xs:enumeration value="DP_FPU" />
90 </xs:restriction>
91 </xs:simpleType>
92
93 <!-- Dmpu enumeration type -->
94 <xs:simpleType name="DmpuEnum">
95 <xs:restriction base="xs:token">
96 <xs:enumeration value="MPU" />
97 <xs:enumeration value="NO_MPU" />
98 </xs:restriction>
99 </xs:simpleType>
100
101 <!-- Dtz TrustZone enumeration type -->
102 <xs:simpleType name="DtzEnum">
103 <xs:restriction base="xs:token">
104 <xs:enumeration value="TZ" />
105 <xs:enumeration value="NO_TZ" />
106 </xs:restriction>
107 </xs:simpleType>
108
109 <!-- Dsecure enumeration type -->
110 <xs:simpleType name="DsecureEnum">
111 <xs:restriction base="xs:token">
112 <xs:enumeration value="Secure" />
113 <xs:enumeration value="Non-secure" />
114 <xs:enumeration value="TZ-disabled" />
115 </xs:restriction>
116 </xs:simpleType>
117
118 <!-- Ddsp DSP extensions enumeration type -->
119 <xs:simpleType name="DdspEnum">
120 <xs:restriction base="xs:token">
121 <xs:enumeration value="DSP" />
122 <xs:enumeration value="NO_DSP" />
123 </xs:restriction>
124 </xs:simpleType>
125
126 <!-- Dmve extension enumeration type -->
127 <xs:simpleType name="DmveEnum">
128 <xs:restriction base="xs:token">
129 <xs:enumeration value="NO_MVE"/>
130 <xs:enumeration value="MVE"/>
131 <xs:enumeration value="FP_MVE"/>
132 </xs:restriction>
133 </xs:simpleType>
134
135 <!-- file category type -->
136 <xs:simpleType name="FileCategoryType">
137 <xs:restriction base="xs:token">
138 <xs:enumeration value="doc" />
139 <xs:enumeration value="header" />
140 <xs:enumeration value="library" />
141 <xs:enumeration value="object" />
142 <xs:enumeration value="source" />
143 <xs:enumeration value="sourceC" />
144 <xs:enumeration value="sourceCpp" />
145 <xs:enumeration value="sourceAsm" />
146 <xs:enumeration value="linkerScript" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100147 <xs:enumeration value="utility" />
148 <xs:enumeration value="image" />
149 <xs:enumeration value="other" />
150 <xs:enumeration value="preIncludeGlobal"/>
151 <xs:enumeration value="preIncludeLocal"/>
Joachim Krechcaab3af2020-02-11 09:24:23 +0100152 </xs:restriction>
153 </xs:simpleType>
154
155 <!-- file attribute type -->
156 <xs:simpleType name="FileAttributeType">
157 <xs:restriction base="xs:token">
158 <xs:enumeration value="config" />
159 </xs:restriction>
160 </xs:simpleType>
161
162 <!-- compiler toolchain enumeration -->
163 <xs:simpleType name="CompilerEnumType">
164 <xs:restriction base="xs:token">
165 <xs:enumeration value="GCC" />
166 <xs:enumeration value="AC5" />
167 <xs:enumeration value="AC6" />
168 <xs:enumeration value="IAR" />
169 <xs:enumeration value="Tasking" />
170 <xs:enumeration value="GHS" />
171 <xs:enumeration value="Cosmic" />
Joachim Krech5de94de2020-04-03 11:18:19 +0200172 <xs:enumeration value="G++"/>
Joachim Krechcaab3af2020-02-11 09:24:23 +0100173 <xs:enumeration value="*" />
174 </xs:restriction>
175 </xs:simpleType>
176
177 <!-- compiler output enumeration -->
178 <xs:simpleType name="CompilerOutputType">
179 <xs:restriction base="xs:token">
180 <xs:enumeration value="exe" /> <!-- executable -->
181 <xs:enumeration value="lib" /> <!-- library -->
182 </xs:restriction>
183 </xs:simpleType>
184
185 <xs:simpleType name="InstancesType">
186 <xs:restriction base="xs:unsignedInt">
187 <xs:minInclusive value="1" />
188 </xs:restriction>
189 </xs:simpleType>
190
191 <xs:complexType name="ComponentCategoryType">
Joachim Krech5de94de2020-04-03 11:18:19 +0200192 <xs:attribute name="Cvendor" type="xs:string" use="optional" />
193 <xs:attribute name="Cbundle" type="xs:string" use="optional" />
194 <xs:attribute name="Cclass" type="xs:string" use="required" />
195 <xs:attribute name="Cgroup" type="xs:string" use="optional" />
196 <xs:attribute name="Csub" type="xs:string" use="optional" />
197 <xs:attribute name="Cvariant" type="xs:string" use="optional" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100198 <xs:attribute name="Cversion" type="ComponentVersionType" use="optional" />
199 <xs:attribute name="Capiversion" type="ComponentVersionType" use="optional" />
200 <xs:attribute name="instances" type="InstancesType" use="optional" default="1" />
201 </xs:complexType>
202
203 <!-- PackageType creates a unique ID for a package / if no version specified use "latest" -->
204 <xs:complexType name="PackageType">
205 <!-- vendor of the package -->
206 <xs:attribute name="vendor" type="xs:string" use="required" />
207 <!-- name of the package -->
208 <xs:attribute name="name" type="xs:string" use="required" />
209 <!-- version of the package (no range supported) -->
210 <xs:attribute name="version" type="PackVersionType" use="optional" />
211 </xs:complexType>
212
213 <!-- Package section type -->
214 <xs:complexType name="PackagesType">
215 <xs:sequence maxOccurs="unbounded">
216 <xs:element name="package" type="PackageType" />
217 </xs:sequence>
218 </xs:complexType>
219
220 <xs:complexType name="LayerType">
221 <xs:all>
222 <!-- layer description -->
223 <xs:element name="description" type="xs:string" minOccurs="0" />
224 <!-- layer intentionally does not have url ! -->
225 <!-- comma separated list of keywords -->
226 <xs:element name="keywords" type="xs:string" minOccurs="0" />
227 <!-- comma separated list of pre-defined categories -->
228 <xs:element name="category" type="xs:string" minOccurs="0" />
229 <!-- license covering the layer (the license of referenced components is not covered) -->
230 <xs:element name="license" type="xs:string" minOccurs="0" />
231 </xs:all>
232 <!-- layer name is used in file and directory names, hence restricted -->
233 <xs:attribute name="name" type="RestrictedString" use="required" />
234 <xs:attribute name="hasTarget" type="xs:boolean" use="optional" />
235 </xs:complexType>
236
237 <!-- Layers section type -->
238 <xs:complexType name="LayersType">
239 <xs:sequence maxOccurs="unbounded">
240 <xs:element name="layer" type="LayerType" />
241 </xs:sequence>
242 </xs:complexType>
243
244 <!-- CompilerType creates a unique toolchain ID, e.g. armcc 5.4.0 -->
245 <xs:complexType name="CompilerType">
246 <xs:attribute name="name" type="CompilerEnumType" use="required" />
247 <xs:attribute name="version" type="VersionRangeType" use="required" />
248 </xs:complexType>
249
250 <!-- Compiler section type -->
251 <xs:complexType name="CompilersType">
252 <xs:sequence maxOccurs="unbounded">
253 <xs:element name="compiler" type="CompilerType" />
254 </xs:sequence>
255 </xs:complexType>
256
257
258 <!-- Project target specification: -->
259 <xs:complexType name="TargetType">
260 <xs:choice maxOccurs="unbounded">
261 <!-- build options -->
262 <xs:element name="output" type="OutputType" />
263 <!-- linker command-line -->
264 <xs:element name="ldflags" type="LinkerFlagsType" />
265 <!-- C-Compiler command-line -->
266 <xs:element name="cflags" type="ToolOptionType" />
267 <!-- C++ Compiler command-line -->
268 <xs:element name="cxxflags" type="ToolOptionType" />
269 <!-- Assembler command-line -->
Joachim Krech5c7ddef2020-04-27 22:38:50 +0200270 <xs:element name="asflags" type="AsmOptionType" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100271 </xs:choice>
272 <!-- Board Vendor -->
273 <xs:attribute name="Bvendor" type="xs:string" use="optional" />
274 <!-- Board Name -->
275 <xs:attribute name="Bname" type="xs:string" use="optional" />
276 <!-- Board Version -->
277 <xs:attribute name="Bversion" type="xs:string" use="optional" />
278 <!-- Device Vendor -->
279 <xs:attribute name="Dvendor" type="xs:string" use="optional" />
280 <!-- Device Name -->
281 <xs:attribute name="Dname" type="xs:string" use="optional" />
282 <!-- Processor Instance Name -->
283 <xs:attribute name="Pname" type="xs:string" use="optional" />
284 <!-- FPU used in target build -->
285 <xs:attribute name="Dfpu" type="DfpuEnum" use="optional" />
286 <!-- Endianess used in target build -->
287 <xs:attribute name="Dendian" type="DendianEnum" use="optional" />
288 <!-- MPU used in target build -->
289 <xs:attribute name="Dmpu" type="DmpuEnum" use="optional" />
290 <xs:attribute name="Ddsp" type="DdspEnum" use="optional" />
291 <xs:attribute name="Dmve" type="DmveEnum" use="optional" />
292 <xs:attribute name="Dtz" type="DtzEnum" use="optional" />
293 <xs:attribute name="Dsecure" type="DsecureEnum" use="optional" />
294 </xs:complexType>
295
296 <!-- Build settings for the project, setting RTE filter options -->
297 <xs:complexType name="OutputType">
298 <!-- Project output file name -->
299 <xs:attribute name="name" type="xs:string" use="required" />
300 <xs:attribute name="obj" type="xs:string" use="optional" />
301 <xs:attribute name="list" type="xs:string" use="optional" />
302 <xs:attribute name="type" type="CompilerOutputType" use="required" />
303 </xs:complexType>
304
305 <xs:complexType name="LinkerFlagsType">
Joachim Krech5c7ddef2020-04-27 22:38:50 +0200306 <xs:attribute name="compiler" type="CompilerEnumType" use="required" />
307 <xs:attribute name="file" type="xs:string" />
308 <xs:attribute name="add" type="xs:string" />
309 <xs:attribute name="remove" type="xs:string" />
310 </xs:complexType>
311
312 <xs:complexType name="AsmOptionType">
313 <xs:attribute name="compiler" type="CompilerEnumType" use="required" />
314 <xs:attribute name="add" type="xs:string" />
315 <xs:attribute name="remove" type="xs:string" />
316 <xs:attribute name="use" type="xs:string" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100317 </xs:complexType>
318
319 <xs:complexType name="ToolOptionType">
Joachim Krech5c7ddef2020-04-27 22:38:50 +0200320 <xs:attribute name="compiler" type="CompilerEnumType" use="required"/>
321 <xs:attribute name="add" type="xs:string" />
322 <xs:attribute name="remove" type="xs:string" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100323 </xs:complexType>
324
325 <xs:complexType name="UsedType">
326 <xs:attribute name="file" type="xs:string" />
327 <xs:attribute name="path" type="xs:string" />
328 <xs:attribute name="timestamp" type="xs:dateTime" />
329 </xs:complexType>
330
331 <!-- Group section contains a list of files and (sub-)groups -->
332 <xs:complexType name="GroupType">
333 <xs:choice maxOccurs="unbounded">
334 <xs:element name="cflags" type="ToolOptionType" />
335 <xs:element name="cxxflags" type="ToolOptionType" />
336 <xs:element name="asflags" type="ToolOptionType" />
337 <xs:element name="file" type="FileType" />
338 <xs:element name="group" type="GroupType" />
339 </xs:choice>
340 <xs:attribute name="name" use="required" />
341 <!-- layer reference -->
342 <xs:attribute name="layer" type="RestrictedString" use="optional" />
343 </xs:complexType>
344
345 <!-- file type definition -->
346 <xs:complexType name="FileType">
347 <xs:choice minOccurs="0">
348 <xs:element name="cflags" type="ToolOptionType" />
349 <xs:element name="cxxflags" type="ToolOptionType" />
350 <xs:element name="asflags" type="ToolOptionType" />
351 </xs:choice>
352 <!-- path + filename + extension -->
353 <xs:attribute name="name" type="xs:string" use="required" />
354 <!-- file item category: source, header, include path, etc. -->
355 <xs:attribute name="category" type="FileCategoryType" use="required" />
356 <!-- for category="header" path explicitly specifies the include path added to the commandline.-->
357 <!-- Ignored for all other categories -->
358 <xs:attribute name="path" type="xs:string" use="optional" />
359 <!-- path(s) to find source files for a library, paths are delimited with semicolon (;) -->
360 <xs:attribute name="src" type="xs:string" use="optional" />
361 <!-- reference to layer -->
362 <xs:attribute name="layer" type="RestrictedString" use="optional" />
363 </xs:complexType>
364
365 <!-- Files section within the project section -->
366 <xs:complexType name="FilesType">
367 <xs:choice maxOccurs="unbounded">
368 <!-- C-Compiler command-line -->
369 <xs:element name="cflags" type="ToolOptionType" />
370 <!-- C++ Compiler command-line -->
371 <xs:element name="cxxflags" type="ToolOptionType" />
372 <!-- Assembler command-line -->
373 <xs:element name="asflags" type="ToolOptionType" />
374 <xs:element name="file" type="FileType" />
375 <xs:element name="group" type="GroupType" />
376 </xs:choice>
377 </xs:complexType>
378
379 <!-- Component selection section -->
380 <xs:complexType name="ComponentsType">
381 <xs:sequence>
382 <xs:element name="component" maxOccurs="unbounded">
383 <xs:complexType>
384 <xs:choice minOccurs="0" maxOccurs="unbounded">
385 <!-- all config files -->
386 <xs:element name="file">
387 <xs:complexType>
388 <!-- file item category: source, header, include path, etc. -->
389 <xs:attribute name="category" type="FileCategoryType" use="required" />
390 <!-- file item action attribute : config (copy to project, template, interface) -->
391 <xs:attribute name="attr" type="FileAttributeType" use="optional" />
392 <!-- path + filename + extension -->
393 <xs:attribute name="name" type="xs:string" use="required" />
394 <!-- configuration file version: to be used by RTE to see whether the file requires updating or not -->
395 <xs:attribute name="version" type="ComponentVersionType" use="required" />
396 </xs:complexType>
397 </xs:element>
398 <xs:element name="cflags" type="ToolOptionType" minOccurs="0"/>
399 <xs:element name="cxxflags" type="ToolOptionType" minOccurs="0"/>
400 <xs:element name="asflags" type="ToolOptionType" minOccurs="0"/>
401 </xs:choice>
402 <xs:attribute name="Cvendor" type="xs:string" use="optional" />
403 <xs:attribute name="Cbundle" type="xs:string" use="optional" />
404 <xs:attribute name="Cclass" type="xs:string" use="required" />
405 <xs:attribute name="Cgroup" type="xs:string" use="required" />
406 <xs:attribute name="Csub" type="xs:string" use="optional" />
407 <xs:attribute name="Cvariant" type="xs:string" use="optional" />
408 <xs:attribute name="Cversion" type="ComponentVersionType" use="optional" />
409 <xs:attribute name="Capiversion" type="ComponentVersionType" use="optional" />
410 <xs:attribute name="instances" type="InstancesType" use="optional" default="1"/>
411 <xs:attribute name="layer" type="RestrictedString" use="optional" />
412 </xs:complexType>
413 </xs:element>
414 </xs:sequence>
415 </xs:complexType>
416
417 <!-- Creation info -->
418 <xs:complexType name="CreationInfoType">
419 <xs:sequence>
420 <xs:element name="used" type="UsedType" minOccurs="0"/>
421 </xs:sequence>
422 <xs:attribute name="tool" type="xs:string" use="required" />
423 <!-- format: YYYY-MM-DDThh:mm:ss[+|-hh:mm] timezone offset -->
424 <xs:attribute name="timestamp" type="xs:dateTime" use="required" />
425 </xs:complexType>
426
427 <!-- repository types -->
428 <xs:simpleType name="RepositoryTypeEnum">
429 <xs:restriction base="xs:string">
430 <xs:enumeration value="git"/>
431 <xs:enumeration value="svn"/>
432 <xs:enumeration value="other"/>
433 </xs:restriction>
434 </xs:simpleType>
435
436 <!-- URL type (optionally describes public repository) -->
437 <xs:complexType name="UrlType">
438 <xs:simpleContent>
439 <xs:extension base="xs:anyURI">
440 <xs:attribute name="repoType" type="RepositoryTypeEnum" use="optional" />
441 <xs:attribute name="repoTag" type="xs:string" use="optional" />
442 </xs:extension>
443 </xs:simpleContent>
444 </xs:complexType>
445
446 <!-- Project/Layer Info -->
447 <xs:complexType name="InfoType">
448 <xs:all>
449 <!-- use filename as 'name' -->
450 <xs:element name="description" type="xs:string" minOccurs="1" />
451 <xs:element name="url" type="UrlType" minOccurs="0" />
452 <xs:element name="keywords" type="xs:string" minOccurs="0" />
453 <xs:element name="category" type="xs:string" minOccurs="0" />
454 <!-- SPDX license ID: https://spdx.org/licenses/ -->
455 <xs:element name="license" type="xs:string" minOccurs="0" />
456 </xs:all>
457 <!-- 'true' if file is a layer description. Default 'false' -->
458 <xs:attribute name="isLayer" type="xs:boolean" use="optional" default="false"/>
459 </xs:complexType>
460
461 <!-- Board Info -->
462 <xs:complexType name="BoardInfoType">
463 <xs:simpleContent>
464 <xs:extension base="xs:string">
465 <xs:attribute name="vendor" type="xs:string" use="required" />
466 <xs:attribute name="name" type="xs:string" use="required" />
467 <xs:attribute name="url" type="xs:anyURI" use="optional" />
468 <xs:attribute name="revision" type="xs:string" use="optional" />
469 </xs:extension>
470 </xs:simpleContent>
471 </xs:complexType>
472
473 <!-- package description root point -->
474 <xs:element name="cprj" nillable="true">
475 <xs:complexType>
476 <xs:all>
477 <!-- project info -->
Joachim Krech5de94de2020-04-03 11:18:19 +0200478 <xs:element name="info" type="InfoType" minOccurs="1" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100479 <!-- board info -->
Joachim Krech5de94de2020-04-03 11:18:19 +0200480 <xs:element name="board" type="BoardInfoType" minOccurs="0" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100481 <!-- tool info -->
Joachim Krech5de94de2020-04-03 11:18:19 +0200482 <xs:element name="created" type="CreationInfoType" minOccurs="0" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100483 <!-- optional: project layers -->
484 <xs:element name="layers" type="LayersType" minOccurs="0" />
485 <!-- used CMSIS-Packs -->
486 <xs:element name="packages" type="PackagesType" minOccurs="1" />
487 <!-- supported compilers including version -->
488 <xs:element name="compilers" type="CompilersType" minOccurs="0" />
489 <!-- project build target settings -->
490 <xs:element name="target" type="TargetType" minOccurs="0" />
491 <!-- components used by project -->
Joachim Krechfe9b9ba2020-04-24 10:03:28 +0200492 <xs:element name="components" type="ComponentsType" minOccurs="0" />
Joachim Krechcaab3af2020-02-11 09:24:23 +0100493 <!-- project modules/source files not contained in components -->
494 <xs:element name="files" type="FilesType" minOccurs="0"/>
495 </xs:all>
496 <!-- schema version used by writer -->
497 <xs:attribute name="schemaVersion" type="SchemaVersionType" use="required" />
498 </xs:complexType>
499 </xs:element>
500</xs:schema>