<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:gdml="http://cern.ch/2001/Schemas/GDML"
           elementFormDefault="unqualified"
           attributeFormDefault="unqualified"
           version="1.0">
 <xs:include schemaLocation="gdml_simple_core.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="define" type="defineType">
  <xs:annotation>
   <xs:documentation>
        Definition block of global named constants, quantitties, expressions,
        positions and rotations which may be used by name or
        by a reference in scope of the current document
   </xs:documentation>
  </xs:annotation>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:complexType name="defineType">
  <xs:annotation>
   <xs:documentation>
        The global complex type is defined in order to reuse this defintion
        in derived schemas
   </xs:documentation>
  </xs:annotation>
    <!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
  <xs:choice maxOccurs="unbounded">
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:element name="constant" type="IdentifiableConstantType"
                  minOccurs="0" maxOccurs="unbounded">
    <xs:annotation>
     <xs:documentation>Named constant</xs:documentation>
    </xs:annotation>
   </xs:element>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:element name="quantity" type="IdentifiableQuantityType"
                  minOccurs="0" maxOccurs="unbounded">
    <xs:annotation>
     <xs:documentation>Named quantity</xs:documentation>
    </xs:annotation>
   </xs:element>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:element name="expression" type="IdentifiableExpressionType"
                  minOccurs="0" maxOccurs="unbounded">
    <xs:annotation>
     <xs:documentation>
            Named expression, may contain other named constants,
            quantities and expressions
     </xs:documentation>
    </xs:annotation>
   </xs:element>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:element name="position" type="positionType"
                  minOccurs="0" maxOccurs="unbounded">
    <xs:annotation>
     <xs:documentation>
            Named cartesian position, default unit mm
     </xs:documentation>
    </xs:annotation>
   </xs:element>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
   <xs:element name="rotation" type="rotationType"
                  minOccurs="0" maxOccurs="unbounded">
    <xs:annotation>
     <xs:documentation>
            Named cartesian rotation, default unit radian
     </xs:documentation>
    </xs:annotation>
   </xs:element>
      <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
  </xs:choice>
    <!-- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -->
 </xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:complexType name="positionType">
  <xs:complexContent>
   <xs:restriction base="IdentifiableQuantityVectorType">
    <xs:attribute name="unit" default="mm"/>
    <xs:attribute name="type" default="cartesian"/>
   </xs:restriction>
  </xs:complexContent>
 </xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:complexType name="rotationType">
  <xs:complexContent>
   <xs:restriction base="IdentifiableQuantityVectorType">
    <xs:attribute name="unit" default="radian"/>
    <xs:attribute name="type" default="cartesian"/>
   </xs:restriction>
  </xs:complexContent>
 </xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>