1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
3 <xs:element name="targetGeometry">
5 <xs:group minOccurs="0" maxOccurs="unbounded" ref="geometry-element"/>
8 <xs:element name="geometryGroup" type="geometryGroup-content"/>
9 <xs:complexType name="geometryGroup-content">
10 <xs:group maxOccurs="unbounded" ref="geometry-element"/>
11 <xs:attribute name="name" use="required" type="xs:token"/>
13 <xs:group name="geometry-element">
15 <xs:choice minOccurs="0" maxOccurs="unbounded">
16 <xs:element ref="component"/>
17 <xs:element ref="geometryGroup"/>
21 <xs:element name="component">
24 <xs:element minOccurs="0" ref="description"/>
25 <xs:choice minOccurs="0" maxOccurs="unbounded">
26 <xs:element ref="cylinder"/>
27 <xs:element ref="ellipsoid"/>
28 <xs:element ref="faceSet"/>
29 <xs:element ref="tube"/>
30 <xs:element ref="sphere"/>
31 <xs:element ref="box"/>
32 <xs:element ref="extrusion"/>
35 <xs:attributeGroup ref="name-attribute"/>
38 <xs:element name="translation">
41 <xs:extension base="three-doubles-list">
42 <xs:attributeGroup ref="dimension-attribute"/>
43 <xs:attributeGroup ref="Length-attribute"/>
48 <xs:element name="rotation">
51 <xs:extension base="three-doubles-list">
52 <xs:attributeGroup ref="dimension-attribute"/>
53 <xs:attributeGroup ref="Length-attribute"/>
58 <xs:element name="about">
61 <xs:extension base="three-doubles-list">
62 <xs:attributeGroup ref="dimension-attribute"/>
63 <xs:attributeGroup ref="Length-attribute"/>
68 <xs:element name="length">
71 <xs:restriction base="xs:anyType">
73 <xs:restriction base="xs:double">
74 <xs:minExclusive value="0"/>
77 <xs:attributeGroup ref="dimension-attribute"/>
78 <xs:attributeGroup ref="Length-attribute"/>
83 <xs:element name="radius">
86 <xs:restriction base="xs:anyType">
88 <xs:restriction base="xs:double">
89 <xs:minExclusive value="0"/>
92 <xs:attributeGroup ref="dimension-attribute"/>
93 <xs:attributeGroup ref="Length-attribute"/>
98 <xs:element name="base1">
101 <xs:extension base="three-doubles-list">
102 <xs:attributeGroup ref="dimension-attribute"/>
103 <xs:attributeGroup ref="Length-attribute"/>
108 <xs:element name="base2">
111 <xs:extension base="three-doubles-list">
112 <xs:attributeGroup ref="dimension-attribute"/>
113 <xs:attributeGroup ref="Length-attribute"/>
118 <xs:element name="transform">
121 <xs:element minOccurs="0" ref="translation"/>
122 <xs:element minOccurs="0" ref="rotation"/>
123 <xs:element minOccurs="0" ref="about"/>
127 <xs:element name="cyl-transform">
130 <xs:element ref="translation"/>
131 <xs:element minOccurs="0" ref="rotation"/>
132 <xs:element minOccurs="0" ref="about"/>
136 <xs:element name="cylinder">
138 <xs:choice minOccurs="0" maxOccurs="unbounded">
139 <xs:element ref="radius"/>
142 <xs:element ref="length"/>
143 <xs:element ref="cyl-transform"/>
146 <xs:element ref="base1"/>
147 <xs:element ref="base2"/>
148 <xs:element minOccurs="0" maxOccurs="unbounded" ref="transform"/>
151 <xs:element ref="description"/>
152 <xs:element ref="vMaterial"/>
154 <xs:attributeGroup ref="name-attribute"/>
157 <xs:element name="ellipsoid">
159 <xs:choice minOccurs="0" maxOccurs="unbounded">
160 <xs:element name="radius">
163 <xs:extension base="three-doubles-list">
164 <xs:attributeGroup ref="length-attribute"/>
169 <xs:element ref="vMaterial"/>
170 <xs:element ref="transform"/>
172 <xs:attributeGroup ref="name-attribute"/>
175 <xs:element name="faceSet">
177 <xs:choice minOccurs="0" maxOccurs="unbounded">
178 <xs:element ref="description"/>
179 <xs:element ref="vertex_normals"/>
180 <xs:element ref="vertices"/>
181 <xs:element ref="facets"/>
182 <xs:group ref="optional-content"/>
184 <xs:attribute name="name" type="xs:token"/>
187 <xs:element name="facets" type="facets-content"/>
188 <xs:simpleType name="facets-content">
189 <xs:restriction base="integer-list"/>
191 <xs:element name="vertex_normals" type="vertex_normals-content"/>
192 <xs:complexType name="vertex_normals-content">
194 <xs:restriction base="xs:anyType">
202 <xs:union memberTypes="xs:double xs:double xs:double"/>
205 <xs:union memberTypes="xs:double xs:double xs:double"/>
208 <xs:union memberTypes="xs:double xs:double xs:double"/>
211 <xs:union memberTypes="xs:double xs:double xs:double"/>
217 <xs:minLength value="9"/>
220 <xs:attributeGroup ref="length-attribute"/>
224 <xs:element name="vertices" type="vertices-content"/>
225 <xs:complexType name="vertices-content">
227 <xs:restriction base="xs:anyType">
235 <xs:union memberTypes="xs:double xs:double xs:double"/>
238 <xs:union memberTypes="xs:double xs:double xs:double"/>
241 <xs:union memberTypes="xs:double xs:double xs:double"/>
244 <xs:union memberTypes="xs:double xs:double xs:double"/>
250 <xs:minLength value="9"/>
253 <xs:attributeGroup ref="length-attribute"/>
257 <xs:element name="tube" type="tube-content"/>
258 <xs:complexType name="tube-content">
259 <xs:choice minOccurs="0" maxOccurs="unbounded">
260 <xs:element ref="spine"/>
261 <xs:element ref="radius"/>
262 <xs:group ref="optional-content"/>
264 <xs:attributeGroup ref="name-attribute"/>
266 <xs:element name="spine" type="spine-content"/>
267 <xs:complexType name="spine-content">
269 <xs:restriction base="xs:anyType">
277 <xs:union memberTypes="xs:double xs:double xs:double"/>
280 <xs:union memberTypes="xs:double xs:double xs:double"/>
286 <xs:minLength value="6"/>
289 <xs:attributeGroup ref="length-attribute"/>
293 <xs:element name="sphere" type="sphere-content"/>
294 <xs:complexType name="sphere-content">
295 <xs:choice minOccurs="0" maxOccurs="unbounded">
296 <xs:element ref="radius"/>
297 <xs:element ref="position"/>
299 <xs:attributeGroup ref="name-attribute"/>
301 <xs:element name="position" type="position-content"/>
302 <xs:complexType name="position-content">
304 <xs:extension base="three-doubles-list">
305 <xs:attributeGroup ref="length-attribute"/>
309 <xs:element name="box" type="box-content"/>
310 <xs:complexType name="box-content">
311 <xs:choice minOccurs="0" maxOccurs="unbounded">
312 <xs:element ref="size"/>
314 <xs:element ref="position"/>
315 <xs:element ref="transform"/>
318 <xs:attributeGroup ref="name-attribute"/>
320 <xs:element name="size" type="size-content"/>
321 <xs:complexType name="size-content">
323 <xs:extension base="three-doubles-list">
324 <xs:attributeGroup ref="length-attribute"/>
328 <xs:element name="extrusion" type="extrusion-content"/>
329 <xs:complexType name="extrusion-content">
330 <xs:choice minOccurs="0" maxOccurs="unbounded">
331 <xs:element ref="spine"/>
332 <xs:element ref="scale"/>
333 <xs:element ref="crossSection"/>
334 <xs:group ref="optional-content"/>
336 <xs:attributeGroup ref="name-attribute"/>
338 <xs:element name="scale" type="scale-content"/>
339 <xs:simpleType name="scale-content">
344 <xs:union memberTypes="xs:double xs:double"/>
348 <xs:minLength value="2"/>
351 <xs:element name="crossSection" type="crossSection-content"/>
352 <xs:complexType name="crossSection-content">
354 <xs:restriction base="xs:anyType">
362 <xs:union memberTypes="xs:double xs:double xs:double"/>
365 <xs:union memberTypes="xs:double xs:double xs:double"/>
368 <xs:union memberTypes="xs:double xs:double xs:double"/>
374 <xs:minLength value="9"/>
377 <xs:attributeGroup ref="length-attribute"/>
378 <xs:attributeGroup ref="closed-attribute"/>
382 <xs:attributeGroup name="closed-attribute">
383 <xs:attribute name="closed" use="required" type="xs:boolean"/>
385 <xs:group name="optional-content">
387 <xs:documentation>global #############</xs:documentation>
390 <xs:choice minOccurs="0" maxOccurs="unbounded">
391 <xs:element ref="transform"/>
392 <xs:element ref="vMaterial"/>
396 <xs:element name="description" type="xs:string"/>
397 <xs:attributeGroup name="length-attribute">
398 <xs:attributeGroup ref="dimension-attribute"/>
399 <xs:attributeGroup ref="Length-attribute"/>
401 <xs:attributeGroup name="dimension-attribute">
402 <xs:attribute name="dimension" use="required">
404 <xs:restriction base="xs:token">
405 <xs:enumeration value="L"/>
406 <xs:enumeration value="F"/>
407 <xs:enumeration value="M"/>
408 <xs:enumeration value="T"/>
409 <xs:enumeration value="F/L"/>
410 <xs:enumeration value="F/LL"/>
411 <xs:enumeration value="F/LLL"/>
412 <xs:enumeration value="F/T"/>
413 <xs:enumeration value="F/TT"/>
414 <xs:enumeration value="F/TTT"/>
415 <xs:enumeration value="L/T"/>
416 <xs:enumeration value="L/TT"/>
417 <xs:enumeration value="LLLLL"/>
418 <xs:enumeration value="D/D"/>
423 <xs:attributeGroup name="Length-attribute">
424 <xs:attribute name="Length" use="required">
426 <xs:restriction base="xs:token">
427 <xs:enumeration value="meter"/>
428 <xs:enumeration value="m"/>
429 <xs:enumeration value="foot"/>
430 <xs:enumeration value="f"/>
431 <xs:enumeration value="inch"/>
432 <xs:enumeration value="in"/>
433 <xs:enumeration value="centimeter"/>
434 <xs:enumeration value="cm"/>
435 <xs:enumeration value="decimeter"/>
436 <xs:enumeration value="dm"/>
437 <xs:enumeration value="millimeter"/>
438 <xs:enumeration value="mm"/>
439 <xs:enumeration value="degree"/>
444 <xs:attributeGroup name="Time-attribute">
445 <xs:attribute name="Time" use="required">
447 <xs:restriction base="xs:token">
448 <xs:enumeration value="second"/>
449 <xs:enumeration value="s"/>
450 <xs:enumeration value="sec"/>
451 <xs:enumeration value="minute"/>
452 <xs:enumeration value="min"/>
453 <xs:enumeration value="hour"/>
454 <xs:enumeration value="hr"/>
459 <xs:attributeGroup name="Force-attribute">
460 <xs:attribute name="Force" use="required">
462 <xs:restriction base="xs:token">
463 <xs:enumeration value="newton"/>
464 <xs:enumeration value="n"/>
465 <xs:enumeration value="pound"/>
466 <xs:enumeration value="grain"/>
471 <xs:attributeGroup name="Mass-attribute">
472 <xs:attribute name="Mass" use="required">
474 <xs:restriction base="xs:token">
475 <xs:enumeration value="kilogram"/>
476 <xs:enumeration value="kg"/>
477 <xs:enumeration value="gram"/>
482 <xs:attributeGroup name="Dimensionless-attribute">
483 <xs:attribute name="Dimensionless" use="required">
485 <xs:restriction base="xs:token">
486 <xs:enumeration value="radian"/>
487 <xs:enumeration value="rad"/>
492 <xs:simpleType name="three-doubles-list">
497 <xs:union memberTypes="xs:double xs:double xs:double"/>
501 <xs:length value="3"/>
504 <xs:simpleType name="integer-list">
509 <xs:union memberTypes="xs:integer xs:integer"/>
513 <xs:minLength value="1"/>
516 <xs:attributeGroup name="name-attribute">
517 <xs:attribute name="name" use="required" type="xs:token"/>
519 <xs:attributeGroup name="description-attribute">
520 <xs:attribute name="description" use="required"/>
522 <xs:element name="vMaterial">
525 <xs:element minOccurs="0" ref="diffuseColor"/>
526 <xs:element minOccurs="0" ref="emissiveColor"/>
527 <xs:element minOccurs="0" ref="specularColor"/>
528 <xs:element minOccurs="0" ref="shininess"/>
529 <xs:element minOccurs="0" ref="transparency"/>
530 <xs:element minOccurs="0" ref="ambientIntensity"/>
531 <xs:element minOccurs="0" ref="DEF"/>
532 <xs:element minOccurs="0" ref="USE"/>
536 <xs:element name="diffuseColor" type="xs:string"/>
537 <xs:element name="emissiveColor" type="xs:string"/>
538 <xs:element name="specularColor" type="xs:string"/>
539 <xs:element name="shininess" type="xs:string"/>
540 <xs:element name="transparency" type="xs:string"/>
541 <xs:element name="ambientIntensity" type="xs:string"/>
542 <xs:element name="DEF" type="xs:string"/>
543 <xs:element name="USE" type="xs:string"/>