1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <xs:schema xmlns:
xs=
"http://www.w3.org/2001/XMLSchema"
3 xmlns:
image=
"http://www.pythoncad.org/"
4 targetNamespace=
"http://www.pythoncad.org/">
6 <xs:documentation xml:
lang=
"en">
7 Schema for PythonCAD drawing files
8 Author: Art Haas(ahaas@airmail.net)
11 <xs:element name=
"Image" type=
"image:Image">
13 <xs:element name=
"Colors" type=
"image:Color" minOccurs=
"1" maxOccurs=
"unbounded"/>
14 <xs:element name=
"Layers" type=
"image:Layers" minOccurs=
"1" maxOccurs=
"unbounded"/>
17 <xs:simpleType name=
"colorValue">
18 <xs:restriction base=
"xs:nonNegativeInteger">
19 <xs:minInclusive value=
"0"/>
20 <xs:maxInclusive value=
"255"/>
23 <xs:complexType name=
"Colors">
25 <xs:element name=
"Color" minOccurs=
"1" maxOccurs=
"unbounded">
27 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
28 <xs:attribute name=
"r" type=
"image:colorValue" use=
"required"/>
29 <xs:attribute name=
"g" type=
"image:colorValue" use=
"required"/>
30 <xs:attribute name=
"b" type=
"image:colorValue" use=
"required"/>
34 <xs:unique name=
"color_id">
35 <xs:selector xpath=
"image:Color"/>
36 <xs:field xpath=
"@id"/>
39 <xs:complexType name=
"Layers">
41 <xs:element name=
"Layer" minOccurs=
"1" maxOccurs=
"unbounded">
44 <xs:element name=
"Points" type=
"image:Points" minOccurs=
"0" maxOccurs=
"1"/>
45 <xs:element name=
"Segments" type=
"image:Segments" minOccurs=
"0" maxOccurs=
"1"/>
46 <xs:element name=
"Circles" type=
"image:Circles" minOccurs=
"0" maxOccurs=
"1"/>
47 <xs:element name=
"Arcs" type=
"image:Arcs" minOccurs=
"0" maxOccurs=
"1"/>
48 <xs:element name=
"HCLines" type=
"image:HCLines" minOccurs=
"0" maxOccurs=
"1"/>
49 <xs:element name=
"VCLines" type=
"image:VCLines" minOccurs=
"0" maxOccurs=
"1"/>
50 <xs:element name=
"ACLines" type=
"image:ACLines" minOccurs=
"0" maxOccurs=
"1"/>
51 <xs:element name=
"CLines" type=
"image:CLines" minOccurs=
"0" maxOccurs=
"1"/>
52 <xs:element name=
"CCircles" type=
"image:CCircles" minOccurs=
"0" maxOccurs=
"1"/>
53 <xs:element name=
"LDims" type=
"image:LDim" minOccurs=
"0" maxOccurs=
"1"/>
54 <xs:element name=
"HDims" type=
"image:HDim" minOccurs=
"0" maxOccurs=
"1"/>
55 <xs:element name=
"VDims" type=
"image:VDim" minOccurs=
"0" maxOccurs=
"1"/>
56 <xs:element name=
"RDims" type=
"image:RDim" minOccurs=
"0" maxOccurs=
"1"/>
57 <xs:element name=
"ADims" type=
"image:ADim" minOccurs=
"0" maxOccurs=
"1"/>
60 <xs:attribute name=
"name" type=
"xs:string" use=
"required"/>
61 <xs:attribute name=
"scale" type=
"xs:double" use=
"required"/>
62 <xs:attribute name=
"parent" type=
"xs:integer" use=
"optional"/>
63 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
68 <xs:complexType name=
"Segments">
70 <xs:element name=
"Segment" minOccurs=
"1" maxOccurs=
"unbounded">
72 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
73 <xs:attribute name=
"p1" type=
"xs:nonNegativeInteger" use=
"required"/>
74 <xs:attribute name=
"p2" type=
"xs:nonNegativeInteger" use=
"required"/>
75 <xs:attribute name=
"style" type=
"xs:nonNegativeInteger" use=
"required"/>
79 <xs:unique name=
"seg_id">
80 <xs:selector xpath=
"image:Segment"/>
81 <xs:field xpath=
"@id"/>
84 <xs:complexType name=
"CLines">
86 <xs:element name=
"CLine" minOccurs=
"1" maxOccurs=
"unbounded">
88 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
89 <xs:attribute name=
"p1" type=
"xs:nonNegativeInteger" use=
"required"/>
90 <xs:attribute name=
"p2" type=
"xs:nonNegativeInteger" use=
"required"/>
94 <xs:unique name=
"cline_id">
95 <xs:selector xpath=
"image:CLine"/>
96 <xs:field xpath=
"@id"/>
99 <xs:complexType name=
"HCLines">
101 <xs:element name=
"HCLine" minOccurs=
"1" maxOccurs=
"unbounded">
103 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
104 <xs:attribute name=
"location" type=
"xs:nonNegativeInteger" use=
"required"/>
108 <xs:unique name=
"hcline_id">
109 <xs:selector xpath=
"image:HCLine"/>
110 <xs:field xpath=
"@id"/>
113 <xs:complexType name=
"VCLines">
115 <xs:element name=
"VCLine" minOccurs=
"1" maxOccurs=
"unbounded">
117 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
118 <xs:attribute name=
"location" type=
"xs:nonNegativeInteger" use=
"required"/>
122 <xs:unique name=
"vcline_id">
123 <xs:selector xpath=
"image:VCLine"/>
124 <xs:field xpath=
"@id"/>
127 <xs:complexType name=
"ACLines">
129 <xs:element name=
"ACLine" minOccurs=
"1" maxOccurs=
"unbounded">
131 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
132 <xs:attribute name=
"location" type=
"xs:nonNegativeInteger" use=
"required"/>
133 <xs:attribute name=
"angle" type=
"xs:double" use=
"required"/>
137 <xs:unique name=
"acline_id">
138 <xs:selector xpath=
"image:ACLine"/>
139 <xs:field xpath=
"@id"/>
142 <xs:complexType name=
"Circles">
144 <xs:element name=
"Circle" minOccurs=
"1" maxOccurs=
"unbounded">
146 <xs:attribute name=
"cp" type=
"xs:nonNegativeInteger" use=
"required"/>
147 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
148 <xs:attribute name=
"r" type=
"xs:double" use=
"required"/>
149 <xs:attribute name=
"style" type=
"xs:nonNegativeInteger" use=
"required"/>
153 <xs:unique name=
"cid">
154 <xs:selector xpath=
"image:Circle"/>
155 <xs:field xpath=
"@id"/>
158 <xs:complexType name=
"Arcs">
160 <xs:element name=
"Arc" minOccurs=
"1" maxOccurs=
"unbounded">
162 <xs:attribute name=
"cp" type=
"xs:nonNegativeInteger" use=
"required"/>
163 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
164 <xs:attribute name=
"r" type=
"xs:double" use=
"required"/>
165 <xs:attribute name=
"ea" type=
"xs:double" use=
"required"/>
166 <xs:attribute name=
"sa" type=
"xs:double" use=
"required"/>
167 <xs:attribute name=
"style" type=
"xs:nonNegativeInteger" use=
"required"/>
171 <xs:unique name=
"arc_id">
172 <xs:selector xpath=
"image:Arc"/>
173 <xs:field xpath=
"@id"/>
176 <xs:complexType name=
"CCircles">
178 <xs:element name=
"CCircle" minOccurs=
"1" maxOccurs=
"unbounded">
180 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
181 <xs:attribute name=
"cp" type=
"xs:nonNegativeInteger" use=
"required"/>
182 <xs:attribute name=
"r" type=
"xs:double" use=
"required"/>
186 <xs:unique name=
"ccid">
187 <xs:selector xpath=
"image:CCircle"/>
188 <xs:field xpath=
"@id"/>
191 <xs:complexType name=
"Points">
193 <xs:element name=
"Point" minOccurs=
"1" maxOccurs=
"unbounded">
195 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
196 <xs:attribute name=
"x" type=
"xs:double" use=
"required"/>
197 <xs:attribute name=
"y" type=
"xs:double" use=
"required"/>
201 <xs:unique name=
"pid">
202 <xs:selector xpath=
"image:Point"/>
203 <xs:field xpath=
"@id"/>
206 <xs:complexType name=
"Chamfers">
208 <xs:element name=
"Chamfer" minOccurs=
"1" maxOccurs=
"unbounded">
210 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
211 <xs:attribute name=
"length" type=
"xs:double" use=
"required"/>
212 <xs:attribute name=
"s1" type=
"xs:nonNegativeInteger" use=
"required"/>
213 <xs:attribute name=
"s2" type=
"xs:nonNegativeInteger" use=
"required"/>
214 <xs:attribute name=
"style" type=
"xs:nonNegativeInteger" use=
"required"/>
218 <xs:unique name=
"chamfer_id">
219 <xs:selector xpath=
"image:Chamfer"/>
220 <xs:field xpath=
"@id"/>
223 <xs:complexType name=
"Fillets">
225 <xs:element name=
"Fillet" minOccurs=
"1" maxOccurs=
"unbounded">
227 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
228 <xs:attribute name=
"radius" type=
"xs:double" use=
"required"/>
229 <xs:attribute name=
"s1" type=
"xs:nonNegativeInteger" use=
"required"/>
230 <xs:attribute name=
"s2" type=
"xs:nonNegativeInteger" use=
"required"/>
231 <xs:attribute name=
"style" type=
"xs:nonNegativeInteger" use=
"required"/>
235 <xs:unique name=
"fillet_id">
236 <xs:selector xpath=
"image:Fillet"/>
237 <xs:field xpath=
"@id"/>
240 <xs:complexType name=
"LDims">
242 <xs:element name=
"LDim" minOccurs=
"1" maxOccurs=
"unbounded">
244 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
245 <xs:attribute name=
"ds" type=
"xs:nonNegativeInteger" use=
"required"/>
246 <xs:attribute name=
"l1" type=
"xs:nonNegativeInteger" use=
"required"/>
247 <xs:attribute name=
"p1" type=
"xs:nonNegativeInteger" use=
"required"/>
248 <xs:attribute name=
"l2" type=
"xs:nonNegativeInteger" use=
"required"/>
249 <xs:attribute name=
"p2" type=
"xs:nonNegativeInteger" use=
"required"/>
250 <xs:attribute name=
"x" type=
"xs:double" use=
"required"/>
251 <xs:attribute name=
"y" type=
"xs:double" use=
"required"/>
255 <xs:unique name=
"ldim_id">
256 <xs:selector xpath=
"image:LDim"/>
257 <xs:field xpath=
"@id"/>
260 <xs:complexType name=
"HDims">
262 <xs:element name=
"HDim" minOccurs=
"1" maxOccurs=
"unbounded">
264 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
265 <xs:attribute name=
"ds" type=
"xs:nonNegativeInteger" use=
"required"/>
266 <xs:attribute name=
"l1" type=
"xs:nonNegativeInteger" use=
"required"/>
267 <xs:attribute name=
"p1" type=
"xs:nonNegativeInteger" use=
"required"/>
268 <xs:attribute name=
"l2" type=
"xs:nonNegativeInteger" use=
"required"/>
269 <xs:attribute name=
"p2" type=
"xs:nonNegativeInteger" use=
"required"/>
270 <xs:attribute name=
"x" type=
"xs:double" use=
"required"/>
271 <xs:attribute name=
"y" type=
"xs:double" use=
"required"/>
275 <xs:unique name=
"hdim_id">
276 <xs:selector xpath=
"image:HDim"/>
277 <xs:field xpath=
"@id"/>
280 <xs:complexType name=
"VDims">
282 <xs:element name=
"VDim" minOccurs=
"1" maxOccurs=
"unbounded">
284 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
285 <xs:attribute name=
"ds" type=
"xs:nonNegativeInteger" use=
"required"/>
286 <xs:attribute name=
"l1" type=
"xs:nonNegativeInteger" use=
"required"/>
287 <xs:attribute name=
"p1" type=
"xs:nonNegativeInteger" use=
"required"/>
288 <xs:attribute name=
"l2" type=
"xs:nonNegativeInteger" use=
"required"/>
289 <xs:attribute name=
"p2" type=
"xs:nonNegativeInteger" use=
"required"/>
290 <xs:attribute name=
"x" type=
"xs:double" use=
"required"/>
291 <xs:attribute name=
"y" type=
"xs:double" use=
"required"/>
295 <xs:unique name=
"vdim_id">
296 <xs:selector xpath=
"image:VDim"/>
297 <xs:field xpath=
"@id"/>
300 <xs:complexType name=
"RDims">
302 <xs:element name=
"RDim" minOccurs=
"1" maxOccurs=
"unbounded">
304 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
305 <xs:attribute name=
"ds" type=
"xs:nonNegativeInteger" use=
"required"/>
306 <xs:attribute name=
"l" type=
"xs:nonNegativeInteger" use=
"required"/>
307 <xs:attribute name=
"c" type=
"xs:nonNegativeInteger" use=
"required"/>
308 <xs:attribute name=
"x" type=
"xs:double" use=
"required"/>
309 <xs:attribute name=
"y" type=
"xs:double" use=
"required"/>
313 <xs:unique name=
"rdim_id">
314 <xs:selector xpath=
"image:RDim"/>
315 <xs:field xpath=
"@id"/>
318 <xs:complexType name=
"ADims">
320 <xs:element name=
"ADim" minOccurs=
"1" maxOccurs=
"unbounded">
322 <xs:attribute name=
"id" type=
"xs:nonNegativeInteger" use=
"required"/>
323 <xs:attribute name=
"ds" type=
"xs:nonNegativeInteger" use=
"required"/>
324 <xs:attribute name=
"l1" type=
"xs:nonNegativeInteger" use=
"required"/>
325 <xs:attribute name=
"p1" type=
"xs:nonNegativeInteger" use=
"required"/>
326 <xs:attribute name=
"l2" type=
"xs:nonNegativeInteger" use=
"required"/>
327 <xs:attribute name=
"p2" type=
"xs:nonNegativeInteger" use=
"required"/>
328 <xs:attribute name=
"l3" type=
"xs:nonNegativeInteger" use=
"required"/>
329 <xs:attribute name=
"p3" type=
"xs:nonNegativeInteger" use=
"required"/>
330 <xs:attribute name=
"x" type=
"xs:double" use=
"required"/>
331 <xs:attribute name=
"y" type=
"xs:double" use=
"required"/>
335 <xs:unique name=
"adim_id">
336 <xs:selector xpath=
"image:ADim"/>
337 <xs:field xpath=
"@id"/>