<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="targetGeometry"> <xs:complexType> <xs:group minOccurs="0" maxOccurs="unbounded" ref="geometry-element"/> </xs:complexType> </xs:element> <xs:element name="geometryGroup" type="geometryGroup-content"/> <xs:complexType name="geometryGroup-content"> <xs:group maxOccurs="unbounded" ref="geometry-element"/> <xs:attribute name="name" use="required" type="xs:token"/> </xs:complexType> <xs:group name="geometry-element"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="component"/> <xs:element ref="geometryGroup"/> </xs:choice> </xs:sequence> </xs:group> <xs:element name="component"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" ref="description"/> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="cylinder"/> <xs:element ref="ellipsoid"/> <xs:element ref="faceSet"/> <xs:element ref="tube"/> <xs:element ref="sphere"/> <xs:element ref="box"/> <xs:element ref="extrusion"/> </xs:choice> </xs:sequence> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> </xs:element> <xs:element name="translation"> <xs:complexType> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="rotation"> <xs:complexType> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="about"> <xs:complexType> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="length"> <xs:complexType> <xs:simpleContent> <xs:restriction base="xs:anyType"> <xs:simpleType> <xs:restriction base="xs:double"> <xs:minExclusive value="0"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="radius"> <xs:complexType> <xs:simpleContent> <xs:restriction base="xs:anyType"> <xs:simpleType> <xs:restriction base="xs:double"> <xs:minExclusive value="0"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:restriction> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="base1"> <xs:complexType> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="base2"> <xs:complexType> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="transform"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" ref="translation"/> <xs:element minOccurs="0" ref="rotation"/> <xs:element minOccurs="0" ref="about"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="cyl-transform"> <xs:complexType> <xs:sequence> <xs:element ref="translation"/> <xs:element minOccurs="0" ref="rotation"/> <xs:element minOccurs="0" ref="about"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="cylinder"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="radius"/> <xs:choice> <xs:choice> <xs:element ref="length"/> <xs:element ref="cyl-transform"/> </xs:choice> <xs:choice> <xs:element ref="base1"/> <xs:element ref="base2"/> <xs:element minOccurs="0" maxOccurs="unbounded" ref="transform"/> </xs:choice> </xs:choice> <xs:element ref="description"/> <xs:element ref="vMaterial"/> </xs:choice> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> </xs:element> <xs:element name="ellipsoid"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="radius"> <xs:complexType> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element ref="vMaterial"/> <xs:element ref="transform"/> </xs:choice> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> </xs:element> <xs:element name="faceSet"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="description"/> <xs:element ref="vertex_normals"/> <xs:element ref="vertices"/> <xs:element ref="facets"/> <xs:group ref="optional-content"/> </xs:choice> <xs:attribute name="name" type="xs:token"/> </xs:complexType> </xs:element> <xs:element name="facets" type="facets-content"/> <xs:simpleType name="facets-content"> <xs:restriction base="integer-list"/> </xs:simpleType> <xs:element name="vertex_normals" type="vertex_normals-content"/> <xs:complexType name="vertex_normals-content"> <xs:simpleContent> <xs:restriction base="xs:anyType"> <xs:simpleType> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> </xs:union> </xs:simpleType> </xs:list> </xs:simpleType> <xs:minLength value="9"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup ref="length-attribute"/> </xs:restriction> </xs:simpleContent> </xs:complexType> <xs:element name="vertices" type="vertices-content"/> <xs:complexType name="vertices-content"> <xs:simpleContent> <xs:restriction base="xs:anyType"> <xs:simpleType> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> </xs:union> </xs:simpleType> </xs:list> </xs:simpleType> <xs:minLength value="9"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup ref="length-attribute"/> </xs:restriction> </xs:simpleContent> </xs:complexType> <xs:element name="tube" type="tube-content"/> <xs:complexType name="tube-content"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="spine"/> <xs:element ref="radius"/> <xs:group ref="optional-content"/> </xs:choice> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> <xs:element name="spine" type="spine-content"/> <xs:complexType name="spine-content"> <xs:simpleContent> <xs:restriction base="xs:anyType"> <xs:simpleType> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> </xs:union> </xs:simpleType> </xs:list> </xs:simpleType> <xs:minLength value="6"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup ref="length-attribute"/> </xs:restriction> </xs:simpleContent> </xs:complexType> <xs:element name="sphere" type="sphere-content"/> <xs:complexType name="sphere-content"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="radius"/> <xs:element ref="position"/> </xs:choice> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> <xs:element name="position" type="position-content"/> <xs:complexType name="position-content"> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name="box" type="box-content"/> <xs:complexType name="box-content"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="size"/> <xs:choice> <xs:element ref="position"/> <xs:element ref="transform"/> </xs:choice> </xs:choice> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> <xs:element name="size" type="size-content"/> <xs:complexType name="size-content"> <xs:simpleContent> <xs:extension base="three-doubles-list"> <xs:attributeGroup ref="length-attribute"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name="extrusion" type="extrusion-content"/> <xs:complexType name="extrusion-content"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="spine"/> <xs:element ref="scale"/> <xs:element ref="crossSection"/> <xs:group ref="optional-content"/> </xs:choice> <xs:attributeGroup ref="name-attribute"/> </xs:complexType> <xs:element name="scale" type="scale-content"/> <xs:simpleType name="scale-content"> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union memberTypes="xs:double xs:double"/> </xs:simpleType> </xs:list> </xs:simpleType> <xs:minLength value="2"/> </xs:restriction> </xs:simpleType> <xs:element name="crossSection" type="crossSection-content"/> <xs:complexType name="crossSection-content"> <xs:simpleContent> <xs:restriction base="xs:anyType"> <xs:simpleType> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> </xs:union> </xs:simpleType> </xs:list> </xs:simpleType> <xs:minLength value="9"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup ref="length-attribute"/> <xs:attributeGroup ref="closed-attribute"/> </xs:restriction> </xs:simpleContent> </xs:complexType> <xs:attributeGroup name="closed-attribute"> <xs:attribute name="closed" use="required" type="xs:boolean"/> </xs:attributeGroup> <xs:group name="optional-content"> <xs:annotation> <xs:documentation>global #############</xs:documentation> </xs:annotation> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="transform"/> <xs:element ref="vMaterial"/> </xs:choice> </xs:sequence> </xs:group> <xs:element name="description" type="xs:string"/> <xs:attributeGroup name="length-attribute"> <xs:attributeGroup ref="dimension-attribute"/> <xs:attributeGroup ref="Length-attribute"/> </xs:attributeGroup> <xs:attributeGroup name="dimension-attribute"> <xs:attribute name="dimension" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="L"/> <xs:enumeration value="F"/> <xs:enumeration value="M"/> <xs:enumeration value="T"/> <xs:enumeration value="F/L"/> <xs:enumeration value="F/LL"/> <xs:enumeration value="F/LLL"/> <xs:enumeration value="F/T"/> <xs:enumeration value="F/TT"/> <xs:enumeration value="F/TTT"/> <xs:enumeration value="L/T"/> <xs:enumeration value="L/TT"/> <xs:enumeration value="LLLLL"/> <xs:enumeration value="D/D"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:attributeGroup name="Length-attribute"> <xs:attribute name="Length" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="meter"/> <xs:enumeration value="m"/> <xs:enumeration value="foot"/> <xs:enumeration value="f"/> <xs:enumeration value="inch"/> <xs:enumeration value="in"/> <xs:enumeration value="centimeter"/> <xs:enumeration value="cm"/> <xs:enumeration value="decimeter"/> <xs:enumeration value="dm"/> <xs:enumeration value="millimeter"/> <xs:enumeration value="mm"/> <xs:enumeration value="degree"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:attributeGroup name="Time-attribute"> <xs:attribute name="Time" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="second"/> <xs:enumeration value="s"/> <xs:enumeration value="sec"/> <xs:enumeration value="minute"/> <xs:enumeration value="min"/> <xs:enumeration value="hour"/> <xs:enumeration value="hr"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:attributeGroup name="Force-attribute"> <xs:attribute name="Force" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="newton"/> <xs:enumeration value="n"/> <xs:enumeration value="pound"/> <xs:enumeration value="grain"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:attributeGroup name="Mass-attribute"> <xs:attribute name="Mass" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="kilogram"/> <xs:enumeration value="kg"/> <xs:enumeration value="gram"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:attributeGroup name="Dimensionless-attribute"> <xs:attribute name="Dimensionless" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="radian"/> <xs:enumeration value="rad"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:simpleType name="three-doubles-list"> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union memberTypes="xs:double xs:double xs:double"/> </xs:simpleType> </xs:list> </xs:simpleType> <xs:length value="3"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="integer-list"> <xs:restriction> <xs:simpleType> <xs:list> <xs:simpleType> <xs:union memberTypes="xs:integer xs:integer"/> </xs:simpleType> </xs:list> </xs:simpleType> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType> <xs:attributeGroup name="name-attribute"> <xs:attribute name="name" use="required" type="xs:token"/> </xs:attributeGroup> <xs:attributeGroup name="description-attribute"> <xs:attribute name="description" use="required"/> </xs:attributeGroup> <xs:element name="vMaterial"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" ref="diffuseColor"/> <xs:element minOccurs="0" ref="emissiveColor"/> <xs:element minOccurs="0" ref="specularColor"/> <xs:element minOccurs="0" ref="shininess"/> <xs:element minOccurs="0" ref="transparency"/> <xs:element minOccurs="0" ref="ambientIntensity"/> <xs:element minOccurs="0" ref="DEF"/> <xs:element minOccurs="0" ref="USE"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="diffuseColor" type="xs:string"/> <xs:element name="emissiveColor" type="xs:string"/> <xs:element name="specularColor" type="xs:string"/> <xs:element name="shininess" type="xs:string"/> <xs:element name="transparency" type="xs:string"/> <xs:element name="ambientIntensity" type="xs:string"/> <xs:element name="DEF" type="xs:string"/> <xs:element name="USE" type="xs:string"/> </xs:schema>