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> 545