/ libxml2 / test / schemas / bug306806_1.xsd
bug306806_1.xsd
  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">
  4      <xs:complexType>
  5        <xs:group minOccurs="0" maxOccurs="unbounded" ref="geometry-element"/>
  6      </xs:complexType>
  7    </xs: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"/>
 12    </xs:complexType>
 13    <xs:group name="geometry-element">
 14      <xs:sequence>
 15        <xs:choice minOccurs="0" maxOccurs="unbounded">
 16          <xs:element ref="component"/>
 17          <xs:element ref="geometryGroup"/>
 18        </xs:choice>
 19      </xs:sequence>
 20    </xs:group>
 21    <xs:element name="component">
 22      <xs:complexType>
 23        <xs:sequence>
 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"/>
 33          </xs:choice>
 34        </xs:sequence>
 35        <xs:attributeGroup ref="name-attribute"/>
 36      </xs:complexType>
 37    </xs:element>
 38    <xs:element name="translation">
 39      <xs:complexType>
 40        <xs:simpleContent>
 41          <xs:extension base="three-doubles-list">
 42            <xs:attributeGroup ref="dimension-attribute"/>
 43            <xs:attributeGroup ref="Length-attribute"/>
 44          </xs:extension>
 45        </xs:simpleContent>
 46      </xs:complexType>
 47    </xs:element>
 48    <xs:element name="rotation">
 49      <xs:complexType>
 50        <xs:simpleContent>
 51          <xs:extension base="three-doubles-list">
 52            <xs:attributeGroup ref="dimension-attribute"/>
 53            <xs:attributeGroup ref="Length-attribute"/>
 54          </xs:extension>
 55        </xs:simpleContent>
 56      </xs:complexType>
 57    </xs:element>
 58    <xs:element name="about">
 59      <xs:complexType>
 60        <xs:simpleContent>
 61          <xs:extension base="three-doubles-list">
 62            <xs:attributeGroup ref="dimension-attribute"/>
 63            <xs:attributeGroup ref="Length-attribute"/>
 64          </xs:extension>
 65        </xs:simpleContent>
 66      </xs:complexType>
 67    </xs:element>
 68    <xs:element name="length">
 69      <xs:complexType>
 70        <xs:simpleContent>
 71          <xs:restriction base="xs:anyType">
 72            <xs:simpleType>
 73              <xs:restriction base="xs:double">
 74                <xs:minExclusive value="0"/>
 75              </xs:restriction>
 76            </xs:simpleType>
 77            <xs:attributeGroup ref="dimension-attribute"/>
 78            <xs:attributeGroup ref="Length-attribute"/>
 79          </xs:restriction>
 80        </xs:simpleContent>
 81      </xs:complexType>
 82    </xs:element>
 83    <xs:element name="radius">
 84      <xs:complexType>
 85        <xs:simpleContent>
 86          <xs:restriction base="xs:anyType">
 87            <xs:simpleType>
 88              <xs:restriction base="xs:double">
 89                <xs:minExclusive value="0"/>
 90              </xs:restriction>
 91            </xs:simpleType>
 92            <xs:attributeGroup ref="dimension-attribute"/>
 93            <xs:attributeGroup ref="Length-attribute"/>
 94          </xs:restriction>
 95        </xs:simpleContent>
 96      </xs:complexType>
 97    </xs:element>
 98    <xs:element name="base1">
 99      <xs:complexType>
100        <xs:simpleContent>
101          <xs:extension base="three-doubles-list">
102            <xs:attributeGroup ref="dimension-attribute"/>
103            <xs:attributeGroup ref="Length-attribute"/>
104          </xs:extension>
105        </xs:simpleContent>
106      </xs:complexType>
107    </xs:element>
108    <xs:element name="base2">
109      <xs:complexType>
110        <xs:simpleContent>
111          <xs:extension base="three-doubles-list">
112            <xs:attributeGroup ref="dimension-attribute"/>
113            <xs:attributeGroup ref="Length-attribute"/>
114          </xs:extension>
115        </xs:simpleContent>
116      </xs:complexType>
117    </xs:element>
118    <xs:element name="transform">
119      <xs:complexType>
120        <xs:sequence>
121          <xs:element minOccurs="0" ref="translation"/>
122          <xs:element minOccurs="0" ref="rotation"/>
123          <xs:element minOccurs="0" ref="about"/>
124        </xs:sequence>
125      </xs:complexType>
126    </xs:element>
127    <xs:element name="cyl-transform">
128      <xs:complexType>
129        <xs:sequence>
130          <xs:element ref="translation"/>
131          <xs:element minOccurs="0" ref="rotation"/>
132          <xs:element minOccurs="0" ref="about"/>
133        </xs:sequence>
134      </xs:complexType>
135    </xs:element>
136    <xs:element name="cylinder">
137      <xs:complexType>
138        <xs:choice minOccurs="0" maxOccurs="unbounded">
139          <xs:element ref="radius"/>
140          <xs:choice>
141            <xs:choice>
142              <xs:element ref="length"/>
143              <xs:element ref="cyl-transform"/>
144            </xs:choice>
145            <xs:choice>
146              <xs:element ref="base1"/>
147              <xs:element ref="base2"/>
148              <xs:element minOccurs="0" maxOccurs="unbounded" ref="transform"/>
149            </xs:choice>
150          </xs:choice>
151          <xs:element ref="description"/>
152          <xs:element ref="vMaterial"/>
153        </xs:choice>
154        <xs:attributeGroup ref="name-attribute"/>
155      </xs:complexType>
156    </xs:element>
157    <xs:element name="ellipsoid">
158      <xs:complexType>
159        <xs:choice minOccurs="0" maxOccurs="unbounded">
160          <xs:element name="radius">
161            <xs:complexType>
162              <xs:simpleContent>
163                <xs:extension base="three-doubles-list">
164                  <xs:attributeGroup ref="length-attribute"/>
165                </xs:extension>
166              </xs:simpleContent>
167            </xs:complexType>
168          </xs:element>
169          <xs:element ref="vMaterial"/>
170          <xs:element ref="transform"/>
171        </xs:choice>
172        <xs:attributeGroup ref="name-attribute"/>
173      </xs:complexType>
174    </xs:element>
175    <xs:element name="faceSet">
176      <xs:complexType>
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"/>
183        </xs:choice>
184        <xs:attribute name="name" type="xs:token"/>
185      </xs:complexType>
186    </xs:element>
187    <xs:element name="facets" type="facets-content"/>
188    <xs:simpleType name="facets-content">
189      <xs:restriction base="integer-list"/>
190    </xs:simpleType>
191    <xs:element name="vertex_normals" type="vertex_normals-content"/>
192    <xs:complexType name="vertex_normals-content">
193      <xs:simpleContent>
194        <xs:restriction base="xs:anyType">
195          <xs:simpleType>
196            <xs:restriction>
197              <xs:simpleType>
198                <xs:list>
199                  <xs:simpleType>
200                    <xs:union>
201                      <xs:simpleType>
202                        <xs:union memberTypes="xs:double xs:double xs:double"/>
203                      </xs:simpleType>
204                      <xs:simpleType>
205                        <xs:union memberTypes="xs:double xs:double xs:double"/>
206                      </xs:simpleType>
207                      <xs:simpleType>
208                        <xs:union memberTypes="xs:double xs:double xs:double"/>
209                      </xs:simpleType>
210                      <xs:simpleType>
211                        <xs:union memberTypes="xs:double xs:double xs:double"/>
212                      </xs:simpleType>
213                    </xs:union>
214                  </xs:simpleType>
215                </xs:list>
216              </xs:simpleType>
217              <xs:minLength value="9"/>
218            </xs:restriction>
219          </xs:simpleType>
220          <xs:attributeGroup ref="length-attribute"/>
221        </xs:restriction>
222      </xs:simpleContent>
223    </xs:complexType>
224    <xs:element name="vertices" type="vertices-content"/>
225    <xs:complexType name="vertices-content">
226      <xs:simpleContent>
227        <xs:restriction base="xs:anyType">
228          <xs:simpleType>
229            <xs:restriction>
230              <xs:simpleType>
231                <xs:list>
232                  <xs:simpleType>
233                    <xs:union>
234                      <xs:simpleType>
235                        <xs:union memberTypes="xs:double xs:double xs:double"/>
236                      </xs:simpleType>
237                      <xs:simpleType>
238                        <xs:union memberTypes="xs:double xs:double xs:double"/>
239                      </xs:simpleType>
240                      <xs:simpleType>
241                        <xs:union memberTypes="xs:double xs:double xs:double"/>
242                      </xs:simpleType>
243                      <xs:simpleType>
244                        <xs:union memberTypes="xs:double xs:double xs:double"/>
245                      </xs:simpleType>
246                    </xs:union>
247                  </xs:simpleType>
248                </xs:list>
249              </xs:simpleType>
250              <xs:minLength value="9"/>
251            </xs:restriction>
252          </xs:simpleType>
253          <xs:attributeGroup ref="length-attribute"/>
254        </xs:restriction>
255      </xs:simpleContent>
256    </xs:complexType>
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"/>
263      </xs:choice>
264      <xs:attributeGroup ref="name-attribute"/>
265    </xs:complexType>
266    <xs:element name="spine" type="spine-content"/>
267    <xs:complexType name="spine-content">
268      <xs:simpleContent>
269        <xs:restriction base="xs:anyType">
270          <xs:simpleType>
271            <xs:restriction>
272              <xs:simpleType>
273                <xs:list>
274                  <xs:simpleType>
275                    <xs:union>
276                      <xs:simpleType>
277                        <xs:union memberTypes="xs:double xs:double xs:double"/>
278                      </xs:simpleType>
279                      <xs:simpleType>
280                        <xs:union memberTypes="xs:double xs:double xs:double"/>
281                      </xs:simpleType>
282                    </xs:union>
283                  </xs:simpleType>
284                </xs:list>
285              </xs:simpleType>
286              <xs:minLength value="6"/>
287            </xs:restriction>
288          </xs:simpleType>
289          <xs:attributeGroup ref="length-attribute"/>
290        </xs:restriction>
291      </xs:simpleContent>
292    </xs:complexType>
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"/>
298      </xs:choice>
299      <xs:attributeGroup ref="name-attribute"/>
300    </xs:complexType>
301    <xs:element name="position" type="position-content"/>
302    <xs:complexType name="position-content">
303      <xs:simpleContent>
304        <xs:extension base="three-doubles-list">
305          <xs:attributeGroup ref="length-attribute"/>
306        </xs:extension>
307      </xs:simpleContent>
308    </xs:complexType>
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"/>
313        <xs:choice>
314          <xs:element ref="position"/>
315          <xs:element ref="transform"/>
316        </xs:choice>
317      </xs:choice>
318      <xs:attributeGroup ref="name-attribute"/>
319    </xs:complexType>
320    <xs:element name="size" type="size-content"/>
321    <xs:complexType name="size-content">
322      <xs:simpleContent>
323        <xs:extension base="three-doubles-list">
324          <xs:attributeGroup ref="length-attribute"/>
325        </xs:extension>
326      </xs:simpleContent>
327    </xs:complexType>
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"/>
335      </xs:choice>
336      <xs:attributeGroup ref="name-attribute"/>
337    </xs:complexType>
338    <xs:element name="scale" type="scale-content"/>
339    <xs:simpleType name="scale-content">
340      <xs:restriction>
341        <xs:simpleType>
342          <xs:list>
343            <xs:simpleType>
344              <xs:union memberTypes="xs:double xs:double"/>
345            </xs:simpleType>
346          </xs:list>
347        </xs:simpleType>
348        <xs:minLength value="2"/>
349      </xs:restriction>
350    </xs:simpleType>
351    <xs:element name="crossSection" type="crossSection-content"/>
352    <xs:complexType name="crossSection-content">
353      <xs:simpleContent>
354        <xs:restriction base="xs:anyType">
355          <xs:simpleType>
356            <xs:restriction>
357              <xs:simpleType>
358                <xs:list>
359                  <xs:simpleType>
360                    <xs:union>
361                      <xs:simpleType>
362                        <xs:union memberTypes="xs:double xs:double xs:double"/>
363                      </xs:simpleType>
364                      <xs:simpleType>
365                        <xs:union memberTypes="xs:double xs:double xs:double"/>
366                      </xs:simpleType>
367                      <xs:simpleType>
368                        <xs:union memberTypes="xs:double xs:double xs:double"/>
369                      </xs:simpleType>
370                    </xs:union>
371                  </xs:simpleType>
372                </xs:list>
373              </xs:simpleType>
374              <xs:minLength value="9"/>
375            </xs:restriction>
376          </xs:simpleType>
377          <xs:attributeGroup ref="length-attribute"/>
378          <xs:attributeGroup ref="closed-attribute"/>
379        </xs:restriction>
380      </xs:simpleContent>
381    </xs:complexType>
382    <xs:attributeGroup name="closed-attribute">
383      <xs:attribute name="closed" use="required" type="xs:boolean"/>
384    </xs:attributeGroup>
385    <xs:group name="optional-content">
386      <xs:annotation>
387        <xs:documentation>global #############</xs:documentation>
388      </xs:annotation>
389      <xs:sequence>
390        <xs:choice minOccurs="0" maxOccurs="unbounded">
391          <xs:element ref="transform"/>
392          <xs:element ref="vMaterial"/>
393        </xs:choice>
394      </xs:sequence>
395    </xs:group>
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"/>
400    </xs:attributeGroup>
401    <xs:attributeGroup name="dimension-attribute">
402      <xs:attribute name="dimension" use="required">
403        <xs:simpleType>
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"/>
419          </xs:restriction>
420        </xs:simpleType>
421      </xs:attribute>
422    </xs:attributeGroup>
423    <xs:attributeGroup name="Length-attribute">
424      <xs:attribute name="Length" use="required">
425        <xs:simpleType>
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"/>
440          </xs:restriction>
441        </xs:simpleType>
442      </xs:attribute>
443    </xs:attributeGroup>
444    <xs:attributeGroup name="Time-attribute">
445      <xs:attribute name="Time" use="required">
446        <xs:simpleType>
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"/>
455          </xs:restriction>
456        </xs:simpleType>
457      </xs:attribute>
458    </xs:attributeGroup>
459    <xs:attributeGroup name="Force-attribute">
460      <xs:attribute name="Force" use="required">
461        <xs:simpleType>
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"/>
467          </xs:restriction>
468        </xs:simpleType>
469      </xs:attribute>
470    </xs:attributeGroup>
471    <xs:attributeGroup name="Mass-attribute">
472      <xs:attribute name="Mass" use="required">
473        <xs:simpleType>
474          <xs:restriction base="xs:token">
475            <xs:enumeration value="kilogram"/>
476            <xs:enumeration value="kg"/>
477            <xs:enumeration value="gram"/>
478          </xs:restriction>
479        </xs:simpleType>
480      </xs:attribute>
481    </xs:attributeGroup>
482    <xs:attributeGroup name="Dimensionless-attribute">
483      <xs:attribute name="Dimensionless" use="required">
484        <xs:simpleType>
485          <xs:restriction base="xs:token">
486            <xs:enumeration value="radian"/>
487            <xs:enumeration value="rad"/>
488          </xs:restriction>
489        </xs:simpleType>
490      </xs:attribute>
491    </xs:attributeGroup>
492    <xs:simpleType name="three-doubles-list">
493      <xs:restriction>
494        <xs:simpleType>
495          <xs:list>
496            <xs:simpleType>
497              <xs:union memberTypes="xs:double xs:double xs:double"/>
498            </xs:simpleType>
499          </xs:list>
500        </xs:simpleType>
501        <xs:length value="3"/>
502      </xs:restriction>
503    </xs:simpleType>
504    <xs:simpleType name="integer-list">
505      <xs:restriction>
506        <xs:simpleType>
507          <xs:list>
508            <xs:simpleType>
509              <xs:union memberTypes="xs:integer xs:integer"/>
510            </xs:simpleType>
511          </xs:list>
512        </xs:simpleType>
513        <xs:minLength value="1"/>
514      </xs:restriction>
515    </xs:simpleType>
516    <xs:attributeGroup name="name-attribute">
517      <xs:attribute name="name" use="required" type="xs:token"/>
518    </xs:attributeGroup>
519    <xs:attributeGroup name="description-attribute">
520      <xs:attribute name="description" use="required"/>
521    </xs:attributeGroup>
522    <xs:element name="vMaterial">
523      <xs:complexType>
524        <xs:sequence>
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"/>
533        </xs:sequence>
534      </xs:complexType>
535    </xs:element>
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"/>
544  </xs:schema>