<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.2 U (http://www.xmlspy.com) by Radovan Chytracek (private) -->
<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:include schemaLocation="gdml_simple_define.xsd"/>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:complexType name="SolidType">
  <xs:annotation>
   <xs:documentation>
        Base solid type
   </xs:documentation>
  </xs:annotation>
  <xs:attribute name="lunit" type="xs:string" default="mm">
   <xs:annotation>
    <xs:documentation>
          Length unit of all dimensions used for this instance of solid
    </xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:attribute name="aunit" type="xs:string" default="radian">
   <xs:annotation>
    <xs:documentation>
          Angle unit of angles used in definition of this solid
    </xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:attribute name="name" type="xs:ID" use="required"/>
 </xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:complexType name="BooleanSolidType">
  <xs:annotation>
   <xs:documentation>
        Base type for boolean solids
   </xs:documentation>
  </xs:annotation>
  <xs:complexContent>
   <xs:extension base="SolidType">
    <xs:sequence>
     <xs:element name="first" type="ReferenceType"/>
     <xs:element name="second" type="ReferenceType"/>
     <xs:choice minOccurs="0">
      <xs:element name="position" type="positionType"/>
      <xs:element name="positionref" type="ReferenceType"/>
     </xs:choice>
     <xs:choice minOccurs="0">
      <xs:element name="rotation" type="rotationType"/>
      <xs:element name="rotationref" type="ReferenceType"/>
     </xs:choice>
    </xs:sequence>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!--
 <xs:element name="BooleanSolid" abstract="true">
  <xs:annotation>
   <xs:documentation>
        Abstract element for boolean solids substitution group
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="BooleanSolidType"/>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
-->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="Solid" type="SolidType" abstract="true">
  <xs:annotation>
   <xs:documentation>
        Abstract element for all solids substitution group
   </xs:documentation>
  </xs:annotation>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="solids">
  <xs:annotation>
   <xs:documentation>
        Solids definitions block
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:sequence>
    <xs:element name="define" type="defineType" minOccurs="0">
     <xs:annotation>
      <xs:documentation>
        Definitions of constants and expressions to be used for solids'
        dimensions and transformations
        In this version these become part of the global scope.
      </xs:documentation>
     </xs:annotation>
    </xs:element>
    <xs:element ref="Solid" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="union" type="BooleanSolidType" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>
        Exported boolean union of two solids
   </xs:documentation>
  </xs:annotation>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="subtraction" type="BooleanSolidType" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>
        Exported boolean subtraction of two solids
   </xs:documentation>
  </xs:annotation>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="intersection" type="BooleanSolidType" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>
        Exported boolean intersectioin of two solids
   </xs:documentation>
  </xs:annotation>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="box" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>
        CSG box solid described by 3 dimensions of x, y, and z
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="x" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="y" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="z" type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="sphere" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>        CSG sphere or spherical shell segment solid described by
        rmin        inner radius
        rmax        outer radius
        startphi    starting angle of the segment in radians(0 &lt;= phi &lt;= 2*PI)
        deltaphi    delta angle of the segment in radians
        starttheta  starting angle of the segment in radians(0 &lt;= theta &lt;= PI)
        deltatheta  delta angle of the segment in radians
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="rmin" type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="starttheta" type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="deltatheta" type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="tube" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>        CSG tube or tube segement solid described by
        rmin      Inner radius
        rmax      Outer radius
        z         length in z
        startphi  The starting phi angle in radians, adjusted such that
                  (startphi+deltaphi &lt;= 2PI, startphi &gt; -2PI)
        deltaphi  Delta angle of the segment in radians
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="z" type="ExpressionOrIDREFType"/>
     <xs:attribute name="rmin" type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="rmax" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="cone" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>        CSG cone or cone segment described by
        rmin1    inside radius at  z/2
        rmin2    inside radius at  z/2
        rmax1    outside radius at z/2
        rmax2    outside radius at z/2
        z        length in z
        startphi starting angle of the segment in radians
        deltaphi delta angle of the segment in radians
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="z"        type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="rmin1"    type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="rmin2"    type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="rmax1"    type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="rmax2"    type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="startphi" type="ExpressionOrIDREFType" default="0.0"/>
     <xs:attribute name="deltaphi" type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="para" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>        CSG parallelepiped solid is described by
        x, y, z  length in x,y,z
        alpha    Angle formed by the y axis and by the plane joining the centre of the faces
                 G4Parallel to the z-x plane at -y and +y
        theta    Polar angle of the line joining the centres of the faces at -z and +z in z
        phi      Azimuthal angle of the line joining the centres of the faces at -z and +z in z
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="x"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="y"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="z"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="alpha" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="theta" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="phi"   type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="trd" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>        CSG trapezoid solid with varying x and y dimensions along z axis
        x1 Length along x at the surface positioned at -z
        x2 Length along x at the surface positioned at +z
        y1 Length along y at the surface positioned at -z
        y2 Length along y at the surface positioned at +z
        z  Length along z axis
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="x1" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="x2" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="y1" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="y2" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="z"  type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
 <xs:element name="trap" substitutionGroup="Solid">
  <xs:annotation>
   <xs:documentation>        CSG general trapezoid solid is described by
        z      Length along the z-axis
        theta  Polar angle of the line joining the centres of the faces at -/+z
        phi    Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
        y1     Length along y of the face at -z
        x1     Length along x of the side at y = -y1 of the face at -z
        x2     Length along x of the side at y = +y1 of the face at -z
        alp1   Angle with respect to the y axis from the centre of the side at y =- y1 to the centre at y = +y1 of the face at -z
        y2     Length along y of the face at +z
        x3     Length along x of the side at y = -y2 of the face at +z
        x4     Length along x of the side at y = +y2 of the face at +z
        alp2   Angle with respect to the y axis from the centre of the side at y = -y2 to the centre at y = +y2 of the face at +z
   </xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:complexContent>
    <xs:extension base="SolidType">
     <xs:attribute name="z"      type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="theta"  type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="phi"    type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="y1"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="x1"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="x2"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="alpha1" type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="y2"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="x3"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="x4"     type="ExpressionOrIDREFType" use="required"/>
     <xs:attribute name="alpha2" type="ExpressionOrIDREFType" use="required"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>
 </xs:element>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
</xs:schema>