﻿<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    vc:minVersion="1.1" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="tps"
    xmlns:tps="tps">

    <xs:defaultOpenContent mode="interleave">
        <xs:any processContents="lax"/>
    </xs:defaultOpenContent>

    <xs:simpleType name="stateType">
        <xs:annotation>
            <xs:documentation>The state of an element (can be existing, deleted or undefined)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="existing"/>
            <xs:enumeration value="deleted"/>
            <xs:enumeration value="undefined"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="perpendicularOffsetSubType">
        <xs:annotation>
            <xs:documentation>The subtype of the single measurement inside a perpendicular offset (can be single, first or second)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="single"/>
            <xs:enumeration value="first"/>
            <xs:enumeration value="second"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="colorType">
        <xs:annotation>
            <xs:documentation>A color, in the hexadecimal format (for example, ffffff for white)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:hexBinary">
            <xs:minLength value="3"/>
            <xs:maxLength value="3"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="angleType">
        <xs:annotation>
            <xs:documentation>The angle units (can be radians, gons, mils, deg or dddmmsss)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="radians"/>
            <xs:enumeration value="grad_gons"/>
            <xs:enumeration value="mils"/>
            <xs:enumeration value="dec_deg"/>
            <xs:enumeration value="dddmmsss"/>
            <xs:enumeration value="arcsec"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="guidType">
        <xs:annotation>
            <xs:documentation>The representation of a GUID, generally the id of an element.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern
                value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}"
            />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="distanceType">
        <xs:annotation>
            <xs:documentation>The distance unit (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="meters"/>
            <xs:enumeration value="us_feet"/>
            <xs:enumeration value="int_feet"/>
            <xs:enumeration value="us_feet_inches"/>
            <xs:enumeration value="int_feet_inches"/>
            <xs:enumeration value="us_chains"/>
            <xs:enumeration value="int_chains"/>
            <xs:enumeration value="mile"/>
            <xs:enumeration value="int_inches"/>
            <xs:enumeration value="us_inches"/>
            <xs:enumeration value="millimeters"/>
            <xs:enumeration value="centimeters"/>
            <xs:enumeration value="kilometers"/>
            <xs:enumeration value="microinches"/>
            <xs:enumeration value="mils"/>
            <xs:enumeration value="int_yards"/>
            <xs:enumeration value="us_yards"/>
            <xs:enumeration value="angstroms"/>
            <xs:enumeration value="nanometers"/>
            <xs:enumeration value="microns"/>
            <xs:enumeration value="decimeters"/>
            <xs:enumeration value="decameters"/>
            <xs:enumeration value="hectometers"/>
            <xs:enumeration value="gigameters"/>
            <xs:enumeration value="astronomical_units"/>
            <xs:enumeration value="light_years"/>
            <xs:enumeration value="parsecs"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="volumeType">
        <xs:annotation>
            <xs:documentation>The volume units (can be cubic_meters, cubic_us_feet, cubic_int_feet, cubic_us_feet_inches, cubic_int_feet_inches, cubic_us_chains, cubic_int_chains, cubic_mile, cubic_int_inches, cubic_us_inches, cubic_millimeters, cubic_centimeters, cubic_kilometers, cubic_int_yards or cubic_us_yards)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="cubic_meters"/>
            <xs:enumeration value="cubic_us_feet"/>
            <xs:enumeration value="cubic_int_feet"/>
            <xs:enumeration value="cubic_us_feet_inches"/>
            <xs:enumeration value="cubic_int_feet_inches"/>
            <xs:enumeration value="cubic_us_chains"/>
            <xs:enumeration value="cubic_int_chains"/>
            <xs:enumeration value="cubic_mile"/>
            <xs:enumeration value="cubic_int_inches"/>
            <xs:enumeration value="cubic_us_inches"/>
            <xs:enumeration value="cubic_millimeters"/>
            <xs:enumeration value="cubic_centimeters"/>
            <xs:enumeration value="cubic_kilometers"/>
            <xs:enumeration value="cubic_int_yards"/>
            <xs:enumeration value="cubic_us_yards"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="dimensionType">
        <xs:annotation>
            <xs:documentation>The material dimension type (can be count, length, area or volume)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="count"/>
            <xs:enumeration value="length"/>
            <xs:enumeration value="area"/>
            <xs:enumeration value="volume"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="temperatureType">
        <xs:annotation>
            <xs:documentation>The temperature units (can be fahrenheit or celsius)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="fahrenheit"/>
            <xs:enumeration value="celsius"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="pressureType">
        <xs:annotation>
            <xs:documentation>The pressure units (can be mmhg, hpa, inhg, mbar)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="mmhg"/>
            <xs:enumeration value="hpa"/>
            <xs:enumeration value="inhg"/>
            <xs:enumeration value="mbar"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="scaleType">
        <xs:annotation>
            <xs:documentation>The scale units (can be decimal, ppm, ppb, denominator)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="decimal"/>
            <xs:enumeration value="ppm"/>
            <xs:enumeration value="ppb"/>
            <xs:enumeration value="denominator"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="measureUnitsType">
        <xs:annotation>
            <xs:documentation>The type of value (can be distance, angle, scale, temperature, pressure)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="distance"/>
            <xs:enumeration value="angle"/>
            <xs:enumeration value="scale"/>
            <xs:enumeration value="temperature"/>
            <xs:enumeration value="pressure"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="clockwiseType">
        <xs:annotation>
            <xs:documentation>The turn of a horizontal element (can be clockwise or counterclockwise)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="cw"/>
            <xs:enumeration value="ccw"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="sideType">
        <xs:annotation>
            <xs:documentation>A side, can be left or right</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="left"/>
            <xs:enumeration value="right"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="coordsXYType">
        <xs:annotation>
            <xs:documentation>A XY Position is defined by X coordinate and Y coordinate</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="X" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The X component</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Y" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Y component</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="position1DType">
        <xs:annotation>
            <xs:documentation>A position identified by only one coordinate</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:double"/>
    </xs:simpleType>
    <xs:complexType name="position2DType">
        <xs:annotation>
            <xs:documentation>A 2D Position, defined by X and Y coordinates</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="XY" type="tps:coordsXYType">
                <xs:annotation>
                    <xs:documentation>The XY Position is defined by X coordinate and Y coordinate</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="namedPosition2DType">
        <xs:annotation>
            <xs:documentation>A named 2D position is a 2D position with a name</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:position2DType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the 2D position</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="coordsXYZType">
        <xs:annotation>
            <xs:documentation>A XYZ position is identified by X, Y and Z coordinates</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="X" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The X component of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Y" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Y component of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Z" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Z component of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="coordsNEHType">
        <xs:annotation>
            <xs:documentation>A NEH position is identified by North, East and Height</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="North" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The north of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="East" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The east of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Height" type="xs:double" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The position height</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="coordsBLHType">
        <xs:annotation>
            <xs:documentation>A BLH position is identified by Latitude, Longitude and Height</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Latitude" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The latitude of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Longitude" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The longitude of the position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Height" type="xs:double" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The position height</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:group name="position3DCoords">
        <xs:annotation>
            <xs:documentation>A 3D coord position can be BLH, NEH or XYZ</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice>
                <xs:element name="BLH" type="tps:coordsBLHType">
                    <xs:annotation>
                        <xs:documentation>The position is identified by Latitude, Longitude and Height</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="NEH" type="tps:coordsNEHType">
                    <xs:annotation>
                        <xs:documentation>The position is identified by North, East and Height</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="XYZ" type="tps:coordsXYZType">
                    <xs:annotation>
                        <xs:documentation>The position is identified by X, Y and Z</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="positionType">
        <xs:annotation>
            <xs:documentation>A position can be BLH, NEH, XYZ, only Height or undefined (empty)</xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs="0">
            <xs:group ref="tps:position3DCoords">
                <xs:annotation>
                    <xs:documentation>A 3D position can be BLH, NEH or XYZ</xs:documentation>
                </xs:annotation>
            </xs:group>
            <xs:sequence>
                <xs:element name="Height" type="tps:position1DType">
                    <xs:annotation>
                        <xs:documentation>Only vertical position is defined</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
        </xs:choice>
    </xs:complexType>
    <xs:complexType name="coordsXYZWithBulgeType">
        <xs:annotation>
            <xs:documentation>Defined by a XYZ position and a bulge</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:coordsXYZType">
                <xs:sequence>
                    <xs:element name="Bulge" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The bulge of the position, used to handle curves</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="actionObjectType">
        <xs:annotation>
            <xs:documentation>Definition of id and idRef of the element, used both in MAXML structure and in Transaction structure (see attributes for further details). Each element must define either id or idref, but not both.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="id" type="xs:ID">
            <xs:annotation>
                <xs:documentation>The id of the element. In Data structure it must be always defined and it can be referenced by an other element that uses this element. In Transaction structure it must be defined by a 'created' action (not defined in the other actions)</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="idRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>The reference to the id of this element. In MAXML structure is not defined. In Transaction structure it must be defined by 'modified' and 'deleted' action (not defined in 'created' action)</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:simpleType name="pointAttrType">
        <xs:annotation>
            <xs:documentation>A point flag (can be unknown, manual, topo, auto-topo, control, staked and checkpoint)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="unknown"/>
            <xs:enumeration value="manual"/>
            <xs:enumeration value="topo"/>
            <xs:enumeration value="auto_topo"/>
            <xs:enumeration value="control"/>
            <xs:enumeration value="staked"/>
            <xs:enumeration value="checkpoint"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="pointAttrControlType">
        <xs:annotation>
            <xs:documentation>A point control type (can be both, horizontal_only or vertical_only)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="both"/>
            <xs:enumeration value="horizontal_only"/>
            <xs:enumeration value="vertical_only"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="primaryHeightType">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="g"/>
            <xs:enumeration value="e"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="roadStringCategoryType">
        <xs:annotation>
            <xs:documentation>A road string type (can be unknown or centerline)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="unknown"/>
            <xs:enumeration value="centerline"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="stationType">
        <xs:annotation>
            <xs:documentation>A station is made by a 3D position, flags and parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The name of the Station. Some elements use unnamed Stations, so it's not mandatory</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Position" type="tps:positionType">
                <xs:annotation>
                    <xs:documentation>Represents the position of the Station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="unknown" name="PointFlags">
                <xs:annotation>
                    <xs:documentation>Represents a list of point flags (can be unknown, manual, topo, auto-topo, control, staked and checkpoint)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:annotation>
                        <xs:documentation>A list of point flags (can be unknown, manual, topo, auto-topo, control, staked and checkpoint)</xs:documentation>
                    </xs:annotation>
                    <xs:list itemType="tps:pointAttrType"/>
                </xs:simpleType>
            </xs:element>
            <xs:element name="TimeStamp" type="xs:dateTime" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The creation datetime of the Station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Notes" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The textual note of the Station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="GeoidHeight" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The geoid height of the Station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="both" name="PointAttrControlType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A point control type (can be both, horizontal_only or vertical_only). Ignored if PointFlags has no 'control' flag.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:annotation>
                        <xs:documentation>A point control type (can be both, horizontal_only or vertical_only)</xs:documentation>
                    </xs:annotation>
                    <xs:list itemType="tps:pointAttrControlType"/>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID">
            <xs:annotation>
                <xs:documentation>It's the station id, it can be referenced by other elements</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute default="0" name="bulge" type="xs:double">
            <xs:annotation>
                <xs:documentation>The bulge of the Station, used to represent curves</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ph" type="tps:primaryHeightType">
            <xs:annotation>
                <xs:documentation>The Primary Height flag, used to determine if the station main height is the Geoidal Height (g) or the Ellipsoidal Height (e). The height which is not primary will be recomputed.
If the flag is not present, no height will be recomputed (Primary Height Unknown).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="offsetStationType">
        <xs:annotation>
            <xs:documentation>An Offset station is defined by a reference Station and a sequence of other stations defined by offsets</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:stationType">
                <xs:sequence>
                    <xs:element name="HI" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The instrument height</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="HR" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The rod height</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="BacksightPoint" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The backsight point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="BacksightAzimut" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The backsight azimuth</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="OccupationPoint" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the occupation point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="3" minOccurs="3" name="Delta" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The values for north delta, east delta and height delta</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="OffsetDirection" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The offset direction</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="OffsetDistance" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The offset horizontal distance</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AlignChainage" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The chainage of the alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AlignEquationChainage" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The alignment station equation chainage</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AlignOffset" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The offset of the alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AlignDelta" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The vertical delta of the alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="UseInAverageHoriz" type="xs:boolean" default="false"
                        minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The station horizontal coordinates used in average to calculate point horizontal coordinates</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="UseInAverageVert" type="xs:boolean" default="false"
                        minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The station vertical coordinates used in average to calculate point vertical coordinates</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="photoNoteType">
        <xs:annotation>
            <xs:documentation>Represents the information about a photo</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="FileName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The path of the photo image file (relative path, inside 'filename'.maxml data folder)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Azimuth" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The azimuth angle of the photo</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TiltX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The X component of the tilt of the photo</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TiltY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Y component of the tilt of the photo</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="pointDrawPropertiesType">
        <xs:annotation>
            <xs:documentation>Represents the properties used to draw points</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="Color" type="tps:colorType" default="000000">
                <xs:annotation>
                    <xs:documentation>The color used to draw this element</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="ColorByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the color is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="MarkStyle" default="dot">
                <xs:annotation>
                    <xs:documentation>The mark style used to draw this element (can be dot, filled rectangle, filled diamond, filled circle, filled triangle, rectangle, diamond, circle, triangle, cross, tree, small cross, upside triangle, filled upside triangle, x-cross or none)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="dot"/>
                        <xs:enumeration value="filled_rect"/>
                        <xs:enumeration value="filled_diamond"/>
                        <xs:enumeration value="filled_circle"/>
                        <xs:enumeration value="filled_triangle"/>
                        <xs:enumeration value="rect"/>
                        <xs:enumeration value="diamond"/>
                        <xs:enumeration value="circle"/>
                        <xs:enumeration value="triangle"/>
                        <xs:enumeration value="cross"/>
                        <xs:enumeration value="tree"/>
                        <xs:enumeration value="small_cross"/>
                        <xs:enumeration value="upside_triangle"/>
                        <xs:enumeration value="filled_upside_triangle"/>
                        <xs:enumeration value="xcross"/>
                        <xs:enumeration value="star_1"/>
                        <xs:enumeration value="star_2"/>
                        <xs:enumeration value="pin"/>
                        <xs:enumeration value="rectangle_dot"/>
                        <xs:enumeration value="rectangle_plus"/>
                        <xs:enumeration value="rectangle_cross"/>
                        <xs:enumeration value="rectangle_pin"/>
                        <xs:enumeration value="rectangle_circle"/>
                        <xs:enumeration value="rectangle_circle_dot"/>
                        <xs:enumeration value="rectangle_circle_cross"/>
                        <xs:enumeration value="rectangle_circle_plus"/>
                        <xs:enumeration value="rectangle_circle_pin"/>
                        <xs:enumeration value="diamond_cross"/>
                        <xs:enumeration value="circle_dot"/>
                        <xs:enumeration value="circle_cross"/>
                        <xs:enumeration value="circle_plus"/>
                        <xs:enumeration value="circle_pin"/>
                        <xs:enumeration value="circle_circle"/>
                        <xs:enumeration value="circle_filled_circle"/>
                        <xs:enumeration value="custom_mark"/>
                        <xs:enumeration value="none"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="MarkStyleByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the mark style is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="CustomSymbol">
                <xs:annotation>
                    <xs:documentation>DEPRECATED (Use CustomSymbols instead). An optional reference to a customized point symbol</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="ColorUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="MarkStyleUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="CustomSymbols">
                <xs:annotation>
                    <xs:documentation>A collection of references to customized point symbols</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="CustomSymbol" maxOccurs="unbounded">
                            <xs:annotation>
                                <xs:documentation>Information about a customized point symbol</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="CustomSymbolRef">
                                        <xs:annotation>
                                            <xs:documentation>A reference to a customized point symbol.
The idRef attribute is strictly required only if definedBy is individual.</xs:documentation>
                                        </xs:annotation>
                                        <xs:complexType>
                                            <xs:attribute name="idRef" type="xs:IDREF"/>
                                            <xs:attribute default="individual" name="definedBy">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:NMTOKEN">
                                                  <xs:enumeration value="individual"/>
                                                  <xs:enumeration value="code"/>
                                                  <xs:enumeration value="layer"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:attribute>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element default="0.0" minOccurs="0"
                                        name="CustomSymbolRotation" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>The rotation of the Custom Symbol. It's counter-clockwise, with zero on x-axis (east).</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element default="1.0" minOccurs="0" name="CustomSymbolScale"
                                        type="xs:double"/>
                                    <xs:element minOccurs="0" name="CustomSymbolScaleY"
                                        type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>If not defined, CustomSymbolScale is applied to both x and y axis.
If defined, CustomSymbolScale is applied to x axis only.</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element minOccurs="0" name="CustomSymbolScaleZ"
                                        type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>Currently unused
</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="CustomSymbolsByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the custom symbols are taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="CustomSymbolsByCode" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the custom symbols are taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="ColorByBlock" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the color is taken from the block. ColorByBlock and ColorByLayer are mutually exclusive.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="lineDrawPropertiesType">
        <xs:annotation>
            <xs:documentation>Represents the properties used to draw lines</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="Color" type="tps:colorType" default="000000">
                <xs:annotation>
                    <xs:documentation>The color used to draw this element</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="ColorByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the color is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="DashStyle" default="solid">
                <xs:annotation>
                    <xs:documentation>The dash style used to draw this line (it can be solid, dash, dot, dash-dot or dash-dot-dot)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="solid"/>
                        <xs:enumeration value="dash"/>
                        <xs:enumeration value="dot"/>
                        <xs:enumeration value="dash_dot"/>
                        <xs:enumeration value="dash_dot_dot"/>
                        <xs:enumeration value="long_dash"/>
                        <xs:enumeration value="center"/>
                        <xs:enumeration value="phantom"/>
                        <xs:enumeration value="phantom2"/>
                        <xs:enumeration value="phantom3"/>
                        <xs:enumeration value="custom_line"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="DashStyleByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the dash style is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Width" type="xs:integer" default="1">
                <xs:annotation>
                    <xs:documentation>The width of the line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="WidthByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the width is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="CustomLineStyle">
                <xs:annotation>
                    <xs:documentation>An optional reference to a customized line style</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="WidthInMm" type="xs:double"/>
            <xs:element default="false" minOccurs="0" name="ColorUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="DashStyleUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="WidthUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="1.0" minOccurs="0" name="CustomLineStyleScale" type="xs:double"/>
            <xs:element default="false" minOccurs="0" name="ColorByBlock" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the color is taken from the block. ColorByBlock and ColorByLayer are mutually exclusive.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="DashStyleByBlock" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the dash style is taken from the block. DashStyleByBlock and DashStyleByLayer are mutually exclusive.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="WidthByBlock" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the width is taken from the block. WidthByBlock and WidthByLayer are mutually exclusive.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="areaDrawPropertiesType">
        <xs:annotation>
            <xs:documentation>Represents the properties used to draw areas</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="FloodColor" type="tps:colorType" default="000000">
                <xs:annotation>
                    <xs:documentation>The color used to fill this area</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="FloodColorByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the color is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="FillStyle" default="none">
                <xs:annotation>
                    <xs:documentation>The fill style (can be none, solid, grid, checkered, horizontal lines, vertical lines, backward/forward diagonal lines, diagonal grid)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="none"/>
                        <xs:enumeration value="solid"/>
                        <xs:enumeration value="grid"/>
                        <xs:enumeration value="checkered"/>
                        <xs:enumeration value="horz_lines"/>
                        <xs:enumeration value="vert_lines"/>
                        <xs:enumeration value="dots"/>
                        <xs:enumeration value="custom_pattern"/>
                        <xs:enumeration value="texture"/>
                        <xs:enumeration value="bdiag_lines"/>
                        <xs:enumeration value="fdiag_lines"/>
                        <xs:enumeration value="diagonal_grid"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="FillStyleByLayer" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the fill style is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="FillTransparency" type="xs:short" default="0">
                <xs:annotation>
                    <xs:documentation>The fill transparency of the area</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="FillTransparencyByLayer"
                type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the fill transparency is taken from the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Texture">
                <xs:annotation>
                    <xs:documentation>An optional reference to a texture</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="FloodColorUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="FillStyleUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="FillTransparencyUndefined">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute default="false" name="byCode" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element default="0.0" minOccurs="0" name="CustomFillRotation" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The rotation of the fill. It's counter-clockwise, with zero on x-axis (east).</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="1.0" minOccurs="0" name="CustomFillScale" type="xs:double"/>
            <xs:element minOccurs="0" name="CustomFillOrigin" type="tps:stationType"/>
            <xs:element default="false" minOccurs="0" name="FloodColorByBlock" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the color is taken from the block. FloodColorByBlock and FloodColorByLayer are mutually exclusive.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:group name="DrawProperties">
        <xs:annotation>
            <xs:documentation>The properties used to draw elements (points, lines and areas)</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="PointDrawProperties" type="tps:pointDrawPropertiesType">
                <xs:annotation>
                    <xs:documentation>Represents the properties used to draw points</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="LineDrawProperties" type="tps:lineDrawPropertiesType">
                <xs:annotation>
                    <xs:documentation>Represents the properties used to draw lines</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="AreaDrawProperties" type="tps:areaDrawPropertiesType">
                <xs:annotation>
                    <xs:documentation>Represents the properties used to draw areas</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="layerType">
        <xs:annotation>
            <xs:documentation>A Layer is defined by drawing parameters</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Layer</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Active" type="xs:boolean" default="true">
                        <xs:annotation>
                            <xs:documentation>Represents whether the Layer is active</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Plot" type="xs:boolean" default="true">
                        <xs:annotation>
                            <xs:documentation>Represents whether the Layer is on</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:group minOccurs="0" ref="tps:DrawProperties">
                        <xs:annotation>
                            <xs:documentation>The properties used to draw elements (points, lines and areas)</xs:documentation>
                        </xs:annotation>
                    </xs:group>
                    <xs:element minOccurs="0" name="Notes" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The notes of the Layer</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="AvoidanceMode" default="off">
                        <xs:annotation>
                            <xs:documentation>The avoidance mode of the Layer (can be 2D, 3D or off)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="off"/>
                                <xs:enumeration value="2d"/>
                                <xs:enumeration value="3d"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="SurfaceAvoidanceMode" default="off">
                        <xs:annotation>
                            <xs:documentation>The surface avoidance mode of the Layer (can be above, below, outside, above and below or off)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="off"/>
                                <xs:enumeration value="above"/>
                                <xs:enumeration value="below"/>
                                <xs:enumeration value="outside"/>
                                <xs:enumeration value="above_and_below"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="AvoidanceProximity" type="xs:double"
                        default="0.0">
                        <xs:annotation>
                            <xs:documentation>The value of avoidance proximity of the Layer</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="attrDescriptionType">
        <xs:annotation>
            <xs:documentation>A property of a code</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Type">
                <xs:annotation>
                    <xs:documentation>The data type involved (can be string, bool, integer, real, list or datetime)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="string"/>
                        <xs:enumeration value="bool"/>
                        <xs:enumeration value="integer"/>
                        <xs:enumeration value="real"/>
                        <xs:enumeration value="list"/>
                        <xs:enumeration value="date_time"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the property</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="ListValue" type="xs:string">
                <xs:annotation>
                    <xs:documentation>A sequence of text values, if Type is list</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="TextLength" type="xs:unsignedInt">
                <xs:annotation>
                    <xs:documentation>The maximum length of text value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="FractLength" type="xs:unsignedInt">
                <xs:annotation>
                    <xs:documentation>The maximum length of fractal part of float value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Nullable" type="xs:boolean" default="true">
                <xs:annotation>
                    <xs:documentation>Represents whether the value can be a null pointer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="AlphaSorted" type="xs:boolean" default="false">
                <xs:annotation>
                    <xs:documentation>Represents whether the list of values should be sorted</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="DefaultValue" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The default value for the property</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="RangeMin" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The minimum value of the property</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="RangeMax" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The maximum value of the property</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="codeDescriptionType">
        <xs:annotation>
            <xs:documentation>A code that can be used by an element to gain some properties</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Code</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="AttrDescription"
                        type="tps:attrDescriptionType">
                        <xs:annotation>
                            <xs:documentation>A collection of properties</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:group minOccurs="0" ref="tps:DrawProperties"/>
                    <xs:element minOccurs="0" name="Layer">
                        <xs:annotation>
                            <xs:documentation>A reference to the Layer of the Code</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Description" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The code description</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="TypeCode">
                        <xs:annotation>
                            <xs:documentation>The type of the Code (can be point, line, area or monument). Custom code type should be marked with "free" type. </xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="point"/>
                                <xs:enumeration value="line"/>
                                <xs:enumeration value="area"/>
                                <xs:enumeration value="monument"/>
                                <xs:enumeration value="free">
                                    <xs:annotation>
                                        <xs:documentation>user-defined non-MAGNET code type</xs:documentation>
                                    </xs:annotation>
                                </xs:enumeration>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="TypeAttribPrompt" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The type of property prompt (can be start, end or each node)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="start"/>
                                <xs:enumeration value="each_node"/>
                                <xs:enumeration value="end"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="DTMCodeFlag">
                        <xs:annotation>
                            <xs:documentation>The Dtm flag of the Code (can be unused, used, used breakline or used exclusion area)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="unused"/>
                                <xs:enumeration value="used"/>
                                <xs:enumeration value="used_breakline"/>
                                <xs:enumeration value="used_exclusion_area"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="codeValues">
        <xs:annotation>
            <xs:documentation>Group of common values of a code</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="AttribValue">
                <xs:annotation>
                    <xs:documentation>Represents the attributes of the code</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute default="true" name="hasValue" type="xs:boolean"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="CodeString" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Represents the values for each attribute</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="3" minOccurs="0" name="ControlCode" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Represents the control codes (maximum three)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="codeType">
        <xs:annotation>
            <xs:documentation>A code of a point</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="CodeDescriptionRef">
                <xs:annotation>
                    <xs:documentation>A reference to the Description of this Code</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:group ref="tps:codeValues"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="codeTypeLegacy">
        <xs:annotation>
            <xs:documentation>A code of a point (legacy, must not be used for new elements)</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="CodeDescription">
                <xs:annotation>
                    <xs:documentation>A reference to the Description of this Code</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:group ref="tps:codeValues"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="objectType">
        <xs:annotation>
            <xs:documentation>Each object has a reference to a Coordinate system</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Layer" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the Layer of this object</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                            <xs:attribute default="false" name="byCode" type="xs:boolean">
                                <xs:annotation>
                                    <xs:documentation>Represents whether the layer is by code</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:complexType>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="PhotoNote"
                        type="tps:photoNoteType">
                        <xs:annotation>
                            <xs:documentation>Represents the information about the photos related to this object</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="existing" minOccurs="0" name="State" type="tps:stateType">
                        <xs:annotation>
                            <xs:documentation>Represents whether the object is existing (can be existing, deleted or undefined)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="csIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>It's a reference to a Coordinate System</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="designPointType">
        <xs:annotation>
            <xs:documentation>A Design point can be a standard point or a Ptl point</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="PointDrawProperties"
                        type="tps:pointDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Code"
                        type="tps:codeTypeLegacy">
                        <xs:annotation>
                            <xs:documentation>Represents the codes of the point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Station" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>Represents the Station of the point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="UsedInSurface" default="true" minOccurs="0" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the Design Point is used in a surface</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="PtlData">
                        <xs:annotation>
                            <xs:documentation>Represents the Ptl information, in case this is a Ptl point</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="FirstPointIdRefs" type="xs:string">
                                    <xs:annotation>
                                        <xs:documentation>The first reference point identifiers</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="SecondPointIdRefs" nillable="false"
                                    type="xs:string">
                                    <xs:annotation>
                                        <xs:documentation>The second reference point identifiers</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="sheetPointType">
        <xs:annotation>
            <xs:documentation>A Sheet point is a multiple station point</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Sheet point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="OffsetStation"
                        type="tps:offsetStationType">
                        <xs:annotation>
                            <xs:documentation>A sequence of Offset Stations</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DrawProperties"
                        type="tps:pointDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="polylineType">
        <xs:annotation>
            <xs:documentation>A 3D Polyline is defined by a sequence of unnamed stations or by a sequence of references to Design points</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Polyline</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:choice>
                        <xs:element maxOccurs="unbounded" minOccurs="0" name="Station"
                            type="tps:stationType">
                            <xs:annotation>
                                <xs:documentation>A sequence of unnamed Stations</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element maxOccurs="unbounded" minOccurs="0" name="PointRef">
                            <xs:annotation>
                                <xs:documentation>A sequence of references to Design points</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:attribute name="idRef"/>
                                <xs:attribute default="0" name="bulge" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The bulge of the Station, used to represent curves</xs:documentation>
                                    </xs:annotation>
                                </xs:attribute>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                    <xs:element name="Closed" default="false" minOccurs="0" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the Polyline is closed</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this Polyline</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ProfileRef">
                        <xs:annotation>
                            <xs:documentation>A reference to a Vertical Alignment</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Gaps" type="tps:gapsType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="areaType">
        <xs:annotation>
            <xs:documentation>An Area is a closed Polyline with drawing properties for areas</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:polylineType">
                <xs:sequence>
                    <xs:element name="AreaDrawProperties" type="tps:areaDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this Area</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="arcType">
        <xs:annotation>
            <xs:documentation>A 3D Arc is defined by circle parameters and the starting and ending angles</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this arc</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Station" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>Represents the center of the Arc circle</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Radius" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The radius of the Arc</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="StartAngle" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The starting angle of the Arc</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="EndAngle" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The ending angle of the Arc</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="EndHeight" type="xs:double" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The ending height of the Arc (if it's different from the starting height, taken from Station)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ClockWise" type="tps:clockwiseType">
                        <xs:annotation>
                            <xs:documentation>Represents whther the Arc turn is clockwise or counterclockwise</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="circleType">
        <xs:annotation>
            <xs:documentation>A Circle is defined by a center and a radius</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this circle</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Station" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>Represents the center of the Circle</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Radius" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The radius of the Circle</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="textLabelType">
        <xs:annotation>
            <xs:documentation>A Text label is defined by a text and all the parameters to draw it</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the label</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Station" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>Represents the starting point of the text</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Rotation" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The rotation angle of the text. It's counter-clockwise, with zero on x-axis (east).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Height" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The height of the text, in meters</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Text" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The text</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="FontName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the font of the text</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="InsertMode" default="bottom_left" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The horizontal and vertical mode to insert the text (it can be bottom-left, bottom-center, bottom-right, center-left, center-center, center-right, top-left, top-center or top-right). This element is obsolete and will be removed in future versions.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="bottom_left"/>
                                <xs:enumeration value="bottom_center"/>
                                <xs:enumeration value="bottom_right"/>
                                <xs:enumeration value="center_left"/>
                                <xs:enumeration value="center_center"/>
                                <xs:enumeration value="center_right"/>
                                <xs:enumeration value="top_left"/>
                                <xs:enumeration value="top_center"/>
                                <xs:enumeration value="top_right"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Bold" type="xs:boolean" default="false">
                        <xs:annotation>
                            <xs:documentation>Represents whether the text must be drawn with bold style</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Italic" type="xs:boolean" default="false">
                        <xs:annotation>
                            <xs:documentation>Represents whether the text must be drawn with italic style</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Underline" type="xs:boolean" default="false">
                        <xs:annotation>
                            <xs:documentation>Represents whether the text must be drawn with underlined style</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DrawBox" type="xs:boolean" default="false">
                        <xs:annotation>
                            <xs:documentation>Represents whether a box must be drawn around the text</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Opaque" type="xs:boolean" default="false">
                        <xs:annotation>
                            <xs:documentation>Represents whether the text must be drawn opaque</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="InsertionMode" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The horizontal and vertical mode to insert the text </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="Horizontal" default="left" minOccurs="1">
                                    <xs:annotation>
                                        <xs:documentation>The horizontal mode to insert the text (it can be left, center or right)</xs:documentation>
                                    </xs:annotation>
                                    <xs:simpleType>
                                        <xs:restriction base="xs:NMTOKEN">
                                            <xs:enumeration value="left"/>
                                            <xs:enumeration value="center"/>
                                            <xs:enumeration value="right"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:element>
                                <xs:element name="Vertical" default="bottom" minOccurs="1">
                                    <xs:annotation>
                                        <xs:documentation>The vertical mode to insert the text (it can be bottom, base, center or top)</xs:documentation>
                                    </xs:annotation>
                                    <xs:simpleType>
                                        <xs:restriction base="xs:NMTOKEN">
                                            <xs:enumeration value="bottom"/>
                                            <xs:enumeration value="center"/>
                                            <xs:enumeration value="top"/>
                                            <xs:enumeration value="base"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="DynamicSize" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Defines whether text will be automatically resized to fill the bounding width</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="BoundingBox">
                        <xs:annotation>
                            <xs:documentation>The text bounding box</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element default="0" name="Width" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The bounding box width</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0" name="Height" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The bounding box height</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="LineSpaceFactor" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The line spacing factor for multiline texts</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="undefined" minOccurs="0" name="RotationType">
                        <xs:annotation>
                            <xs:documentation>The rotation type, used only in custom line definitions. (it  can be: relative, absolute, upright, or undefined)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="relative"/>
                                <xs:enumeration value="absolute"/>
                                <xs:enumeration value="upright"/>
                                <xs:enumeration value="undefined"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="blockInsertType">
        <xs:annotation>
            <xs:documentation>A Block insert is made by a reference to a Block definition and a point that tells where to insert it. A Block definition is a sequence of objects, that can contain another Block insert</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="LayerRef" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the Layer of this object</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                            <xs:attribute default="false" name="byCode" type="xs:boolean">
                                <xs:annotation>
                                    <xs:documentation>Represents whether the layer is by code</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Block">
                        <xs:annotation>
                            <xs:documentation>A reference to a Block definition</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Station" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>The center point of the insert</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="ScaleFactor" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The scale factor applied to the x,y,z axis </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="RotationAngle" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The rotation angle around the z-axis. It's counter-clockwise, with zero on x-axis (east).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Code" type="tps:codeType">
                        <xs:annotation>
                            <xs:documentation>Represents the codes of the block insert</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="PointDrawProperties"
                        type="tps:pointDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the entities of the block</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the entities of the block</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="AreaDrawProperties"
                        type="tps:areaDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the entities of the block</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ScaleFactorY" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>If not defined, ScaleFactor is applied to both x and y axis.
If defined, ScaleFactor is applied to x axis only.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ScaleFactorZ" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Currently unused</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="undefined" minOccurs="0" name="RotationType">
                        <xs:annotation>
                            <xs:documentation>The rotation type, used only in custom line definitions. (it  can be: relative, absolute, or upright)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="relative"/>
                                <xs:enumeration value="absolute"/>
                                <xs:enumeration value="upright"/>
                                <xs:enumeration value="undefined"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="csIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>It's a reference to a Coordinate System</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="rayType">
        <xs:annotation>
            <xs:documentation>A ray is an infinite long entity defined by two points: a base point and a direction point.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:objectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw this ray/straight line</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="BasePoint" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>Represents the line starting point. It is the extension delimeter for rays.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="DirectionPoint" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>Represents the through point that defines the line direction</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="ray" name="ExtensionType">
                        <xs:annotation>
                            <xs:documentation>Represents the way the infinite line extends, a single direction or both directions. (It can be: ray or straight_line)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="ray"/>
                                <xs:enumeration value="straight_line"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="objectGroup">
        <xs:annotation>
            <xs:documentation>One of the objects</xs:documentation>
        </xs:annotation>
        <xs:choice>
            <xs:element name="DesignPoint" type="tps:designPointType">
                <xs:annotation>
                    <xs:documentation>A Design point can be a standard point or a Ptl point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SheetPoint" type="tps:sheetPointType">
                <xs:annotation>
                    <xs:documentation>A Sheet point is a multiple station point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Polyline" type="tps:polylineType">
                <xs:annotation>
                    <xs:documentation>A 3D Polyline is defined by a sequence of unnamed stations or by a sequence of references to Design points</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Breakline" type="tps:breaklineType">
                <xs:annotation>
                    <xs:documentation>A Breakline is a Polyline with some references to a Surface</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Area" type="tps:areaType">
                <xs:annotation>
                    <xs:documentation>An Area is a closed Polyline with drawing properties for areas</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Circle" type="tps:circleType">
                <xs:annotation>
                    <xs:documentation>A Circle is defined by a center and a radius</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Arc" type="tps:arcType">
                <xs:annotation>
                    <xs:documentation>A 3D Arc is defined by circle parameters and the starting and ending angles</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TextLabel" type="tps:textLabelType">
                <xs:annotation>
                    <xs:documentation>A Text label is defined by a text and all the parameters to draw it</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockInsert" type="tps:blockInsertType">
                <xs:annotation>
                    <xs:documentation>A Block insert is made by a reference to a Block definition and a point that tells where to insert it</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Ray" type="tps:rayType">
                <xs:annotation>
                    <xs:documentation>A ray is an infinite long entity defined by two points: a base point and a direction point</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:choice>
    </xs:group>
    <xs:complexType name="objectsType">
        <xs:annotation>
            <xs:documentation>A collection of objects</xs:documentation>
        </xs:annotation>
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:group ref="tps:objectGroup">
                <xs:annotation>
                    <xs:documentation>One of the objects</xs:documentation>
                </xs:annotation>
            </xs:group>
        </xs:sequence>
    </xs:complexType>
    <xs:group name="blockObjectGroup">
        <xs:annotation>
            <xs:documentation>One of the objects</xs:documentation>
        </xs:annotation>
        <xs:choice>
            <xs:element name="BlockDesignPoint" type="tps:designPointType">
                <xs:annotation>
                    <xs:documentation>A Design point can be a standard point or a Ptl point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockSheetPoint" type="tps:sheetPointType">
                <xs:annotation>
                    <xs:documentation>A Sheet point is a multiple station point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockPolyline" type="tps:polylineType">
                <xs:annotation>
                    <xs:documentation>A 3D Polyline is defined by a sequence of unnamed stations or by a sequence of references to Design points</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockBreakline" type="tps:breaklineType">
                <xs:annotation>
                    <xs:documentation>A Breakline is a Polyline with some references to a Surface</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockArea" type="tps:areaType">
                <xs:annotation>
                    <xs:documentation>An Area is a closed Polyline with drawing properties for areas</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockCircle" type="tps:circleType">
                <xs:annotation>
                    <xs:documentation>A Circle is defined by a center and a radius</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockArc" type="tps:arcType">
                <xs:annotation>
                    <xs:documentation>A 3D Arc is defined by circle parameters and the starting and ending angles</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockTextLabel" type="tps:textLabelType">
                <xs:annotation>
                    <xs:documentation>A Text label is defined by a text and all the parameters to draw it</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockBlockInsert" type="tps:blockInsertType">
                <xs:annotation>
                    <xs:documentation>A Block insert is made by a reference to a Block definition and a point that tells where to insert it</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockRay" type="tps:rayType">
                <xs:annotation>
                    <xs:documentation>A ray is an infinite long entity defined by two points: a base point and a direction point</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:choice>
    </xs:group>
    <xs:complexType name="blockObjectsType">
        <xs:annotation>
            <xs:documentation>A collection of objects</xs:documentation>
        </xs:annotation>
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:group ref="tps:blockObjectGroup">
                <xs:annotation>
                    <xs:documentation>One of the objects</xs:documentation>
                </xs:annotation>
            </xs:group>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="blockDefinitionType">
        <xs:annotation>
            <xs:documentation>A Block definition is defined as a collection of objects and a reference point (the real Block is an object itself, and can be included in another Block definition)</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Block</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="RefPoint" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The reference point of the Block, represented as a Station</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Objects" type="tps:blockObjectsType">
                        <xs:annotation>
                            <xs:documentation>A collection of objects included in the Block</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="weatherInfoType">
        <xs:annotation>
            <xs:documentation>Information about the weather</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="TypeSun" type="xs:integer" default="0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The general type of weather (sunny, cloudy, etc.)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TypeWind" type="xs:integer" default="0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The type of wind</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Temperature" type="xs:double" default="0.0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The temperature value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Pressure" type="xs:double" default="0.0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The pressure value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PPM" type="xs:double" default="0.0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The PPM value</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="surveyorInfoType">
        <xs:annotation>
            <xs:documentation>Information about the surveyor</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the surveyor</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SerialNumber" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The serial number of the surveyor</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Session" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Date" type="xs:dateTime" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The starting datetime of the session (is type correct?)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="0" minOccurs="0" name="TypeSurveyor" type="xs:int">
                <xs:annotation>
                    <xs:documentation>The type of surveyor (Is this obsolete? Should it be renamed?)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="sessionPatternType">
        <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="MeasureDirection" type="xs:integer"/>
            <xs:element name="HorizSet" type="xs:double"/>
            <xs:element name="VertSet" type="xs:double"/>
            <xs:element name="SlopeDistanceSet" type="xs:double"/>
            <xs:element name="SlopeDistanceShots" type="xs:double"/>
            <xs:element name="HorizAngleDiffLimit" type="xs:integer"/>
            <xs:element name="VertAngleDiffLimit" type="xs:integer"/>
            <xs:element name="InSetDiffLimit" type="xs:integer"/>
            <xs:element name="BetweenSetsDiffLimit" type="xs:integer"/>
            <xs:element name="VertAngleAveraging" type="xs:boolean"/>
            <xs:element name="ManualObservation" type="xs:boolean"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="baseRawDataType">
        <xs:annotation>
            <xs:documentation>Each raw data has a reference to a Measurement Session (the only exception is RawNote)</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:attribute name="measIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>A reference to the Measurement session, that stores which instruments and parameters have been used to measure this Raw data. See Measurement session for further details</xs:documentation>
                        <xs:documentation>It's defined in Data structure but not in Transaction structure, where it's defined the 'measIdRef' attribute of 'Action' tag. See Action for further details</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawDataType">
        <xs:annotation>
            <xs:documentation>Ts data parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice maxOccurs="unbounded" minOccurs="1">
                <xs:annotation>
                    <xs:documentation>Here is the standard content type of the Raw Data. If "Undefined" is chosen, the following ContentType element may define the real content type.</xs:documentation>
                </xs:annotation>
                <xs:element name="SD">
                    <xs:annotation>
                        <xs:documentation>SD parameters are horizontal and vertical angles and slope distance.
Vertical Angle is with the 0 origin as straight forward and measured in a counterclockwise direction.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="HorizAngle" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The horizontal angle</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="VertAngle" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The vertical angle (with the 0 origin as straight forward and measured in a counterclockwise direction)</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="SlopeDistance" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The slope distance</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="HD">
                    <xs:annotation>
                        <xs:documentation>HD parameters are horizontal angle and horizontal and vertical distances</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="HorizAngle" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The horizontal angle</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="HorizDistance" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The horizontal distance</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="VertDistance" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The vertical distance</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="HV">
                    <xs:annotation>
                        <xs:documentation>HV parameters are horizontal and vertical angles.
Vertical Angle is with the 0 origin as straight forward and measured in a counterclockwise direction.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="HorizAngle" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The horizontal angle</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="VertAngle" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The vertical angle</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Offset">
                    <xs:annotation>
                        <xs:documentation>TS data defined by offsets</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="VertOffset" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The vertical offset</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="AlongLineOffset" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The offset along reference line</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="PerpLineOffset" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The offset perpendicular to reference line</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="NEH" type="tps:coordsNEHType">
                    <xs:annotation>
                        <xs:documentation>XYZ offset</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="BB">
                    <xs:annotation>
                        <xs:documentation>BB parameters are backsight bearing and backsight angle</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Bearing" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The backsight bearing</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="Angle" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The backsight angle</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="HAOnly" type="xs:double">
                    <xs:annotation>
                        <xs:documentation>Ts data defined only by horizontal angle</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="VAOnly" type="xs:double">
                    <xs:annotation>
                        <xs:documentation>Ts data defined only by vertical angle (with the 0 origin as straight forward and measured in a counterclockwise direction.)</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="HVS">
                    <xs:annotation>
                        <xs:documentation>HVS parameters are horizontal, vertical and slope delta</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="DeltaHorizDistance" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The delta of horizontal distance</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="DeltaVertDistance" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The delta of vertical distance</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="DeltaSlopeDistance" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The delta of slope distance</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="HDOnly" type="xs:double">
                    <xs:annotation>
                        <xs:documentation>Ts data defined only by horizontal distance</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="VDOnly" type="xs:double">
                    <xs:annotation>
                        <xs:documentation>Ts data defined only by vertical distance</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="SDOnly" type="xs:double">
                    <xs:annotation>
                        <xs:documentation>Ts data defined only by slope distance</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Undefined">
                    <xs:annotation>
                        <xs:documentation>Should we write this tag? If so, how many values should it have?</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Value1st" type="xs:double"/>
                            <xs:element minOccurs="0" name="Value2nd" type="xs:double"/>
                            <xs:element minOccurs="0" name="Value3rd" type="xs:double"/>
                            <xs:element minOccurs="0" name="Value4th" type="xs:double"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
            <xs:element default="single" minOccurs="0" name="Method">
                <xs:annotation>
                    <xs:documentation>The type of the method (can be single, two faces, radial or repeat)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="single"/>
                        <xs:enumeration value="two_face"/>
                        <xs:enumeration value="radial"/>
                        <xs:enumeration value="repeat"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element default="null" minOccurs="0" name="OffsetMode">
                <xs:annotation>
                    <xs:documentation>The type of the offset (can be null, linear, radial, side measurement, center measurement, vertical measurement, line measurement, plane measurement, corner measurement, horizontal and vertical measurement or missing point measurement)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="null"/>
                        <xs:enumeration value="linear"/>
                        <xs:enumeration value="radial"/>
                        <xs:enumeration value="side_meas"/>
                        <xs:enumeration value="center_meas"/>
                        <xs:enumeration value="vertical_meas"/>
                        <xs:enumeration value="line_meas"/>
                        <xs:enumeration value="plane_meas"/>
                        <xs:enumeration value="corner_meas"/>
                        <xs:enumeration value="horiz_vert_meas"/>
                        <xs:enumeration value="missing_point_meas"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element default="0" minOccurs="0" name="SetNum" type="xs:integer">
                <xs:annotation>
                    <xs:documentation>0-based set number this shot belongs to</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="Remeasured" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whther the user has remeasured a shot</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="0" minOccurs="0" name="PrismConstant" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Deprecated. The constant of the prism, in millimiters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="unknown" minOccurs="0" name="TargetType">
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="prism"/>
                        <xs:enumeration value="reflectorless"/>
                        <xs:enumeration value="sheeting"/>
                        <xs:enumeration value="unknown"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="PrismRef" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A reference to a Prism</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:string"/>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="ContentType">
                <xs:annotation>
                    <xs:documentation>Additional content types not listed in the previous choice. If this element is defined, in the previous choice "Undefined" should be written.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:choice maxOccurs="unbounded" minOccurs="1">
                        <xs:element name="HDVD">
                            <xs:annotation>
                                <xs:documentation>HDVD parameters are horizontal and vertical distances</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="HorizDistance" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>The horizontal distance</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="VertDistance" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>The vertical distance</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element default="undefined" minOccurs="0" name="HADirection">
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="undefined"/>
                        <xs:enumeration value="direct"/>
                        <xs:enumeration value="reverse"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tsRawPositionType">
        <xs:annotation>
            <xs:documentation>A TS Raw position has data common to every TS Raw data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:baseRawDataType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the TS raw position</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="TargetHeight" type="xs:double" default="0.0" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The height of the target</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Depth" type="xs:double" default="0.0" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The depth of the TS raw position</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="TSData" type="tps:tsRawDataType">
                        <xs:annotation>
                            <xs:documentation>The TS data parameters</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="TSAveragedData" type="tps:tsRawDataType">
                        <xs:annotation>
                            <xs:documentation>The TS data parameters average values</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="NameSource" default="db" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Represents whether the raw data name has been generated or comes from a db</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="db"/>
                                <xs:enumeration value="generated"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="Time" type="xs:dateTime" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The creation datetime of this TS raw position</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="WeatherInfo" type="tps:weatherInfoType">
                        <xs:annotation>
                            <xs:documentation>The information about the weather</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="SurveyorInfo" type="tps:surveyorInfoType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The information about the surveyor</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="SessionPattern" type="tps:sessionPatternType" minOccurs="0"/>
                    <xs:element default="0.0" minOccurs="0" name="Depth2ndFreq" type="xs:double"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawDataSightType">
        <xs:annotation>
            <xs:documentation>A TS raw data sight is a Ts raw position with main TS raw data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="Note" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The note for this TS raw data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="existing" minOccurs="0" name="State" type="tps:stateType">
                        <xs:annotation>
                            <xs:documentation>Represents whether the TS raw data is existing</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="XYZ" type="tps:tsRawDataType">
                        <xs:annotation>
                            <xs:documentation>The main TS raw data parameters</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawBkbType">
        <xs:annotation>
            <xs:documentation>A TS backsight bearing is a TS raw data sight with a backsight point</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawDataSightType">
                <xs:sequence>
                    <xs:element name="BSPoint" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the backsight point (a Design point)</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawBSType">
        <xs:annotation>
            <xs:documentation>A TS backsight azimuth is a TS raw data sight with a backsight point</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawDataSightType">
                <xs:sequence>
                    <xs:element name="BSPoint" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the backsight point (a Design point)</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawFSDataType">
        <xs:annotation>
            <xs:documentation>A TS foresight data is a TS raw data sight with additional foresight data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawDataSightType">
                <xs:sequence>
                    <xs:element name="TypeMeasure">
                        <xs:annotation>
                            <xs:documentation>The type of measure (can be simple shot, point distance offset, point line and offset, two points horizontal angle offset, horizontal and vertical angle offset, hidden point offset, two lines offset, line corner offset or plane corner offset)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="simple_shot"/>
                                <xs:enumeration value="point_m_offset"/>
                                <xs:enumeration value="point_l_offset"/>
                                <xs:enumeration value="two_points_had_offset"/>
                                <xs:enumeration value="ha_va_offset"/>
                                <xs:enumeration value="hidden_point_offset"/>
                                <xs:enumeration value="two_lines_offset"/>
                                <xs:enumeration value="line_corner_offset"/>
                                <xs:enumeration value="plane_corner_offset"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="SecondRawData" type="tps:tsRawDataType">
                        <xs:annotation>
                            <xs:documentation>The second raw data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Coordinates" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of TS foresight</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="PhotoNote"
                        type="tps:photoNoteType">
                        <xs:annotation>
                            <xs:documentation>A sequence of photos with information</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Code"
                        type="tps:codeTypeLegacy">
                        <xs:annotation>
                            <xs:documentation>A sequence of codes</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawFSType">
        <xs:annotation>
            <xs:documentation>A TS foresight is a TS raw data sight with foresight data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawFSDataType"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawSSType">
        <xs:annotation>
            <xs:documentation>A TS side shot is a TS foresight with two sequences of images</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawFSDataType">
                <xs:sequence>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="TelescopicImage"
                        type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A sequence of telescopic images</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="WideviewImage"
                        type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A sequence of wideview images</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawMlmType">
        <xs:annotation>
            <xs:documentation>A TS missing line is a TS raw position with a reference to a second point</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element name="SecondPointName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the second point (is this a pointer?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawResShotType">
        <xs:annotation>
            <xs:documentation>A TS resection shot is a TS raw position with HVS residuals</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="HVSResidials" type="tps:tsRawDataType">
                        <xs:annotation>
                            <xs:documentation>The horizontal, vertical and slope residuals, represented as Ts data parameters</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Coordinates" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of the TS resection shot</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="hvsd" minOccurs="0" name="UsedData">
                        <xs:annotation>
                            <xs:documentation>The type of user data (can be horizontal vertical and slope distance, only horizontal, only vertical, only slope distance, horizontal and vertical, horizontal and slope distance, vertical and slope distance and none)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="hvsd"/>
                                <xs:enumeration value="h"/>
                                <xs:enumeration value="v"/>
                                <xs:enumeration value="sd"/>
                                <xs:enumeration value="hv"/>
                                <xs:enumeration value="hsd"/>
                                <xs:enumeration value="vsd"/>
                                <xs:enumeration value="none"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element default="all" minOccurs="0" name="UsedCoordinates">
                        <xs:annotation>
                            <xs:documentation>The type of coordinates of a target point (can be none, horizontal, vertical or all)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="none"/>
                                <xs:enumeration value="horizontal"/>
                                <xs:enumeration value="vertical"/>
                                <xs:enumeration value="all"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawResectionType">
        <xs:annotation>
            <xs:documentation>A Resection is defined by a sequence of Resection shots</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Resection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="ResShot"
                type="tps:tsRawResShotType">
                <xs:annotation>
                    <xs:documentation>A sequence of Resections shots</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="additionalResectionDataType">
        <xs:annotation>
            <xs:documentation>Some additional Resection data</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="TypeDimension" default="2d" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The type of the dimension (can be only one dimension, 2D or 3D)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="1d"/>
                        <xs:enumeration value="2d"/>
                        <xs:enumeration value="3d"/>
                        <xs:enumeration value="undefined"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Orientation" type="xs:double" default="0.0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The orientation angle</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StdDeviation" type="tps:coordsXYZType">
                <xs:annotation>
                    <xs:documentation>The standard deviation, represented as XYZ coordinates</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Scale" type="xs:double" default="1.0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The scale factor</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="OrientationStdDev" type="xs:double" default="0.0" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The orientation angle of the standard deviation</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ScaleOpt" default="no_scale" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Was the scale factor estimated and/or used (can be no_scale, esitemate_only, estimate_and_use or user_defined)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="no_scale"/>
                        <xs:enumeration value="estimate_only"/>
                        <xs:enumeration value="estimate_and_use"/>
                        <xs:enumeration value="user_defined"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tsRawRefLineShotType">
        <xs:annotation>
            <xs:documentation>A TS reference line shot is a TS raw position with HVS residuals</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="Coordinates" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of the TS reference line shot</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="hvsd" minOccurs="0" name="UsedData">
                        <xs:annotation>
                            <xs:documentation>The type of user data (can be horizontal vertical and slope distance or horizontal and vertical)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="hvsd"/>
                                <xs:enumeration value="hv"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="HorizontalOffset" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Horizontal offset along the line. Positive for Right, negative for Left.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="VerticalOffset" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Vertical offset. Positive for Up, negative for Down.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawRefLineType">
        <xs:annotation>
            <xs:documentation>A Reference line is defined by a sequence of Reference line shots</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Reference line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="RefLineShot"
                type="tps:tsRawRefLineShotType">
                <xs:annotation>
                    <xs:documentation>A sequence of Reference line shots</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="center" minOccurs="0" name="Hold">
                <xs:annotation>
                    <xs:documentation>Can be left, center or right</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="left"/>
                        <xs:enumeration value="center"/>
                        <xs:enumeration value="right"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tsRawRefDirectionShotType">
        <xs:annotation>
            <xs:documentation>A TS reference direction shot is a TS raw position with HVS residuals</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="Coordinates" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of the TS reference direction shot</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="hvsd" minOccurs="0" name="UsedData">
                        <xs:annotation>
                            <xs:documentation>The type of user data (can be horizontal vertical and slope distance or horizontal and vertical)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="hvsd"/>
                                <xs:enumeration value="hv"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawRefDirectionType">
        <xs:annotation>
            <xs:documentation>A Reference direction is defined by a sequence of Reference direction shots</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Reference direction</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="RefDirectionShot"
                type="tps:tsRawRefDirectionShotType">
                <xs:annotation>
                    <xs:documentation>A sequence of Reference direction shots</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tsRawStnType">
        <xs:annotation>
            <xs:documentation>A TS raw station is a TS raw position with a sequence of Resections</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Code"
                        type="tps:codeTypeLegacy">
                        <xs:annotation>
                            <xs:documentation>A sequence of codes</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Resection"
                        type="tps:tsRawResectionType">
                        <xs:annotation>
                            <xs:documentation>A sequence of Resections</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="AdditionalResectionData"
                        type="tps:additionalResectionDataType">
                        <xs:annotation>
                            <xs:documentation>Some additional Resection data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="PhotoNote"
                        type="tps:photoNoteType">
                        <xs:annotation>
                            <xs:documentation>A sequence of photos with information</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Note" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The note of the TS raw station</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="Scale" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The scale factor of the TS raw station</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ReferenceLine" type="tps:tsRawRefLineType">
                        <xs:annotation>
                            <xs:documentation>A sequence of Reference lines</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ReferenceDirection"
                        type="tps:tsRawRefDirectionType">
                        <xs:annotation>
                            <xs:documentation>A sequence of Reference directions</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tsRawStakeoutType">
        <xs:complexContent>
            <xs:extension base="tps:tsRawPositionType">
                <xs:sequence>
                    <xs:element name="DesignStation" type="tps:stationType"/>
                    <xs:element name="MeasuredStation" type="tps:stationType"/>
                    <xs:element name="EndStation" type="tps:stationType"/>
                    <xs:element name="PtlStation" type="tps:stationType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsRawPositionType">
        <xs:annotation>
            <xs:documentation>A Gnss raw position is a Design point with a reference to a Measurement session and some Gnss parameters</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:designPointType">
                <xs:sequence>
                    <xs:element name="Time" type="xs:dateTime" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The UTC time when the data has been aquired</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AntennaHeight" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The height of the antenna</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Depth" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Additional water depth value taken by a depth sounder</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="PlaneStation" type="tps:stationType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The ground coordinates acquired</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Depth2ndFreq" type="xs:double" default="0.0" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Additional water depth value taken by a second frequency depth sounder</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="measIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>Each Gnss raw position has a reference to a Measurement session</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsOffsetType">
        <xs:annotation>
            <xs:documentation>A Gnss offset is defined by a Gnss position and some TS data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsRawPositionType">
                <xs:sequence>
                    <xs:element name="TSData" type="tps:tsRawDataType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The TS data of the Gnss offset</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsOffsetAzimuthDistanceType">
        <xs:annotation>
            <xs:documentation>A GNSS shot that contains data for determination of the horizontal and vertical (3D) coordinates of an inaccessible point, using one measured point and distance and angle measurements from this point to the offset point</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsOffsetType">
                <xs:sequence>
                    <xs:element name="ReferencePoint" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the reference point (should it be a pointer? to a design point? or some other point type?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsOffsetPtlType">
        <xs:annotation>
            <xs:documentation>A Ptl Gnss offset is a Gnss offset with Ptl data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsOffsetType">
                <xs:sequence>
                    <xs:element name="ReferencePoint1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the first reference point (should it be a pointer? to a design point? or some other point type?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ReferencePoint2" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the second reference point (should it be a pointer? to a design point? or some other point type?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsOffsetTwoDistancesType">
        <xs:annotation>
            <xs:documentation>A Gnss offset with two distances</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsOffsetType">
                <xs:sequence>
                    <xs:element name="ReferencePoint1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the first reference point (should it be a pointer? to a design point? or some other point type?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ReferencePoint2" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the second reference point (should it be a pointer? to a design point? or some other point type?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="IsRight" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the offset is on the right or on the left</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsOffsetPerpendicularType">
        <xs:annotation>
            <xs:documentation>A Gnss offset that is determined by a point on the same perpendicular distance from origin point as the offset point perpendicular distance to the segment defined by origin and line points</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsOffsetType">
                <xs:sequence>
                    <xs:element name="OriginPoint" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the origin reference point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="LinePoint" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the line reference point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="OffsetPoint" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the offset reference point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Other">
                        <xs:annotation>
                            <xs:documentation>A reference to the second offset in the pair named Rectangular Offset. Two offsets share same Origin, Line and Offset point so that Origin Point, Line Point and two offset points form a rectangle</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="single" minOccurs="0" name="Subtype"
                        type="tps:perpendicularOffsetSubType">
                        <xs:annotation>
                            <xs:documentation>Represents the subtype of the single measurement inside a perpendicular offset (can be single, first or second)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsBaseStationType">
        <xs:annotation>
            <xs:documentation>A Gnss base station is a Gnss position with base information</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsRawPositionType">
                <xs:sequence>
                    <xs:element name="TypeAntenna" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The name of the Gnss antenna</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Coordinates" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of the base station</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="VirtualStationId" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The id of the virtual station (should it be a pointer?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="PhysicalStationId" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The id of the physical station (should it be a pointer?)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="NtripMountpointInfo" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Information about NTRIP mountpoint </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="Address" type="xs:string" minOccurs="1">
                                    <xs:annotation>
                                        <xs:documentation>IP address or domain of NTRIP caster</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="Port" type="xs:integer" minOccurs="1">
                                    <xs:annotation>
                                        <xs:documentation>Port number (e.g. 8080)</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="Name" type="xs:string" minOccurs="1">
                                    <xs:annotation>
                                        <xs:documentation>Mountpoint name</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsCoordCovMatrixType">
        <xs:annotation>
            <xs:documentation>A covariance matrix</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="XX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The XX value of the matrix (NN for NEU covariance matrix)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="YY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The YY value of the matrix (EE for NEU covariance matrix)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ZZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The ZZ value of the matrix (UU for NEU covariance matrix)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="XY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The XY value of the matrix (NE for NEU covariance matrix)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="XZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The XZ value of the matrix (NU for NEU covariance matrix)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="YZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The YZ value of the matrix (EU for NEU covariance matrix)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="gpsDopType">
        <xs:annotation>
            <xs:documentation>Dop values are horizontal, vertical and total</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="HDop" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The horizontal Dop value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="VDop" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The vertical Dop value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TDop" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The total Dop value</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="gpsPositionType">
        <xs:annotation>
            <xs:documentation>A Gnss position is a Gnss raw position with full rover parameters</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:gpsRawPositionType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="TypeAntenna" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Gnss antenna</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="BaseStation">
                        <xs:annotation>
                            <xs:documentation>A reference to the Gnss base station</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="gps" minOccurs="0" name="TypeRawData">
                        <xs:annotation>
                            <xs:documentation>The type of raw data (can be Gnss or TS)</xs:documentation>
                            <xs:documentation>Do Gnss position type derived elements have TypeRawData values other than Gnss and ts?</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="gps"/>
                                <xs:enumeration value="ts"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="CV" type="tps:gpsCoordCovMatrixType">
                        <xs:annotation>
                            <xs:documentation>The covariance matrix</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CVNeu" type="tps:gpsCoordCovMatrixType">
                        <xs:annotation>
                            <xs:documentation>The North-East-Up covariance matrix.
In this case the real meaning of the values are:
- XX: NN
- YY: EE
- ZZ: UU
- XY: NE
- XZ: NU
- YZ: EU</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Dop" type="tps:gpsDopType">
                        <xs:annotation>
                            <xs:documentation>Dop values are horizontal, vertical and total</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="XYZCoords" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of the Gnss position</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="WACCoords" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The WA coordinates of the Gnss position</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DXYZCoords" type="tps:coordsXYZType">
                        <xs:annotation>
                            <xs:documentation>The differences of Rover's and Base's stand pos in WGS84 XYZ system</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="no_solution" minOccurs="0" name="TypeSolution">
                        <xs:annotation>
                            <xs:documentation>The type of the solution (can be no solution, standalone, code diff, phase diff float, phase diff fixed, swing fixed, standalone hp, code diff hp, phase diff float hp, phase diff float mmgps, phase diff fixed mmgps or user input)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="no_solution"/>
                                <xs:enumeration value="standalone"/>
                                <xs:enumeration value="code_diff"/>
                                <xs:enumeration value="phase_diff_float"/>
                                <xs:enumeration value="phase_diff_fixed"/>
                                <xs:enumeration value="swing_fixed"/>
                                <xs:enumeration value="standalone_hp"/>
                                <xs:enumeration value="code_diff_hp"/>
                                <xs:enumeration value="phase_diff_float_hp"/>
                                <xs:enumeration value="phase_diff_float_mmgps"/>
                                <xs:enumeration value="phase_diff_fixed_mmgps"/>
                                <xs:enumeration value="user_input"/>
                                <xs:enumeration value="ppp_convergence"/>
                                <xs:enumeration value="ppp_float"/>
                                <xs:enumeration value="ppp_fixed"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="GPSSats" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of Gnss satellites</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="GLONASSSats" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of GLONASS satellites</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="GalileoSats" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of Galileo satellites</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="BeiDouSats" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of BeiDou satellites</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="SBASSats" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of SBAS satellites</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="QZSSSats" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of QZSS satellites</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="-1" minOccurs="0" name="ObservationDuration"
                        type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The observation duration in milliseconds</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="NumberOfEpochs" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>The number of epochs</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="RTKReset" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the RTK has been reset</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="IsPPVector" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether it is a PP vector</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Tilt">
                        <xs:annotation>
                            <xs:documentation>The Tilt values</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element default="0.0" minOccurs="0" name="TiltX"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Tilt value in X</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="TiltY"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Tilt value in Y</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="Heading"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Heading value</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="SigmaTiltX"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Tilt X RMS</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="SigmaTiltY"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Tilt Y RMS</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="SigmaHeading"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Heading RMS</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="Magnitude"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Magnetic field value</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="dlRawDataType">
        <xs:annotation>
            <xs:documentation>A DL raw data can have one wire or three wires (otherwise it is undefined)</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:choice>
                <xs:element name="OneWire" type="xs:double">
                    <xs:annotation>
                        <xs:documentation>The value of the only wire</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="ThreeWire">
                    <xs:annotation>
                        <xs:documentation>The three wires are: top, middle and bottom</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="TopWire" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The value of the top wire</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="MidWire" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The value of the middle wire</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="BottomWire" type="xs:double">
                                <xs:annotation>
                                    <xs:documentation>The value of the bottom wire</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Undefined">
                    <xs:annotation>
                        <xs:documentation>Should we include this tag in MAXML? If yes, how many values shoul we define? one or three?</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Value1" type="xs:double"/>
                            <xs:element minOccurs="0" name="Value2" type="xs:double"/>
                            <xs:element minOccurs="0" name="Value3" type="xs:double"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="dlRawDataSightType">
        <xs:annotation>
            <xs:documentation>A Digital Level raw data sight</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:baseRawDataType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the DL raw data sight</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="BPName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The BP name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Time" type="xs:dateTime" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The creation time of the DL raw data sight</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="TypeShot">
                        <xs:annotation>
                            <xs:documentation>Type of the shot (can be void, baksight shot, foresight shot or side shot)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="void"/>
                                <xs:enumeration value="bs"/>
                                <xs:enumeration value="fs"/>
                                <xs:enumeration value="ss"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="VertOffset" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The vertical offset of the DL raw data sight</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Distance" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The distance of the DL raw data sight</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="HI" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The height of the instrument</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Elevation" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The elevation of the DL raw data sight</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="MeasureData" type="tps:dlRawDataType">
                        <xs:annotation>
                            <xs:documentation>The DL raw data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="TargetPoint">
                        <xs:annotation>
                            <xs:documentation>A reference to the target point</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="rawNoteType">
        <xs:annotation>
            <xs:documentation>A Raw note is a simple text. It's the only Raw data that doesn't reference a Measurement session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:baseRawDataType">
                <xs:sequence>
                    <xs:element name="Time" type="xs:dateTime" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The creation time of the Raw note</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Text" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The text of the Raw note</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="observationSessionGroup">
        <xs:annotation>
            <xs:documentation>A single raw data</xs:documentation>
        </xs:annotation>
        <xs:choice>
            <xs:element name="DLRawDataSight" type="tps:dlRawDataSightType">
                <xs:annotation>
                    <xs:documentation>A Digital Level raw data sight</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RawNote" type="tps:rawNoteType">
                <xs:annotation>
                    <xs:documentation>A Raw note</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSOffsetAzimuthDistance" type="tps:gpsOffsetAzimuthDistanceType">
                <xs:annotation>
                    <xs:documentation>A GNSS shot that contains data for determination of the horizontal and vertical (3D) coordinates of an inaccessible point, using one measured point and distance and angle measurements from this point to the offset point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSOffsetPtl" type="tps:gpsOffsetPtlType">
                <xs:annotation>
                    <xs:documentation>A Ptl Gnss offset is a Gnss offset with Ptl data</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSOffsetTwoDistances" type="tps:gpsOffsetTwoDistancesType">
                <xs:annotation>
                    <xs:documentation>A Gnss offset with two distances</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSOffsetPerpendicular" type="tps:gpsOffsetPerpendicularType">
                <xs:annotation>
                    <xs:documentation>A Gnss offset that is determined by a point on the same perpendicular distance from origin point as the offset point perpendicular distance to the segment defined by origin and line points</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSBaseStation" type="tps:gpsBaseStationType">
                <xs:annotation>
                    <xs:documentation>A Gnss base station is a Gnss raw position with base information</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSPosition" type="tps:gpsPositionType">
                <xs:annotation>
                    <xs:documentation>A Gnss position is a Gnss raw position with full rover parameters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawBKB" type="tps:tsRawBkbType">
                <xs:annotation>
                    <xs:documentation>A TS backsight bearing is a TS raw data sight with a backsight point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawBS" type="tps:tsRawBSType">
                <xs:annotation>
                    <xs:documentation>A TS backsight azimuth is a TS raw data sight with a backsight point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawFS" type="tps:tsRawFSType">
                <xs:annotation>
                    <xs:documentation>A TS foresight is a TS raw data sight with foresight data</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawSS" type="tps:tsRawSSType">
                <xs:annotation>
                    <xs:documentation>A TS side shot is a TS foresight with two images</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawMlm" type="tps:tsRawMlmType">
                <xs:annotation>
                    <xs:documentation>A TS missing line is a TS raw position with a reference to a second point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawResShot" type="tps:tsRawResShotType">
                <xs:annotation>
                    <xs:documentation>A TS resection shot is a TS raw position with HVS residuals</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawStn" type="tps:tsRawStnType">
                <xs:annotation>
                    <xs:documentation>A TS raw station is a TS raw position with a sequence of Resections</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TSRawStakeout" type="tps:tsRawStakeoutType"/>
        </xs:choice>
    </xs:group>
    <xs:complexType name="observationSessionType">
        <xs:annotation>
            <xs:documentation>A collection of Raw data</xs:documentation>
        </xs:annotation>
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:group ref="tps:observationSessionGroup">
                <xs:annotation>
                    <xs:documentation>A single Raw data</xs:documentation>
                </xs:annotation>
            </xs:group>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="imageOrientationType">
        <xs:annotation>
            <xs:documentation>The information about an image orientation</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Image</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SourcePath" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The path of the Image (relative path with name included, inside 'filename'.maxml data folder). Absolute path is supported but deprecated.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Width" nillable="false" type="xs:integer">
                <xs:annotation>
                    <xs:documentation>The width of the Image in pixels</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Height" type="xs:integer">
                <xs:annotation>
                    <xs:documentation>The height of the Image in pixels</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Coordinates"
                type="tps:namedPosition2DType">
                <xs:annotation>
                    <xs:documentation>A sequence of 2D positions to orient the image</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="orientationCalculationResultsType">
        <xs:annotation>
            <xs:documentation>The results of an orientation calculation</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="MaxError" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the maximum error as a 2d position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StandardDeviation" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the standard deviation as a 2d position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="1" name="Discrepancies"
                type="tps:namedPosition2DType">
                <xs:annotation>
                    <xs:documentation>A sequence of descrepancies, represented as 2d positions</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="cameraCalibrationType">
        <xs:annotation>
            <xs:documentation>A calibration of a camera is defined by its parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the calibration</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="FocalLength" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The focal length of the camera</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DistortionModel" type="xs:integer">
                <xs:annotation>
                    <xs:documentation>The distorsion model</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" name="DistiortionParam" type="xs:double" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A sequence of distortion params</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" name="FiducialMark" type="tps:namedPosition2DType"
                minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A sequence of fiducial marks, represented as 2D positions</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" name="RadialDistortion" type="tps:position2DType"
                minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A sequence of radial distortions, represented as 2D positions</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PrincipalPosition" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the principal position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ResolutionPosition" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the resolution position</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tsSettingInformationType">
        <xs:annotation>
            <xs:documentation>Total station settings are defined by instrument, backsight and MH stations</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Instrument" type="tps:stationType">
                <xs:annotation>
                    <xs:documentation>Represents the instrument station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BackSight" type="tps:stationType">
                <xs:annotation>
                    <xs:documentation>Represents the backsight station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="MH" type="tps:stationType">
                <xs:annotation>
                    <xs:documentation>Represents the MH station</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="scanningPointType">
        <xs:annotation>
            <xs:documentation>A Scanning point is defined by a 3D position and two images</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Scanning point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Position" type="tps:coordsXYZType">
                <xs:annotation>
                    <xs:documentation>The 3D position of the Scanning point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="WideImageName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the wide image</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TeleImageName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the tele image</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="LayerName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the layer</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CodeName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the point code</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="scanningSessionType">
        <xs:annotation>
            <xs:documentation>A Scanning Session contains a collection of points measured over an oriented image</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Scanning session</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ImageOrientation"
                        type="tps:imageOrientationType">
                        <xs:annotation>
                            <xs:documentation>The information about the image orientation of the Scanning session</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="OrientationControlPoint"
                        type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>A sequence of control points</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="OrientationResults"
                        type="tps:orientationCalculationResultsType">
                        <xs:annotation>
                            <xs:documentation>Represents the results of the orientation</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CameraCalibration"
                        type="tps:cameraCalibrationType">
                        <xs:annotation>
                            <xs:documentation>Represents the calibration of the camera</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="TSSettings" type="tps:tsSettingInformationType">
                        <xs:annotation>
                            <xs:documentation>Represents the total station settings</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="ScanningPoint"
                        type="tps:scanningPointType">
                        <xs:annotation>
                            <xs:documentation>A sequence of Scanning points</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="csIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>A reference to a Coordinate System</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gridType">
        <xs:annotation>
            <xs:documentation>The grid type that defines a System of Projections divided into Zones and corresponding to the Regions.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DisplayName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name to display for the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Comment" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The comment for the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="EpsgCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The code of the grid by The European Petroleum Survey Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Region" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The region of the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Axes" type="tps:axesDirectionType" default="NE">
                        <xs:annotation>
                            <xs:documentation>The direction of Axes in the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Source" type="tps:csSourceType"
                        default="undefined">
                        <xs:annotation>
                            <xs:documentation>The source of the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Projection" type="tps:projectionType">
                        <xs:annotation>
                            <xs:documentation>The projection used in the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CTCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Application managed code. Technical field. Do not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="datumType">
        <xs:annotation>
            <xs:documentation>The datum type that defines the Datum and avaluable transformations to and from other datums. Supports EPSG codes, Aliases and Collection of different transformations. Could be Id referenced.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the datum</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Comment" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The comment for this datum</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:choice minOccurs="0">
                        <xs:element name="Ellipsoid" minOccurs="0">
                            <xs:annotation>
                                <xs:documentation>The name of standard ellipsoid (e.g. WGS84, KRASS)</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute name="idRef" type="xs:IDREF">
                                            <xs:annotation>
                                                <xs:documentation>Optional reference to ellipsoid definition</xs:documentation>
                                            </xs:annotation>
                                        </xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element minOccurs="0" name="EllipsoidDefinition"
                            type="tps:ellipsoidDefinitionType">
                            <xs:annotation>
                                <xs:documentation>The full definition of the ellipsoid for the datum (defined by params)</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:choice>
                    <xs:element minOccurs="0" name="DisplayName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The display name for this datum</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="EpsgCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The code of the datum by The European Petroleum Survey Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Source" type="tps:csSourceType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The source of the datum</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="AliasDatum">
                        <xs:annotation>
                            <xs:documentation>The name of the alias datum for this datum. It means that this datum may be used instead of its alias</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="idRef" type="xs:IDREF">
                                        <xs:annotation>
                                            <xs:documentation>Optional reference to alias datum definition</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="DatumTransformation"
                        type="tps:datumTransformationType">
                        <xs:annotation>
                            <xs:documentation>The collection of transformations that can be used in this datum</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ActiveTransformation">
                        <xs:annotation>
                            <xs:documentation>Id of transformation used in the datum for convertion.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF">
                                <xs:annotation>
                                    <xs:documentation>Optional reference to active transformation definition</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="CTCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Application managed code. Technical field. Do not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="transformMatrixType">
        <xs:sequence>
            <xs:element maxOccurs="16" minOccurs="16" name="M" type="xs:double"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="calibrationDataType">
        <xs:annotation>
            <xs:documentation>A matrix of short values</xs:documentation>
        </xs:annotation>
        <xs:list itemType="xs:short"/>
    </xs:simpleType>
    <xs:complexType name="tp3PzL1StationType">
        <xs:annotation>
            <xs:documentation>A PzL1 station is a structure used in TP3</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="SerialNumber">
                <xs:annotation>
                    <xs:documentation>The serial number of the instrument (maximum 32 characters)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="32"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="Firmware">
                <xs:annotation>
                    <xs:documentation>The firmware of the instrument (maximum 32 characters)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:maxLength value="32"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="TXId" type="xs:unsignedInt">
                <xs:annotation>
                    <xs:documentation>The TX id (can be a value from 1 to 4)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Enabled" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the station is currently used</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Resected" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the station is the result of an auto computation</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ResectionMeasurements" type="xs:unsignedInt">
                <xs:annotation>
                    <xs:documentation>Represents how many measurements have been used in resection computation</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ResectionError" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The value of the 3D error of resection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="LLH" type="tps:coordsXYZType">
                <xs:annotation>
                    <xs:documentation>The coordinates of optical center (in WGS84 LLH)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Height" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The height above mark</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="HeightMeasuredToMark" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the height was measured to mark</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CalibrationData">
                <xs:annotation>
                    <xs:documentation>The calibration data for TX (a 4x10 matrix)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:annotation>
                        <xs:documentation>The calibration data is a 4x10 matrix</xs:documentation>
                    </xs:annotation>
                    <xs:restriction base="tps:calibrationDataType">
                        <xs:maxLength value="40"/>
                        <xs:minLength value="40"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="CalibrationTime" type="xs:dateTime">
                <xs:annotation>
                    <xs:documentation>The time of calibration download</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="localizationPointType">
        <xs:annotation>
            <xs:documentation> A localization point is defined by a Gnss position and some parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="PositionData" type="tps:gpsPositionType">
                <xs:annotation>
                    <xs:documentation>The Gnss position</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Residuals" type="tps:coordsXYZType">
                <xs:annotation>
                    <xs:documentation>The residuals, stored as XYZ</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="true" minOccurs="0" name="UseHorizontal" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether to use horizontal value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="true" minOccurs="0" name="UseVertical" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether to use vertical value</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="RotationOnly" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether to use only rotation value</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:group name="coordinateSystemProj">
        <xs:annotation>
            <xs:documentation>The properties of the coordinate system</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Grid" type="tps:gridType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The grid that defines a projection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Datum" type="tps:datumType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Defines datum (WGS84 by default, if absent)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="localizationType">
        <xs:annotation>
            <xs:documentation>The Localization data</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The Localization alias</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Geoid" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The geoid applied</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:group minOccurs="0" ref="tps:coordinateSystemProj"/>
            <xs:element minOccurs="0" name="Parameters">
                <xs:annotation>
                    <xs:documentation>Localization parameters</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="PlacementIndex">
                            <xs:annotation>
                                <xs:documentation>The origin point selection</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:enumeration value="not_provided">
                                        <xs:annotation>
                                            <xs:documentation>center point as origin point</xs:documentation>
                                        </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="user_defined">
                                        <xs:annotation>
                                            <xs:documentation>User defined</xs:documentation>
                                        </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="center_point">
                                        <xs:annotation>
                                            <xs:documentation>1st point as origin point</xs:documentation>
                                        </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="first_point"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="CalculationMode">
                            <xs:annotation>
                                <xs:documentation>The computational algorithm that was used to calculate parameters</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                                <xs:restriction base="xs:string">
                                    <xs:enumeration value="not_provided"/>
                                    <xs:enumeration value="legacy">
                                        <xs:annotation>
                                            <xs:documentation>separate calculation of Rotation, Shifts and Scale</xs:documentation>
                                        </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="process_2013">
                                        <xs:annotation>
                                            <xs:documentation>standard calculation of Rotation, Shifts and Scale</xs:documentation>
                                        </xs:annotation>
                                    </xs:enumeration>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="KeepScale1" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>Represents whether the localization keeps the scale to 1</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element name="Other" minOccurs="0">
                            <xs:annotation>
                                <xs:documentation>A list of parameters exported only for report (they will not be read during import)</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="N_Offset" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>N Offset, dx, deflection North</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="E_Offset" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>E Offset, dy, deflection East</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Scale" type="xs:double"/>
                                    <xs:element name="RotationAngle" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>Angle in radians</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="A0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>H0-Vertical offset</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="AX" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>HX-Deflection North (rad)</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="AY" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>HY-Deflection East (rad)</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Lat0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>geodetic origin B</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Lon0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>geodetic origin L</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element minOccurs="0" name="Ell0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>geodetic origin H</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element minOccurs="0" name="N0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>local origin N</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element minOccurs="0" name="E0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>local origin E</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element minOccurs="0" name="H0" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>local origin H</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="P" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>dimensionless vector component (used to calculate Scale and Rotation)</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Q" type="xs:double">
                                        <xs:annotation>
                                            <xs:documentation>dimensionless vector component (used to calculate Scale and Rotation)</xs:documentation>
                                        </xs:annotation>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="LocalizationPoint"
                type="tps:localizationPointType">
                <xs:annotation>
                    <xs:documentation>A collection of localization points</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="PZL1Station"
                type="tps:tp3PzL1StationType">
                <xs:annotation>
                    <xs:documentation>A collection of PzL1 stations (structures used in TP3)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="GeoidDefinition" type="tps:geoidType">
                <xs:annotation>
                    <xs:documentation>The geoid applied full definition (direct or link)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="coordinateSystemInfoType">
        <xs:annotation>
            <xs:documentation>A Coordinate system can refer to structures contained in external files, like geoids. It contains also Localization data. It contributes to create a Measurement Session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="TypeCS" type="tps:TypeCSType"/>
                    <xs:element name="Localization" type="tps:localizationType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The Localization data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:group minOccurs="0" ref="tps:coordinateSystemProj">
                        <xs:annotation>
                            <xs:documentation>Default source coordinate system is WGS84, otherwise Grid or Datum should be defined.</xs:documentation>
                        </xs:annotation>
                    </xs:group>
                    <xs:group minOccurs="0" ref="tps:geoidGroup">
                        <xs:annotation>
                            <xs:documentation>Deprecated since maxml 1.4. Use Geoid element of geoidType instead.</xs:documentation>
                        </xs:annotation>
                    </xs:group>
                    <xs:element minOccurs="0" name="Grid2Ground" type="tps:grid2GroundType">
                        <xs:annotation>
                            <xs:documentation>Grid to ground transformation parameters used for conversion between grid and ground coordinate systems. Used only with defined grid.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Geoid" type="tps:geoidType">
                        <xs:annotation>
                            <xs:documentation>Defines geoid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Note" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The note (used for RSM purposes)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="OgcWktCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The Well-known text (WKT) by OGC that fully describes the Coordinate System</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="triangleType">
        <xs:annotation>
            <xs:documentation>A collection of triangles, defined by three point indexes</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="VertIndex" type="xs:integer" maxOccurs="3" minOccurs="3">
                <xs:annotation>
                    <xs:documentation>A triangle is defined by three point indexes</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="trianglesType">
        <xs:annotation>
            <xs:documentation>A collection of triangles, defined by three point indexes. Every triangle in the string must be separated by an ";".
Every point index must be separated by space.
            </xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="count" type="xs:integer">
                    <xs:annotation>
                        <xs:documentation>The triangle count</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="gapsType">
        <xs:annotation>
            <xs:documentation>A collection of gaps. Each gap is the index of the start node of the "gap segment". Gap indexes must be separated by a single space.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="count" type="xs:integer" use="required">
                    <xs:annotation>
                        <xs:documentation>The gaps count</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="trianglePositionsType">
        <xs:annotation>
            <xs:documentation>A sequence of simple 3D positions, used by the T
Every value in coordinate must be separated by space.
Every coordinate must be separated by a ";"</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="count" type="xs:integer">
                    <xs:annotation>
                        <xs:documentation>The position count</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="breaklineType">
        <xs:annotation>
            <xs:documentation>A Breakline is a Polyline with some references to a Surface</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:polylineType">
                <xs:sequence>
                    <xs:element name="SurfaceName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Surface that uses this Breakline</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="TypeBreakline">
                        <xs:annotation>
                            <xs:documentation>The type of breakline (can be void, standard, non destructive, wall or proximity)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="standard"/>
                                <xs:enumeration value="non_destructive"/>
                                <xs:enumeration value="border"/>
                                <xs:enumeration value="contour"/>
                                <xs:enumeration value="texture"/>
                                <xs:enumeration value="hole"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="AreaDrawProperties"
                        type="tps:areaDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Used by Texture type breaklines.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="surfaceType">
        <xs:annotation>
            <xs:documentation>A Surface is defined by a collection of triangles, which refers to a sequence of positions</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Surface</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Layer" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to a Layer</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="DrawLineProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the triangles of this Surface</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Triangles" type="tps:trianglesType">
                        <xs:annotation>
                            <xs:documentation>A collection of triangles, defined by three point indexes. Every triangle in the string must be separated by an ";".
Every point index must be separated by space.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Positions" type="tps:trianglePositionsType">
                        <xs:annotation>
                            <xs:documentation>A sequence of simple 3D positions, used by the T
Every value in coordinate must be separated by space.
Every coordinate must be separated by a ";" and prefixed by a progressive numerical id enclosed by squared brackets [id]</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Breakline">
                        <xs:annotation>
                            <xs:documentation>A collection of references to Breaklines, used to compute the triangles of this Surface</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="AreaDrawProperties"
                        type="tps:areaDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to fill the surface area (texture)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CreationTime" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>The creation datetime of the Surface
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="SurfaceDrawProperties"
                        type="tps:surfaceDrawPropertiesType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="staEquationType">
        <xs:annotation>
            <xs:documentation>Definition of a Station equation</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Station equation</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Internal" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The original station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Back" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The back station</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Ahead" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The ahead station</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="staEquationSetType">
        <xs:annotation>
            <xs:documentation>A collection of Station equations</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Each Station equation set must have a different name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="StaEquation"
                        type="tps:staEquationType">
                        <xs:annotation>
                            <xs:documentation>Definition of a Station equation, that can be referenced by an Alignment or an Alignment part</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="alignmentPartType">
        <xs:annotation>
            <xs:documentation>A part of an Alignment (a Horizontal alignment, a Vertical alignment, a Cross section set or a Road string set)</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Each 'alignment part' of the same type must have a different name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="StartPoint" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the starting point of the 'alignment part'</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="StaStart" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The starting station of the 'alignment part'</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Length" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The length of the 'alignment part'</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="existing" minOccurs="0" name="State" type="tps:stateType">
                        <xs:annotation>
                            <xs:documentation>Represents if the 'alignment part' is existing (can be existing, deleted or undefined)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="spiralGeometryType">
        <xs:annotation>
            <xs:documentation>The type of the Spiral (can be biquadratic, bloss, clothoid, cosine, cubic, sinusoid, reverse biquadratic, reverse bloss, reverse cosine or reverse sinusoid)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="biquadratic"/>
            <xs:enumeration value="bloss"/>
            <xs:enumeration value="clothoid"/>
            <xs:enumeration value="cosine"/>
            <xs:enumeration value="cubic"/>
            <xs:enumeration value="sinusoid"/>
            <xs:enumeration value="rev_biquadratic"/>
            <xs:enumeration value="rev_bloss"/>
            <xs:enumeration value="rev_cosine"/>
            <xs:enumeration value="rev_sinusoid"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="line2DType">
        <xs:annotation>
            <xs:documentation>A 2D Line</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="StaStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting station of the Line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The length of the Line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Direction" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The direction angle of the Line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Start" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the starting point of the Line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="End" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the ending point of the Line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="AzToPrevEl" type="xs:boolean" default="false" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Represents whether the Line direction is the end direction of the previous element</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="curveType">
        <xs:annotation>
            <xs:documentation>A 2D Curve</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="StaStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting station of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The length of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Radius" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The radius of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Clockwise" type="tps:clockwiseType">
                <xs:annotation>
                    <xs:documentation>Represents whether the Curve turn is clockwise or counterclockwise</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DirStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting direction angle of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DirEnd" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The ending direction angle of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Delta" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The difference between ending and starting direction angles</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Start" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the starting point of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Center" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the center of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="End" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the ending point of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PI" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the intersection point of the Curve</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="AzToPrevEl" type="xs:boolean" default="false" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Represents whether the Curve starting direction is the end direction of the previous element</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="spiralType">
        <xs:annotation>
            <xs:documentation>A 2D Spiral</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="StaStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting station of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The length of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RadiusStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting radius of the Spiral. A value of 0 means that the starting radius is infinite</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RadiusEnd" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The ending radius of the Spiral. A value of 0 means that the ending radius is infinite</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Clockwise" type="tps:clockwiseType">
                <xs:annotation>
                    <xs:documentation>Represents whether the Spiral turn is clockwise or counterclockwise</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="SpiralType" type="tps:spiralGeometryType" default="biquadratic"
                maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The type of the Spiral (can be biquadratic, bloss, clothoid, cosine, cubic, sinusoid, reverse biquadratic, reverse bloss, reverse cosine or reverse sinusoid)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Constant" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The 'constant' of the Spiral, also known as 'spiral parameter', in square meters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DirStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting direction angle of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DirEnd" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The ending direction angle of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Start" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the starting point of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PI" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the intersection point of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="End" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the ending point of the Spiral</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="AzToPrevEl" type="xs:boolean" default="false" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Represents whether the Spiral starting direction is the end direction of the previous element</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="intersectionPointType">
        <xs:annotation>
            <xs:documentation>Represents an intersection point, usually defined as a sequence of planimetric entities (line + spiral + curve + spiral) or as a single point</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Radius" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Radius of the curve segment of transition curve at intersection point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length1" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Length of the first spiral segment of transition curve at intersection point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length2" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Length of the second spiral segment of transition curve at intersection point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Start" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the starting position of the Intersection point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="true" minOccurs="0" name="SimplePoint" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Represents whether the Intersection point is just a point or a sequence of horizontal elements</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Segment" type="tps:line2DType">
                <xs:annotation>
                    <xs:documentation>Represents the starting line of the sequence of horizontal elements</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="FirstSpiral" type="tps:spiralType">
                <xs:annotation>
                    <xs:documentation>Represents the entry spiral of the sequence of horizontal elements</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Curve" type="tps:curveType">
                <xs:annotation>
                    <xs:documentation>Represents the central curve of the sequence of horizontal elements</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="SecondSpiral" type="tps:spiralType">
                <xs:annotation>
                    <xs:documentation>Represents the exit spiral of the sequence of horizontal elements</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="alignmentPartStaEqType">
        <xs:annotation>
            <xs:documentation>An Alignment part with a reference to a Station equation set</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:alignmentPartType">
                <xs:sequence>
                    <xs:element name="StaEquationSet" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to a Station equation set</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="horizontalAlignmentType">
        <xs:annotation>
            <xs:documentation>A Horizontal alignment is defined by a sequence of horizontal elements. It's used by an Alignment or a Road string</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:alignmentPartStaEqType">
                <xs:sequence>
                    <xs:element name="Elements" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A sequence of horizontal elements (can be Lines, Curves, Spiral or Intersection points)</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:choice maxOccurs="unbounded">
                                <xs:element name="Line" type="tps:line2DType">
                                    <xs:annotation>
                                        <xs:documentation>Represents a 2D Line</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="Curve" type="tps:curveType">
                                    <xs:annotation>
                                        <xs:documentation>Represents a 2D Curve</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="Spiral" type="tps:spiralType">
                                    <xs:annotation>
                                        <xs:documentation>Represents a 2D Spiral</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="IntersectionPoint"
                                    type="tps:intersectionPointType">
                                    <xs:annotation>
                                        <xs:documentation>Represents an intersection point, usually defined as a sequence of planimetric entities (line + spiral + curve + spiral) or as a single point</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the Horizontal Alignment (Alignment properties have higher priority, if present)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="LayerRef" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the Layer of the Horizontal Alignment</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="pviType">
        <xs:annotation>
            <xs:documentation>A vertical position is defined as a 2D Position</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Position" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents a 2D position</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="paraCurveType">
        <xs:annotation>
            <xs:documentation>A vertical parabola is defined as its vertex and its length</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Position" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the vertex position of the parabola</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The length of the parabola</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="circCurveType">
        <xs:annotation>
            <xs:documentation>A vertical circular arc is represented as its vertex, its length and its radius</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Position" type="tps:position2DType">
                <xs:annotation>
                    <xs:documentation>Represents the vertex position of the circular arc</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The length of the circular arc</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Radius" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The radius of the circular arc</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="verticalAlignmentType">
        <xs:annotation>
            <xs:documentation>A Vertical alignment is defined by a sequence of vertical positions. It's used by an Alignment or a Road string</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:alignmentPartStaEqType">
                <xs:sequence>
                    <xs:element name="Points" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A sequence of points representing grades, parabolas and arcs</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:choice maxOccurs="unbounded" minOccurs="1">
                                <xs:element name="PVI" type="tps:pviType">
                                    <xs:annotation>
                                        <xs:documentation>Represents a simple vertical position</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="ParaCurve" type="tps:paraCurveType">
                                    <xs:annotation>
                                        <xs:documentation>Represents a vertical parabola</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="CircCurve" type="tps:circCurveType">
                                    <xs:annotation>
                                        <xs:documentation>Represents a vertical circular arc</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the Vertical Alignment (Alignment properties have higher priority, if present)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="templateSegmentType">
        <xs:annotation>
            <xs:documentation>A 2D segment is defined by name and offsets</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Template segment</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Offset" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The horizontal offset of the Template segment</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Height" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The vertical offset of the Template segment</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="offset_height" name="UserMode" type="tps:userModeType"
                minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The geometrical representation chosen by the user</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="roadTemplateType">
        <xs:annotation>
            <xs:documentation>A Road template is defined by a sequence of 2D segments. It's used by a Cross section</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Each Road template must have a different name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Cut" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The cut slope of the Road template</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Fill" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The fill slope of the Road template</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:sequence>
                        <xs:annotation>
                            <xs:documentation>A sequence of Template segments</xs:documentation>
                        </xs:annotation>
                        <xs:element maxOccurs="unbounded" minOccurs="0" name="TemplateSegment"
                            type="tps:templateSegmentType">
                            <xs:annotation>
                                <xs:documentation>Represents a single 2D segment that composes a Road template</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:sequence>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="crossSectionType">
        <xs:annotation>
            <xs:documentation>A Cross section is a side, left or right, of an Alignment section</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Sta" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The station of the Cross section</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Side" type="tps:sideType">
                <xs:annotation>
                    <xs:documentation>The side of the Cross section (left or right)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="RoadTemplate">
                <xs:annotation>
                    <xs:documentation>A sequence of references to Road templates</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:element default="false" minOccurs="0" name="IsEnd" type="xs:boolean"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="crossSectionSetType">
        <xs:annotation>
            <xs:documentation>A sequence of Cross sections, used by an Alignment</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:alignmentPartType">
                <xs:sequence>
                    <xs:element name="CreateMap" type="xs:boolean" default="false" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>If true, there must be a map of Road templates used by Cross sections</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CrossSection" maxOccurs="unbounded"
                        type="tps:crossSectionType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Represents a side, left or right, of an Alignment section</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="roadStringPairType">
        <xs:annotation>
            <xs:documentation>A Road string pair is a 3D alignment, referencing a Horizontal alignment and a Vertical alignment</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="HorizontalAlignment">
                <xs:annotation>
                    <xs:documentation>A reference to a Horizontal alignment</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="VerticalAlignment">
                <xs:annotation>
                    <xs:documentation>A reference to a Vertical alignment</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="roadStringType">
        <xs:annotation>
            <xs:documentation>A 3D complex alignment, that can be used by an Alignment instead of a Cross section</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the Road string</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StaStart" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The starting station of the Road string</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Length" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The length of the Road string</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="RoadStringPair"
                type="tps:roadStringPairType">
                <xs:annotation>
                    <xs:documentation>Represents a 3D alignment, using a Horizontal alignment and a Vertical alignment</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="unknown" minOccurs="0" name="Type"
                type="tps:roadStringCategoryType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="roadStringSetType">
        <xs:annotation>
            <xs:documentation>A sequence of Road strings, that can be used by an Alignment instead of Cross sections</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:alignmentPartType">
                <xs:sequence>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="RoadString"
                        type="tps:roadStringType">
                        <xs:annotation>
                            <xs:documentation>Represents a 3D complex alignment, that can be used by an Alignment instead of a Cross section</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="alignmentType">
        <xs:annotation>
            <xs:documentation>An Alignment is defined by a Horizontal alignment, a Vertical alignment and a Cross section set (or a Road string set).</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Layer" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the Layer of the Alignment</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="State" type="tps:stateType" default="existing" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Represents whether the Alignment is existing (can be existing, deleted or undefined)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="StaEquationSet" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to a Station equation set</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Length" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The horizontal length of the Alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="StaStart" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The starting station of the Alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="StnInterval" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The interval between stations</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="HorizontalAlignment">
                        <xs:annotation>
                            <xs:documentation>A reference to the Horizontal alignment</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="VerticalAlignment">
                        <xs:annotation>
                            <xs:documentation>A reference to the Vertical alignment</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="CrossSectionSet">
                        <xs:annotation>
                            <xs:documentation>A reference to the Cross section set</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="CorridorLeftOffset" type="xs:double" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The left corridor offset of the Road string set</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CorridorRightOffset" type="xs:double" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The right corridor offset of the Road string set</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="RoadStringSet">
                        <xs:annotation>
                            <xs:documentation>A reference to a Road string set, used as an alternative (or in addition) to the Cross section set</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="LineDrawProperties"
                        type="tps:lineDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the Alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="applicationType">
        <xs:annotation>
            <xs:documentation>The information about an application</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Application" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the application</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="SerialNumber" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The serial number of the installation</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Description" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The description of the application</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Version" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The version of the application</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="observationInfoPrismType">
        <xs:annotation>
            <xs:documentation>The information about a prism</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the prism</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Constant" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The constant of the prism, in millimeters</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="observationInfoPressureType">
        <xs:annotation>
            <xs:documentation>The pressure parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="1" name="Units" type="tps:pressureType">
                <xs:annotation>
                    <xs:documentation>The pressure units (can be mmhg, hpa, inhg, mbar)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Value" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The value of the pressure</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="observationInfoTemperatureType">
        <xs:annotation>
            <xs:documentation>The temperature parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="1" name="Units" type="tps:temperatureType">
                <xs:annotation>
                    <xs:documentation>The temperature units (can be fahrenheit or celsius)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Value" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The value of the temperature</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="jobInfoType">
        <xs:annotation>
            <xs:documentation>The general information about a Job</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Comment" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A textual comment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Surveyor" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the surveyor</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CreationTime" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>The creation datetime of the Job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DisplayCoordSystemInfo">
                        <xs:annotation>
                            <xs:documentation>Project display coordinate system settings</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="DisplayType">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="tps:TypeCSType">
                                                <xs:attribute default="NEH" name="PlaneCoordOrder"
                                                  type="tps:PlaneCoordOrderType">
                                                  <xs:annotation>
                                                  <xs:documentation>Defines the display order for the plane coordinates order</xs:documentation>
                                                  </xs:annotation>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                                <xs:group minOccurs="0" ref="tps:coordinateSystemProj"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Units" type="tps:unitsType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The information about the units used in the Job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ReportSettings" type="tps:reportSettingsType">
                        <xs:annotation>
                            <xs:documentation>Settings for Report generation</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="CustomSymbolSize" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The horizontal size (in meters) for scalable custom symbols</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="ProposedScale" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>A proposed scale (in mm) to transform Custom Symbols into ground size. The non-scalable symbol size will be: design size * proposed scale / 1000.0 (considering also design size in mm).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="unitsType">
        <xs:annotation>
            <xs:documentation>The information about the units used</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="DistanceUnits" type="tps:distanceType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The distance unit (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="AngleUnits" type="tps:angleType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The angle units (can be radians, gons, mils, dec_deg or dddmmsss)
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PressureUnits" type="tps:pressureType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The pressure units (can be mmhg, hpa, inhg, mbar)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TemperatureUnits" type="tps:temperatureType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The temperature units (can be fahrenheit or celsius)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ScaleUnits" type="tps:scaleType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The scale units (can be decimal, ppm, ppb, denominator)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VolumeUnits" type="tps:volumeType">
                <xs:annotation>
                    <xs:documentation>The volume units (can be cubic_meters, cubic_us_feet, cubic_int_feet, cubic_us_feet_inches, cubic_int_feet_inches, cubic_us_chains, cubic_int_chains, cubic_mile, cubic_int_inches, cubic_us_inches, cubic_millimeters, cubic_centimeters, cubic_kilometers, cubic_int_yards or cubic_us_yards)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="datumTransformUnitsType">
        <xs:annotation>
            <xs:documentation>The information about the units used in datum transformation parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="DistanceUnits" type="tps:distanceType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The distance unit used in datum transformation distance parameters and vertical shifts in the CorrectionTables (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs). Default is meters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="AngleUnits" type="tps:angleType" minOccurs="0" default="arcsec">
                <xs:annotation>
                    <xs:documentation>The angle units used in datum transformations parameters for rotations (can be radians, gons, mils, dec_deg, arcsec or dddmmsss). Default is arcsec.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ScaleUnits" type="tps:scaleType" minOccurs="0" default="ppm">
                <xs:annotation>
                    <xs:documentation>The scale units used in datum transformation parameters (can be decimal, ppm, ppb, denominator).</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="LatLonUnits" type="tps:angleType" minOccurs="0" default="dec_deg">
                <xs:annotation>
                    <xs:documentation>The angle units used for Lat/Lon boundaries and horizontal shifts in the CorrectionTables.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="projectionUnitsType">
        <xs:annotation>
            <xs:documentation>The information about the units used in projection parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="DistanceUnits" type="tps:distanceType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The distance unit (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="AngleUnits" type="tps:angleType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The angle units (can be radians, gons, mils, dec_deg or dddmmsss)
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ScaleUnits" type="tps:scaleType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The scale units (can be decimal, ppm, ppb, denominator)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="observationInfoType">
        <xs:annotation>
            <xs:documentation>An Observation info has the general information about a Measurement session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="InstrumentID" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Total Station model</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="SurveyConfig" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the current survey configuration</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Prism" type="tps:observationInfoPrismType">
                        <xs:annotation>
                            <xs:documentation>The information about the prism used for foresight, only for optical measurement sessions</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="PrismBS" type="tps:observationInfoPrismType">
                        <xs:annotation>
                            <xs:documentation>The information about the prism used for backsight, only for optical measurement sessions</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="AdjustECRef" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether adjust for earth curvature and refraction</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Temperature" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The value of the temperature</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Pressure" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The value of the pressure</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="PPM" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The atmosphere refraction coefficient PPM of the measurement session</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Humidity" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The humidity (in percentage)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="fieldReportsType">
        <xs:annotation>
            <xs:documentation>A Field report with job info, surveyor info, coordinates, time, notes and taken images</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the report</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="AuthorName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the author of the report</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="JobName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ProjectName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the project</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Note" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The note of the report</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CreationDate" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>The creation datetime of the report</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Image">
                        <xs:annotation>
                            <xs:documentation>The main Image, stored as a base64Binary</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Station" type="tps:stationType">
                        <xs:annotation>
                            <xs:documentation>The field report location</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="1" name="NEZ" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the coordinates are stored as north, east and z coordinate</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Coords" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A sequence of coordinate labels</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="meters" minOccurs="0" name="DistUnit"
                        type="tps:distanceType">
                        <xs:annotation>
                            <xs:documentation>The distance unit (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ImageFormat" default="jpeg"
                        type="tps:imageFormatType">
                        <xs:annotation>
                            <xs:documentation>The format type of the main Image data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ExtraImages">
                        <xs:annotation>
                            <xs:documentation>A collection of Images, in addition to the main Image</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" name="ImageInfo">
                                    <xs:annotation>
                                        <xs:documentation>Information about an Image</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="ImageData">
                                                <xs:annotation>
                                                  <xs:documentation>The Image data, stored as a base64Binary</xs:documentation>
                                                </xs:annotation>
                                            </xs:element>
                                            <xs:element minOccurs="0" name="ImageFormat"
                                                default="jpeg" type="tps:imageFormatType">
                                                <xs:annotation>
                                                  <xs:documentation>The format type of Image data</xs:documentation>
                                                </xs:annotation>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="csIdRef" type="xs:IDREF"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="stakeReportCategory">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="undefined"/>
            <xs:enumeration value="point"/>
            <xs:enumeration value="line_or_arc"/>
            <xs:enumeration value="road"/>
            <xs:enumeration value="surface"/>
            <xs:enumeration value="slope"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="stakeReportConfigType">
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string"/>
                    <xs:element name="ReportType" type="tps:stakeReportCategory">
                        <xs:annotation>
                            <xs:documentation>The report type, which can be undefined, point, line_or_arc, road, surface or slope</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="HeaderFields">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" name="HeaderField"
                                    type="xs:string">
                                    <xs:annotation>
                                        <xs:documentation>The header fields of the report</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element maxOccurs="1" minOccurs="0" name="Tolerances">
                        <xs:annotation>
                            <xs:documentation>The tolerances of the report</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element minOccurs="0" name="Northing" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The northing tolerance, if defined</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element minOccurs="0" name="Easting" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The easting tolerance, if defined</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element minOccurs="0" name="Elevation" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The elevation tolerance, if defined</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="stakeReportFieldType">
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="common"/>
            <xs:enumeration value="location"/>
            <xs:enumeration value="time"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="stakeReportType">
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The report name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Config">
                        <xs:annotation>
                            <xs:documentation>A reference to the report configuration</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Record">
                        <xs:annotation>
                            <xs:documentation>A report record is defined by its fields and a datetime</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" name="Field">
                                    <xs:annotation>
                                        <xs:documentation>A record field is defined by a type and a value</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="Type" type="tps:stakeReportFieldType">
                                                <xs:annotation>
                                                  <xs:documentation>The field type, which can be common, location or time</xs:documentation>
                                                </xs:annotation>
                                            </xs:element>
                                            <xs:element name="Value" type="xs:string">
                                                <xs:annotation>
                                                  <xs:documentation>The field value</xs:documentation>
                                                </xs:annotation>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="DateTime" type="xs:string">
                                    <xs:annotation>
                                        <xs:documentation>The datetime of the record</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="externalOrientationType">
        <xs:annotation>
            <xs:documentation>External orientation is defined by its parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="X" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The X coordinate</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Y" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Y coordinate</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Z" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Z coordinate</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Omega" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Omega parameter</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Phi" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Phi parameter</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Kappa" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Kappa parameter</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tsCameraCalibrationType">
        <xs:annotation>
            <xs:documentation>A TS camera calibration is a standard camera calibration with additional parameters</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:cameraCalibrationType">
                <xs:sequence>
                    <xs:element name="ExternalOri" type="tps:externalOrientationType">
                        <xs:annotation>
                            <xs:documentation>The external orientation parameters</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CCD1X" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The X coordinate of the tele image center, in pixel</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CCD1Y" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The Y coordinate of the tele image center, in pixel</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CCD2X" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The X coordinate of the wide image center, in pixel</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CCD2Y" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The Y coordinate of the wide image center, in pixel</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="orientationPointType">
        <xs:annotation>
            <xs:documentation>An Orientation point is a Scanning point with additional parameters</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:scanningPointType">
                <xs:sequence>
                    <xs:element name="ExternalOri" type="tps:externalOrientationType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Represents the external orientation</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Time" type="xs:dateTime" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The creation datetime of the point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="HorizAngle" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The horizontal angle of the measurement</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="VertAngle" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The vertical angle of the measurement</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="stereoPairType">
        <xs:annotation>
            <xs:documentation>A Stereo pair is defined by a pair of orientation session and a pair of orientation points</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Session1" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the first session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Point1" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the first point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Session2" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the second session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Point2" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the second point</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="orientationSessionType">
        <xs:annotation>
            <xs:documentation>An orientation session is defined by a collection of points measured with a certain camera calibration</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="CameraCalibration"
                type="tps:tsCameraCalibrationType">
                <xs:annotation>
                    <xs:documentation>Represents the camera calibration of the session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="TSSettingInfo"
                type="tps:tsSettingInformationType">
                <xs:annotation>
                    <xs:documentation>Represents the total station settings</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="OriPoint"
                type="tps:orientationPointType">
                <xs:annotation>
                    <xs:documentation>A sequence of orientation points</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="orientationJobType">
        <xs:annotation>
            <xs:documentation>An Orientation job is defined as a collection of orientation sessions and stereo pairs</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Orientation job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="OriSession"
                        type="tps:orientationSessionType">
                        <xs:annotation>
                            <xs:documentation>A sequence of sessions of the Orientation job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="StereoPair"
                        type="tps:stereoPairType">
                        <xs:annotation>
                            <xs:documentation>A sequence of stereo pairs of the Orientation job</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="dlRunType">
        <xs:annotation>
            <xs:documentation>A Digital Level run contributes to create a Measurement Session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Digital Level run</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Notes" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The notes related to the Digital Level run</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="gpsAntennaSettingsType">
        <xs:annotation>
            <xs:documentation>A Gnss antenna contributes to create a Measurement Session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Manufacturer" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the manufacturer</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Model" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The model of the Gnss antenna</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="SerialNumber" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The serial number of the Gnss antenna</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="deviceType">
        <xs:annotation>
            <xs:documentation>A Gnss device, a TS device or a DL device. It contributes to create a Measurement Session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="DeviceType">
                        <xs:annotation>
                            <xs:documentation>The type of the Device (can be Gnss, Total Station or Digital Level)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="gps"/>
                                <xs:enumeration value="ts"/>
                                <xs:enumeration value="dl"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="ModelName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the model</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="SerialNumber" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The serial number of the Device</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="FWVersion" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The version of the firmware</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="HWRevision" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The revision of the hardware</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Manufacturer" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The name of the manufacturer</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DeviceId" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Manufacturer UID of the Device</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="controllerType">
        <xs:annotation>
            <xs:documentation>A Controller contributes to create a Measurement Session</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Controller</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="SerialNumber" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The serial number of the Controller</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="FWVersion" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The version of the firmware</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="HWRevision" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The revision of the hardware</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Manufacturer" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The name of the manufacturer</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Integrated" type="xs:boolean" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Represents whether the controller is integrated in the device</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ControllerId" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Manufacturer UID of the Controller</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="regionBoundFeatureType">
        <xs:annotation>
            <xs:documentation>The bounding feature line</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="Station" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The station value along the reference alignment</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Line" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the bounding line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element default="no" minOccurs="0" name="Side">
                <xs:annotation>
                    <xs:documentation>The side of the road. Can be no, left, right or both</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="no"/>
                        <xs:enumeration value="left"/>
                        <xs:enumeration value="right"/>
                        <xs:enumeration value="both"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="regionRefAlignmentType">
        <xs:annotation>
            <xs:documentation>The reference to a road alignment with the start/end bounding features</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="StartBounding" type="tps:regionBoundFeatureType">
                <xs:annotation>
                    <xs:documentation>The start bounding feature line</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="EndBounding" type="tps:regionBoundFeatureType">
                <xs:annotation>
                    <xs:documentation>The end bounding feature line</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="idRef" type="xs:string" use="required"/>
    </xs:complexType>
    <xs:complexType name="regionType">
        <xs:annotation>
            <xs:documentation>A Region describes an area with some attributes</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Region</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="TypeRegion">
                        <xs:annotation>
                            <xs:documentation>The type of the Region (can be unknown, cut, fill, import, export, stockpile or waste)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="unknown"/>
                                <xs:enumeration value="cut"/>
                                <xs:enumeration value="fill"/>
                                <xs:enumeration value="import"/>
                                <xs:enumeration value="export"/>
                                <xs:enumeration value="stockpile"/>
                                <xs:enumeration value="waste"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Layer">
                        <xs:annotation>
                            <xs:documentation>A reference to a Layer</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="AreaDrawProperties"
                        type="tps:areaDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the area of the Region</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Vertices">
                        <xs:annotation>
                            <xs:documentation>A sequence of Vertices, defining the area</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence maxOccurs="unbounded">
                                <xs:element name="Vertex" type="tps:coordsXYZWithBulgeType">
                                    <xs:annotation>
                                        <xs:documentation>Each vertex is defined as a XYZ position and a bulge</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:choice minOccurs="0">
                        <xs:element default="true" name="Plot" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>Defines whether Region is visible (true if not set)</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element default="false" name="PlotByLayer" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>Region visiblility is defined by layer</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:choice>
                    <xs:element minOccurs="0" name="AlignmentRef" type="tps:regionRefAlignmentType">
                        <xs:annotation>
                            <xs:documentation>A reference to an alignment</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="UpperSurface">
                        <xs:annotation>
                            <xs:documentation>A reference to an upper surface for 3D volumetric purposes</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="LowerSurface">
                        <xs:annotation>
                            <xs:documentation>A reference to a lower surface for 3D volumetric purposes</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="true" minOccurs="0" name="Discoverable" type="xs:boolean"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="objectListType">
        <xs:annotation>
            <xs:documentation>An Object List is a list of references to Objects (usually used to describe a Point List)</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Object List</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="Object">
                        <xs:annotation>
                            <xs:documentation>A sequence of Object references</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="measurementSessionType">
        <xs:annotation>
            <xs:documentation>A Measurement session is a combination of a Device, a Controller, a Digital Level run, a Gnss antenna and a Coordinate system. It represents a session during which the user has taken measurements with these instruments and parameters. If an element refers to a Measurement session, it's always possibile to find which instrument was used to take its measurement.</xs:documentation>
        </xs:annotation>
        <xs:sequence> </xs:sequence>
        <xs:attribute name="id" type="xs:ID">
            <xs:annotation>
                <xs:documentation>Raw data and Actions can refer to a Measurement session through this id</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="deviceIdRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>A reference to a Device</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="controllerIdRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>A reference to a Controller</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="dlRunIdRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>A reference to a DL run</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="gpsAntIdRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>A reference to a Gnss antenna</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="csIdRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>A reference to a Coordinate system</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="obsInfoIdRef" type="xs:IDREF">
            <xs:annotation>
                <xs:documentation>A reference to an Observation info</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="locationType">
        <xs:annotation>
            <xs:documentation>The informations about where a quantity is located</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="UUID" minOccurs="0" type="tps:guidType">
                        <xs:annotation>
                            <xs:documentation>Universally unique ID for tracking objects through import/export workflows</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the location</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Areas">
                        <xs:annotation>
                            <xs:documentation>A set of reference to existing area types</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="AreaRef" maxOccurs="unbounded" minOccurs="1">
                                    <xs:annotation>
                                        <xs:documentation>A reference to an area
                                        </xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF" use="required"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Alignments">
                        <xs:annotation>
                            <xs:documentation>A set of reference to existing alignments</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence maxOccurs="1">
                                <xs:element minOccurs="1" name="AlignmentRef" maxOccurs="unbounded">
                                    <xs:annotation>
                                        <xs:documentation>A reference to an alignment</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Regions">
                        <xs:annotation>
                            <xs:documentation>A set of reference to existing regions</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence maxOccurs="1">
                                <xs:element maxOccurs="unbounded" name="RegionRef">
                                    <xs:annotation>
                                        <xs:documentation>A reference to a region</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Color" type="tps:colorType" default="000000">
                        <xs:annotation>
                            <xs:documentation>The color of the location</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="taskAmountType">
        <xs:annotation>
            <xs:documentation>The Amount type describes the distribution of a quantity on a location</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="StartStation" type="xs:double" default="0.0">
                <xs:annotation>
                    <xs:documentation>The starting station of the amount</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="EndStation" type="xs:double" default="0.0">
                <xs:annotation>
                    <xs:documentation>The ending station of the amount</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Amount" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The amount value</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="quantityUsageType">
        <xs:annotation>
            <xs:documentation>The usage of the quantity (can be none, cut, fill, other)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="none"/>
            <xs:enumeration value="cut"/>
            <xs:enumeration value="fill"/>
            <xs:enumeration value="other"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="materialType">
        <xs:annotation>
            <xs:documentation>The material type describes  the type of work or material (or cost code) of the quantity </xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="UUID" minOccurs="0" type="tps:guidType">
                        <xs:annotation>
                            <xs:documentation>Universally unique ID for tracking objects through import/export workflows</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the material or a cost code</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Unit" type="tps:volumeType">
                        <xs:annotation>
                            <xs:documentation>The volume units</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Usage" type="tps:quantityUsageType"
                        default="none">
                        <xs:annotation>
                            <xs:documentation>The type of work</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CodeDescriptionRef" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to a Code Description</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="DimensionType" type="tps:dimensionType"
                        default="volume">
                        <xs:annotation>
                            <xs:documentation>The dimension type of the material</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DistanceUnits" type="tps:distanceType"
                        default="meters">
                        <xs:annotation>
                            <xs:documentation>Distance units if aplicable to the dimention type</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Color" type="tps:colorType" default="000000">
                        <xs:annotation>
                            <xs:documentation>The color of the material</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Cost" type="xs:double" default="0.0">
                        <xs:annotation>
                            <xs:documentation>The cost of the material per unit. This cost multiplied by the amount of material will give the total cost</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Swell" type="xs:double" default="1.0">
                        <xs:annotation>
                            <xs:documentation>The swell for volume material</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Shrink" type="xs:double" default="1.0">
                        <xs:annotation>
                            <xs:documentation>The shrink for volume material</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="quantityType">
        <xs:annotation>
            <xs:documentation>Quantity type describes the location, the material its distribution</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="UUID" minOccurs="0" type="tps:guidType">
                        <xs:annotation>
                            <xs:documentation>Universally unique ID for tracking objects through import/export workflows</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Location">
                        <xs:annotation>
                            <xs:documentation>Where the quantity is located by reference
                            </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Material">
                        <xs:annotation>
                            <xs:documentation>The type of work or material (or cost code) of the quantity by reference</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Amounts">
                        <xs:annotation>
                            <xs:documentation>A set of amounts</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" minOccurs="1" name="Amount"
                                    type="tps:taskAmountType">
                                    <xs:annotation>
                                        <xs:documentation>The distribution of the quantity at the specified location</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="dependencyModeType">
        <xs:annotation>
            <xs:documentation>The relationship between two tasks (can be finish-finish, finish-start, start-finish and start-start)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="finish_finish"/>
            <xs:enumeration value="finish_start"/>
            <xs:enumeration value="start_finish"/>
            <xs:enumeration value="start_start"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="dependencyType">
        <xs:annotation>
            <xs:documentation>The Dependency type describes the relationship between two tasks: a predecessor and a successor</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Predecessor">
                        <xs:annotation>
                            <xs:documentation>A reference to a predecessor task</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Successor">
                        <xs:annotation>
                            <xs:documentation>A reference to a successor task</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Type" type="tps:dependencyModeType">
                        <xs:annotation>
                            <xs:documentation>The relationship between the specified predecessor and successor tasks</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="MinDelay" type="xs:dayTimeDuration">
                        <xs:annotation>
                            <xs:documentation>The minimum allowed delay (or lag) of the successor in relation to the predecessor</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="MaxDelay" type="xs:dayTimeDuration">
                        <xs:annotation>
                            <xs:documentation>The maximum allowed delay (or lag) of the successor in relation to the predecessor</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="locationIntersectionType">
        <xs:annotation>
            <xs:documentation>The Dependency type describes the relationship between two tasks: a predecessor and a successor</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the intersection</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="FromLocation">
                        <xs:annotation>
                            <xs:documentation>The location from which this intersection starts</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="FromStation" type="xs:double" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The station the location from which this intersection starts</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ToLocation">
                        <xs:annotation>
                            <xs:documentation>The location to which this intersection ends</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="ToStation" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The station on the location to which this intersection ends</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Distance" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Explicitly defined distance</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="Bidirectional" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Specifies if this intersection goes both ways</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="taskConstraintType">
        <xs:annotation>
            <xs:documentation>The time constraint type (can be "as soon as possible", "as late as possible", "must start on...", "must finish on...", "start no earlier than...", "start no later than...", "finish no earlier than...", "finish no later than")</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="as_soon_as_possible"/>
            <xs:enumeration value="as_late_as_possible"/>
            <xs:enumeration value="must_start_on"/>
            <xs:enumeration value="must_finish_on"/>
            <xs:enumeration value="start_no_earlier_than"/>
            <xs:enumeration value="start_no_later_than"/>
            <xs:enumeration value="finish_no_earlier_than"/>
            <xs:enumeration value="finish_no_later_than"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="taskStatusType">
        <xs:annotation>
            <xs:documentation>The status of a task (can be not started, in progress, suspended or completed)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="not_started"/>
            <xs:enumeration value="in_progress"/>
            <xs:enumeration value="suspended"/>
            <xs:enumeration value="completed"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="taskType">
        <xs:annotation>
            <xs:documentation>The task definition</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="UUID" minOccurs="0" type="tps:guidType">
                        <xs:annotation>
                            <xs:documentation>Universally unique ID for tracking objects through import/export workflows</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The required name of the task</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ParentTask">
                        <xs:annotation>
                            <xs:documentation>A reference to the parent task</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="ChildTasks">
                        <xs:annotation>
                            <xs:documentation>A collection of references to child tasks</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" minOccurs="1" name="ChildTask">
                                    <xs:annotation>
                                        <xs:documentation>The child task by reference</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="StartTime" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>The start time</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="FinishTime" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>The finish time
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Duration" type="xs:dayTimeDuration">
                        <xs:annotation>
                            <xs:documentation>The duration of the task</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Quantities">
                        <xs:annotation>
                            <xs:documentation>Deprecated. Quantities associated with the progress of this task</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" name="QuantityRef">
                                    <xs:annotation>
                                        <xs:documentation>A reference to an existing quantity</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Constraint">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element minOccurs="1" name="Type" type="tps:taskConstraintType">
                                    <xs:annotation>
                                        <xs:documentation>Timing constraints for the start and finish times </xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element minOccurs="0" name="Date" type="xs:dateTime">
                                    <xs:annotation>
                                        <xs:documentation>The date used by the constraint - Not required when type is ASAP or ALAP</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Status" type="tps:taskStatusType"
                        default="not_started">
                        <xs:annotation>
                            <xs:documentation>The status of the task</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="SurfaceName">
                        <xs:annotation>
                            <xs:documentation>The name of an existing surface with optional idRef
                            </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="idRef" type="xs:IDREF" use="optional"/>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="ActualStart" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>Actual start time</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ActualFinish" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>Actual finish time</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Location">
                        <xs:annotation>
                            <xs:documentation>
                          Where the task is located by reference
                        </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Material">
                        <xs:annotation>
                            <xs:documentation>The type of work or material (or cost code) of the task by reference</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Amounts">
                        <xs:annotation>
                            <xs:documentation>A set of amounts</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" minOccurs="1" name="Amount"
                                    type="tps:taskAmountType">
                                    <xs:annotation>
                                        <xs:documentation>The distribution of the task quantity at the specified location</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="clipModeType">
        <xs:annotation>
            <xs:documentation>The mode in which linework pass the symbol will be clipped(can be no_clip, rectangle, auto_circle, polygon, circle)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="no_clip"/>
            <xs:enumeration value="rectangle"/>
            <xs:enumeration value="auto_circle"/>
            <xs:enumeration value="polygon"/>
            <xs:enumeration value="circle"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="styleType">
        <xs:annotation>
            <xs:documentation>Common style related informations</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>An unique name that identifies the style</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Description" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A description of the style</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="Scalable" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>A flag that indicates whether the style is scalable</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="ScaleFactor" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The scale factor applied to the x,y,z axis</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="RotationAngle" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The rotation angle around the z-axis. It's counter-clockwise, with zero on x-axis (east).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="clipType">
        <xs:annotation>
            <xs:documentation>The clip type describes the clipping mode used to draw a symbol</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Mode" type="tps:clipModeType">
                <xs:annotation>
                    <xs:documentation>The mode in which linework pass the symbol will be clipped</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Radius" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Only valid if Mode is "circle"</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Polygon">
                <xs:annotation>
                    <xs:documentation>The polygon definition, only valid if Mode is "polygon"</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="3" name="Vertex"
                            type="tps:position2DType"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="pointSymbolType">
        <xs:annotation>
            <xs:documentation>The point symbol definition</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:styleType">
                <xs:sequence>
                    <xs:element name="Entities">
                        <xs:annotation>
                            <xs:documentation>A required reference to a block definition. The block definition contains all the entities that are included in the symbol. </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="1" name="Clip" type="tps:clipType">
                        <xs:annotation>
                            <xs:documentation>Symbol clip data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="NorthPoint" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>A flag that indicates whether the symbol is to be used as a north point</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="lineStyleType">
        <xs:annotation>
            <xs:documentation>The line style definition</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:styleType">
                <xs:sequence>
                    <xs:element name="Entities">
                        <xs:annotation>
                            <xs:documentation>A required reference to a block definition. The block definition contains all the entities that are included in the symbol. </xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="PatternLength" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The length of each pattern</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="true" minOccurs="0" name="Repeteable" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>A flag that indicates whether the line style will repeat the pattern</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="imageFormatType">
        <xs:annotation>
            <xs:documentation>The format of the image encoded as base64Binary (it can be bmp, png, jpeg, tiff, tga, pdf of geotiff)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="bmp"/>
            <xs:enumeration value="png"/>
            <xs:enumeration value="jpeg"/>
            <xs:enumeration value="tiff"/>
            <xs:enumeration value="tga"/>
            <xs:enumeration value="pdf"/>
            <xs:enumeration value="geotiff"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="textureImageType">
        <xs:annotation>
            <xs:documentation>An image linked to one or more textures</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Data">
                        <xs:annotation>
                            <xs:documentation>The image, stored as a base64Binary</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="Format" type="tps:imageFormatType">
                    <xs:annotation>
                        <xs:documentation>The format of the image content</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="textureType">
        <xs:annotation>
            <xs:documentation>The texture definition</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:styleType">
                <xs:sequence>
                    <xs:element name="ImageRef">
                        <xs:annotation>
                            <xs:documentation>A reference to a texture image</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="imageType">
        <xs:annotation>
            <xs:documentation>The CAD image definition</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="SourcePath" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The path of the Image (relative path, inside 'filename'.maxml data folder)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Raster">
                        <xs:annotation>
                            <xs:documentation>Optional metadata collection</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element minOccurs="0" name="Format" type="tps:imageFormatType">
                                    <xs:annotation>
                                        <xs:documentation>The format of the image</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element minOccurs="0" name="Width" type="xs:integer">
                                    <xs:annotation>
                                        <xs:documentation>The width of the Image in pixels</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element minOccurs="0" name="Height" type="xs:integer">
                                    <xs:annotation>
                                        <xs:documentation>The height of the image in pixels</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="World" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Raster transformation data</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element minOccurs="0" name="WorldFile" type="xs:string">
                                    <xs:annotation>
                                        <xs:documentation>The path of the Esri world file that contains parameters to georeference the raster image</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element minOccurs="0" name="WorldUnits" type="tps:distanceType">
                                    <xs:annotation>
                                        <xs:documentation>The world coordinates units
                                        </xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="InsertPoint" type="tps:position2DType"
                                    minOccurs="0">
                                    <xs:annotation>
                                        <xs:documentation>The x,y map coordinates of the center of the bottom left pixel</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" name="ScaleX" type="xs:double"
                                    minOccurs="0">
                                    <xs:annotation>
                                        <xs:documentation>The change of scale in x direction</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" name="ScaleY" type="xs:double"
                                    minOccurs="0">
                                    <xs:annotation>
                                        <xs:documentation>The change of scale in y direction</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="Rotation"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The rotation angle, measured counter-clockwise from the x-axis. (in degrees: [0:360])</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element default="0.0" minOccurs="0" name="ShearFactor"
                                    type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>Shear factor along the x-axis = tan (skew angle) (the skew angle is measured from the y-axis)</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="Name" type="xs:string"/>
                    <xs:element default="true" minOccurs="0" name="Visible" type="xs:boolean"/>
                    <xs:element default="0" minOccurs="0" name="Transparency" type="xs:short"/>
                    <xs:element minOccurs="0" name="LayerRef">
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="csIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>It's a reference to a Coordinate System</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="transactionType">
        <xs:annotation>
            <xs:documentation>Transaction data is either the definition of a Transaction Measurement session or a sequence of Actions on elements</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Counter" type="xs:nonNegativeInteger">
                <xs:annotation>
                    <xs:documentation>The Transaction counter, used to detect lost Transactions. The first Transaction of a session (that is, the one defining TransactionSession tag) should have Counter 0, thus the first Action should be included in a Transaction with Counter 1.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:choice>
                <xs:element name="TransactionSession" type="tps:transactionSessionType">
                    <xs:annotation>
                        <xs:documentation>The first Transaction must contain a Transaction Measurement session. Each Action contained in a Transaction must refer to a Measurement session defined in a previous Transaction</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:sequence maxOccurs="unbounded" minOccurs="1">
                    <xs:element name="UpdateAction" minOccurs="0" type="tps:updateActionType">
                        <xs:annotation>
                            <xs:documentation>An update Action taken on a sequence of elements. Elements can be new (created) or old (modified). In the same Action, one element cannot be involved more than once (elements of the same type but with different id are allowed).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="DeleteAction" type="tps:deleteActionType">
                        <xs:annotation>
                            <xs:documentation>A delete Action taken on a sequence of elements. Elements are identified by their MAXML identifiers.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:choice>
            <xs:element minOccurs="0" name="RefIDs" type="tps:RefIDs_type">
                <xs:annotation>
                    <xs:documentation>List of IDs that are referenced in the document, but not defined (expected that referenced object is known to the recipient). Technically allows to make XML document valid and skip data redefinition.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="transactionSessionType">
        <xs:annotation>
            <xs:documentation>A Transaction Measurement session is a combination of a Device, a Controller, a Digital Level run, a Gnss antenna and a Coordinate system. It represents a session during which the user has taken measurements with these instruments and parameters. If an element refers to a Measurement session, it's always possibile to find which instrument was used to take its measurement.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="ApplicationInfo" type="tps:applicationType">
                <xs:annotation>
                    <xs:documentation>The information about an application</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ProjectInfo" type="tps:jobInfoType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The general information about a Job</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Device" type="tps:deviceType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A Gnss device, a TS device or a DL device. It contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Controller" type="tps:controllerType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A Controller contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DLRun" type="tps:dlRunType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A Digital Level run contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSAntennaSetting" type="tps:gpsAntennaSettingsType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A Gnss antenna contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CoordSystemInfo" type="tps:coordinateSystemInfoType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>A Coordinate system can refer to structures contained in external files, like geoids. It contains also Localization data. It contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ObservationInfo" type="tps:observationInfoType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>An Observation info has the general information about a Measurement session</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:ID">
            <xs:annotation>
                <xs:documentation>Raw data and Actions can refer to a Transaction Measurement session through this id</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:group name="elementGroup">
        <xs:annotation>
            <xs:documentation>A single element, of any type</xs:documentation>
        </xs:annotation>
        <xs:choice>
            <xs:element name="Layer" type="tps:layerType">
                <xs:annotation>
                    <xs:documentation>A Layer is defined by drawing parameters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CodeDescription" type="tps:codeDescriptionType">
                <xs:annotation>
                    <xs:documentation>A Code that can be used by an element to gain some properties</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ObservationInfo" type="tps:observationInfoType">
                <xs:annotation>
                    <xs:documentation>An Observation info has the general information about a Measurement session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DLRun" type="tps:dlRunType">
                <xs:annotation>
                    <xs:documentation>A Digital Level run contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Device" type="tps:deviceType">
                <xs:annotation>
                    <xs:documentation>A Gnss device, a TS device or a DL device. It contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Controller" type="tps:controllerType">
                <xs:annotation>
                    <xs:documentation>A Controller contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CoordSystemInfo" type="tps:coordinateSystemInfoType">
                <xs:annotation>
                    <xs:documentation>A Coordinate system can refer to structures contained in external files, like geoids. It contains also Localization data. It contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GPSAntennaSettings" type="tps:gpsAntennaSettingsType">
                <xs:annotation>
                    <xs:documentation>A Gnss antenna contributes to create a Measurement Session</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BlockDefinition" type="tps:blockDefinitionType">
                <xs:annotation>
                    <xs:documentation>A Block definition is defined as a collection of objects and a reference point (the real Block is an object itself, and can be included in another Block definition)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ScanningSession" type="tps:scanningSessionType">
                <xs:annotation>
                    <xs:documentation>A Scanning Session contains a collection of points measured over an oriented image</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StaEquationSet" type="tps:staEquationSetType">
                <xs:annotation>
                    <xs:documentation>A collection of Station equations</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="HorizontalAlignment" type="tps:horizontalAlignmentType">
                <xs:annotation>
                    <xs:documentation>A Horizontal alignment is defined by a sequence of horizontal elements. It's used by an Alignment or a Road string</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="VerticalAlignment" type="tps:verticalAlignmentType">
                <xs:annotation>
                    <xs:documentation>A Vertical alignment is defined by a sequence of vertical positions. It's used by an Alignment or a Road string</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RoadTemplate" type="tps:roadTemplateType">
                <xs:annotation>
                    <xs:documentation>A Road template is defined by a sequence of 2D segments. It's used by a Cross section</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="CrossSectionSet" type="tps:crossSectionSetType">
                <xs:annotation>
                    <xs:documentation>A sequence of Cross sections, used by an Alignment</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RoadStringSet" type="tps:roadStringSetType">
                <xs:annotation>
                    <xs:documentation>A sequence of Road strings, that can be used by an Alignment instead of Cross sections</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Alignment" type="tps:alignmentType">
                <xs:annotation>
                    <xs:documentation>An Alignment is defined by a Horizontal alignment, a Vertical alignment and a Cross section set (or a Road string set).</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="OrientationJob" type="tps:orientationJobType">
                <xs:annotation>
                    <xs:documentation>An Orientation job is defined as a collection of orientation sessions and stereo pairs</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Surface" type="tps:surfaceType">
                <xs:annotation>
                    <xs:documentation>A Surface is defined by a collection of triangles, which refers to a sequence of positions</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:group ref="tps:observationSessionGroup">
                <xs:annotation>
                    <xs:documentation>A single Raw data</xs:documentation>
                </xs:annotation>
            </xs:group>
            <xs:group ref="tps:objectGroup"/>
            <xs:element name="FieldReport" type="tps:fieldReportsType">
                <xs:annotation>
                    <xs:documentation>A Field report with job info, surveyor info, coordinates, time, notes and taken images</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Region" type="tps:regionType">
                <xs:annotation>
                    <xs:documentation>A Region describes an area with some attributes</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ObjectList" type="tps:objectListType">
                <xs:annotation>
                    <xs:documentation>An Object List is a list of references to Objects (usually used to describe a Point List)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="PointCustomSymbol" type="tps:pointSymbolType">
                <xs:annotation>
                    <xs:documentation>A customized point symbol definition</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="LineCustomStyle" type="tps:lineStyleType">
                <xs:annotation>
                    <xs:documentation>A customized line style definition</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="TextureImage" type="tps:textureImageType">
                <xs:annotation>
                    <xs:documentation>A texture image definition</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Texture" type="tps:textureType">
                <xs:annotation>
                    <xs:documentation>A texture definition</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Location" type="tps:locationType">
                <xs:annotation>
                    <xs:documentation>A location is a set of informations about where a quantity is located</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Material" type="tps:materialType">
                <xs:annotation>
                    <xs:documentation>A material is a type of work or material (or cost code) of the quantity </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Quantity" type="tps:quantityType">
                <xs:annotation>
                    <xs:documentation>A quantity type describes the location, the material and its distribution</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Task" type="tps:taskType">
                <xs:annotation>
                    <xs:documentation>A task definition</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Dependency" type="tps:dependencyType">
                <xs:annotation>
                    <xs:documentation>A dependency type describes the relationship between two tasks: a predecessor and a successor</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BkgImage" type="tps:imageType">
                <xs:annotation>
                    <xs:documentation>An image used as CAD background</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:choice>
    </xs:group>
    <xs:complexType name="updateActionType">
        <xs:annotation>
            <xs:documentation>An update Action taken on a sequence of elements. Elements can be new (created) or old (modified). In the same Action, one element cannot be involved more than once (elements of the same type but with different id are allowed).</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="Units" type="tps:unitsType">
                <xs:annotation>
                    <xs:documentation>The information about the units used in this Transaction</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:group maxOccurs="unbounded" minOccurs="1" ref="tps:elementGroup">
                <xs:annotation>
                    <xs:documentation>The sequence of elements involved in the Action</xs:documentation>
                </xs:annotation>
            </xs:group>
        </xs:sequence>
        <xs:attribute name="sessIdRef" type="xs:string">
            <xs:annotation>
                <xs:documentation>A reference to the Measurement session related to the Action. All the elements involved by the Action refer to this Measurement session</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="type">
            <xs:annotation>
                <xs:documentation>The type of the Action taken (can be created or modified)</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="created"/>
                    <xs:enumeration value="modified"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="timestamp" type="xs:dateTime">
            <xs:annotation>
                <xs:documentation>The creation datetime of the Action</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="deleteActionType">
        <xs:annotation>
            <xs:documentation>A delete Action taken on a sequence of elements. Elements are identified by their MAXML identifiers.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Elements" type="xs:string">
                <xs:annotation>
                    <xs:documentation>A collection of elements, defined by their MAXML identifiers. Identifiers must be separated with a space.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="sessIdRef" type="xs:string">
            <xs:annotation>
                <xs:documentation>A reference to the Measurement session related to the Action. All the elements involved by the Action refer to this Measurement session</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="timestamp" type="xs:dateTime">
            <xs:annotation>
                <xs:documentation>The creation datetime of the Action</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="jobHistoryType">
        <xs:annotation>
            <xs:documentation>A sequence of Transaction that describes the history of the changes made to the job</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Transaction"
                type="tps:transactionType"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="TypeCSType">
        <xs:annotation>
            <xs:documentation>The type of Coordinate system (can be datum xyz, datum lbh, grid, ground, local or undefined)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="datum_xyz"/>
            <xs:enumeration value="datum_lbh"/>
            <xs:enumeration value="grid"/>
            <xs:enumeration value="ground"/>
            <xs:enumeration value="local"/>
            <xs:enumeration value="undefined"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="csSourceType">
        <xs:annotation>
            <xs:documentation>The type of coordinate system source (can be predefined, external, userdefined or undefined)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="predefined"/>
            <xs:enumeration value="external"/>
            <xs:enumeration value="userdefined"/>
            <xs:enumeration value="undefined"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="methodType">
        <xs:annotation>
            <xs:documentation>The type of method used by parameters datum transformation (can be strict or linearized)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="linearized"/>
            <xs:enumeration value="strict"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PlaneCoordOrderType">
        <xs:annotation>
            <xs:documentation>The order of plane coordinates for display (can be NEH (default), or ENH)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="NEH"/>
            <xs:enumeration value="ENH"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="axesDirectionType">
        <xs:annotation>
            <xs:documentation>The direction of coordinates growth.
Could be
NE, ///usual northing-easting axes (like in wgs84)
ES, ///easting-southing
SE, ///southing-easting
EN, ///easting-northing
WN, ///westing-northing (like in Malayzian projections)
WS, ///westing-southing
SW, ///southing-westing (like in South Africa)
NW  ///northing-westing (like in Danish projections)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="NE"/>
            <xs:enumeration value="ES"/>
            <xs:enumeration value="SE"/>
            <xs:enumeration value="EN"/>
            <xs:enumeration value="WN"/>
            <xs:enumeration value="WS"/>
            <xs:enumeration value="SW"/>
            <xs:enumeration value="NW"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="mmGPSCalibrationSetType">
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="Name"/>
                    <xs:element minOccurs="0" maxOccurs="4" name="TransmitterInfo">
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute default="false" name="default" type="xs:boolean"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="helmertParametersType">
        <xs:annotation>
            <xs:documentation>Helmert transformation parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:group ref="tps:helmertParametersGroup"/>
            <xs:element minOccurs="0" name="HorizontalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum horizontal error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF214 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VerticalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum vertical error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF215 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="molodenskyBdksParametersType">
        <xs:annotation>
            <xs:documentation>Molodensky-Badekas transformation parameters</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:group ref="tps:helmertParametersGroup"/>
            <xs:element name="P0X" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The new XYZ center of rotation X coordinate // RTCM DF163</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="P0Y" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The new XYZ center of rotation Y coordinate // RTCM DF164</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="P0Z" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The new XYZ center of rotation Z coordinate // RTCM DF165</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="HorizontalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum horizontal error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF214 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VerticalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum vertical error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF215 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ellipsoidDefinitionType">
        <xs:annotation>
            <xs:documentation>Ellipsoid description parameters</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the ellipsoid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Comment" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The comment to the ellipsoid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="EpsgCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The code of the ellipsoid by The European Petroleum Survey Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Units" type="tps:distanceType" default="meters">
                        <xs:annotation>
                            <xs:documentation>The units used in the ellipsoid definition</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Source" type="tps:csSourceType"
                        default="undefined">
                        <xs:annotation>
                            <xs:documentation>The source of the ellipsoid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="A" type="xs:double">
                        <xs:annotation>
                            <xs:documentation> The semi-major axis of the ellipsoid. This is distance unit.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:choice minOccurs="0">
                        <xs:element minOccurs="0" name="InvF" type="xs:double">
                            <xs:annotation>
                                <xs:documentation>The inverse flattering</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element maxOccurs="1" minOccurs="0" name="E" type="xs:double">
                            <xs:annotation>
                                <xs:documentation>Eccentricity</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element maxOccurs="1" minOccurs="0" name="B" type="xs:double">
                            <xs:annotation>
                                <xs:documentation>Semi-minor axis. This is distance unit.</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:choice>
                    <xs:element minOccurs="0" name="CTCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Application managed code. Technical field. Do not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="customDatumTransformationType">
        <xs:annotation>
            <xs:documentation>The properties of the custom datum transformation (dll-based datum transformation)</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="1" name="DllName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of library that contains parser for the datum transformation</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DataFile" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The name of data file for this datum transformation. Common extension is .dff</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ParameterDataFile" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The .gsb file that contains corrections for the region of the datum. This used for The Canadian Spatial Reference System datums.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="ReferenceDatum">
                <xs:annotation>
                    <xs:documentation>The name of the datum that considered reference for the values.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="idRef" type="xs:IDREF">
                                <xs:annotation>
                                    <xs:documentation>Optional reference to ReferenceDatum definition</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="tableProjectionType">
        <xs:annotation>
            <xs:documentation>The type for the table projection (library-based) data</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="1" name="DllName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of library that contains parser for the grid</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="DataFile" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of datafile for this grid. Common extension is .prj. This used in the RTCM projections.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ParameterDataFile" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The parameter datafile for the grid. Used by the SnakeGrid projection.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="paramsProjectionType">
        <xs:annotation>
            <xs:documentation>The type for the projection parameters container</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="1" name="P0" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the projection of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="1" name="P1" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="1" name="P2" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P3" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P4" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P5" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P6" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P7" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P8" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P9" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P10" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P11" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P12" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P13" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P14" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element maxOccurs="1" minOccurs="0" name="P15" type="tps:projParameterDataType">
                <xs:annotation>
                    <xs:documentation>The parameter value for the grid of the defined type.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="projParameterDataType">
        <xs:annotation>
            <xs:documentation>The datatype for a projection parameter</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:double">
                <xs:attribute name="name" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>The name of the parameter for the grid of defined type. For example, "Central Meridian", "Scale", etc.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="type" type="tps:measureUnitsType">
                    <xs:annotation>
                        <xs:documentation>The type of value</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="g2gOriginPointType">
        <xs:annotation>
            <xs:documentation>The origin point for grid to ground transformation.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Coords" type="tps:coordsNEHType">
                <xs:annotation>
                    <xs:documentation>Grid coordinates</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the point</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="RefPoint">
                <xs:annotation>
                    <xs:documentation>A reference to the original point that can be defined in another coordinates system</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:group name="geoidGroup">
        <xs:sequence>
            <xs:element name="GeoidName" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The name of the geoid.
(In case of external file it must be found inside the file)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GeoidSource" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The file name of the geoid</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="GeoidType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The type of the geoid (can be 95, 99, global 2008, gff, australian, canadian, denmark, dutch 2004, norway, swedish, austrian germany, belgium, berlin, dutch, french 98, 2003, bkg germany, japan 2000, japan 96, korea k, korea pnu95n, malaysia, north ireland, geoid model, slovakia, spain, swiss 2004, uk, finland, israel, new zealand, slovenia, turky)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="95"/>
                        <xs:enumeration value="99"/>
                        <xs:enumeration value="global_2008"/>
                        <xs:enumeration value="gff"/>
                        <xs:enumeration value="australian"/>
                        <xs:enumeration value="canadian"/>
                        <xs:enumeration value="denmark"/>
                        <xs:enumeration value="dutch_2004"/>
                        <xs:enumeration value="norway"/>
                        <xs:enumeration value="swedish"/>
                        <xs:enumeration value="austrian_germany"/>
                        <xs:enumeration value="belgium"/>
                        <xs:enumeration value="berlin"/>
                        <xs:enumeration value="dutch"/>
                        <xs:enumeration value="french_98"/>
                        <xs:enumeration value="2003"/>
                        <xs:enumeration value="bkg_germany"/>
                        <xs:enumeration value="japan_2000"/>
                        <xs:enumeration value="japan_96"/>
                        <xs:enumeration value="korea_k"/>
                        <xs:enumeration value="korea_pnu95n"/>
                        <xs:enumeration value="malaysia"/>
                        <xs:enumeration value="n_ireland"/>
                        <xs:enumeration value="geoid_model"/>
                        <xs:enumeration value="slovakia"/>
                        <xs:enumeration value="spain"/>
                        <xs:enumeration value="swiss_2004"/>
                        <xs:enumeration value="uk"/>
                        <xs:enumeration value="finland"/>
                        <xs:enumeration value="israel"/>
                        <xs:enumeration value="nz"/>
                        <xs:enumeration value="slovenia"/>
                        <xs:enumeration value="turky"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="planeType">
        <xs:annotation>
            <xs:documentation>A Plane describes a planar surface with a particular location and orientation in three-dimensional space</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Plane</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Boundary" type="tps:polylineType">
                        <xs:annotation>
                            <xs:documentation>A sequence of Vertices, defining the bounding polygon</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:choice>
                        <xs:element name="Point" type="tps:coordsNEHType">
                            <xs:annotation>
                                <xs:documentation>The coordinates through which the plane passes</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element name="PointRef">
                            <xs:annotation>
                                <xs:documentation>A reference to an existing design point</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:attribute name="idRef"/>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                    <xs:element name="ConstantElevation" type="xs:boolean" default="true"
                        minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The constant elevation value in case of flat planes</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Direction" type="xs:double" default="0.0" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The mainfall slope direction (radians)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Mainfall" type="xs:double" default="0.0" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The slope angle along the plane in the direction of the mainfall (radians)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Crossfall" type="xs:double" default="0.0" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The slope angle in the direction that is 90° clockwise from the mainfall direction (radians)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="GridInterval" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The spacing between grid lines</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="GridIntervalCross"
                        type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The space between crosses on the grid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="1.0" minOccurs="0" name="CutFillRatio" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The effective cut/fill ratio</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0.0" minOccurs="0" name="ExtraImportVolume"
                        type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The extra import volume
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="true" minOccurs="0" name="Active" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the plane is active</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="true" minOccurs="0" name="Valid" type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Represents whether the plane is valid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:choice minOccurs="0">
                        <xs:element default="true" name="Plot" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>Defines whether Plane is visible (true if not set)</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element default="false" name="PlotByLayer" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>Plane visiblility is defined by layer</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:choice>
                    <xs:element minOccurs="0" name="GridDrawProperties"
                        type="tps:areaDrawPropertiesType">
                        <xs:annotation>
                            <xs:documentation>Represents the properties used to draw the grid lines of the Plane</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="LayerRef">
                        <xs:annotation>
                            <xs:documentation>A reference to a Layer</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="CreationTime" type="xs:dateTime">
                        <xs:annotation>
                            <xs:documentation>The creation datetime of the Plane
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Description" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Description of the plane surface</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="MainfallGridLineStyle"
                        type="tps:lineDrawPropertiesType"/>
                    <xs:element minOccurs="0" name="CrossfallGridLineStyle"
                        type="tps:lineDrawPropertiesType"/>
                    <xs:element default="true" minOccurs="0" name="GridVisible" type="xs:boolean"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="surveyXSectionSetType">
        <xs:annotation>
            <xs:documentation>A Road survey</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The name of the Road survey</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="SurveyXSectionPoint">
                        <xs:annotation>
                            <xs:documentation>a sequence of Road survey cross section points</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="Station" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The station of the point</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="StationOffset" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The station offset of the point</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="Offset" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The offset of the point</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="Elevation" type="xs:double">
                                    <xs:annotation>
                                        <xs:documentation>The elevation of the point</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="CodeDescriptionRef" minOccurs="0">
                                    <xs:annotation>
                                        <xs:documentation>A reference to the Code Description of the point</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="csIdRef" type="xs:IDREF">
                    <xs:annotation>
                        <xs:documentation>It's a reference to a Coordinate System</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="userModeType">
        <xs:annotation>
            <xs:documentation>The geometrical representation chosen by the user (can be offset_height, grade, cl_offset or rate)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="offset_height"/>
            <xs:enumeration value="grade"/>
            <xs:enumeration value="cl_offset"/>
            <xs:enumeration value="rate"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="prismInfoType">
        <xs:annotation>
            <xs:documentation>The Information about a Prism</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element minOccurs="0" name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Prism</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="Constant" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The Prism constant, in mm</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="reportSettingsType">
        <xs:annotation>
            <xs:documentation>The Settings for Report generation</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="StakeReportTitle" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The title (company) for each Stake Report</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="FieldReportTitle" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The title (company) for each Field Report</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="LogoFilePath" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The logo (company) for each Report (relative path, inside 'filename'.maxml data folder)</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="surfaceDrawPropertiesType">
        <xs:annotation>
            <xs:documentation>The Settings for Report generation</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="IsVisible" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Tells whether the Surface is visible</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="IsLocked" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Tells whether the Surface is selectable on the map</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="IsContoursVisible" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Tells whether the countours are visible for this Surface</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="GridAzimuth" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The Grid Azimuth used when drawing mesh. In degrees from direction of North by clockwise.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="pointCloudSetType">
        <xs:annotation>
            <xs:documentation>The Information about a Point Cloud Set</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element minOccurs="1" name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the Set</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" name="PointCloud" type="tps:pointCloudType"/>
                    <xs:element minOccurs="0" name="Notes" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The notes of the Set</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="pointCloudType">
        <xs:annotation>
            <xs:documentation>The Information about a Prism</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element minOccurs="1" name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The notes of the Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Layer" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to the Layer of the Point Cloud</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="1" name="SourceFileFormatId"
                        type="tps:sourceFileFormatIdType">
                        <xs:annotation>
                            <xs:documentation>The format of the source file</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="SourceFilePath" type="xs:string"/>
                    <xs:element name="DistanceUnits" type="tps:distanceType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The units for the point coordinates (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="ElevationUnits" type="tps:distanceType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The units for the point elevations. If not set, Distance Units are used. (can be meters, us_feet, int_feet, us_feet_inches, int_feet_inches, us_chains, int_chains, mile, int_inches, us_inches, millimeters, centimeters, kilometers, microinches, mils, int_yards, us_yards, angstroms, nanometers, microns, decimeters, decameters, hectometers, gigameters, astronomical_units, light_years or parsecs)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CacheFilePath" type="xs:string"/>
                    <xs:element minOccurs="0" name="BoundingBox" type="tps:boundingBoxType"/>
                    <xs:element maxOccurs="1" minOccurs="1" name="TransformMatrix"
                        type="tps:transformMatrixType"/>
                    <xs:element minOccurs="0" name="Notes" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The notes of the Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="unknown" minOccurs="0" name="NumPointsQuality"
                        type="tps:numPointsQualityType">
                        <xs:annotation>
                            <xs:documentation>The quality of the information about number of points</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="NumPoints">
                        <xs:annotation>
                            <xs:documentation>The number of points (if NumPointsQuality is unknown then this value it's ignored)</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:int"/>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MAXML">
        <xs:annotation>
            <xs:documentation>All MAXML data, used for export and import of files</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ApplicationInfo" type="tps:applicationType">
                    <xs:annotation>
                        <xs:documentation>The information about the application</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="ProjectInfo" type="tps:jobInfoType">
                    <xs:annotation>
                        <xs:documentation>The general information about the Job</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Units" type="tps:unitsType" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>The information about the units used in this MAXML file</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="Layers" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Layers</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="Layer" type="tps:layerType">
                                <xs:annotation>
                                    <xs:documentation>The information about the default Layer is stored in ProjectInfo</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="DefaultLayer">
                                <xs:annotation>
                                    <xs:documentation>A reference to the default Layer of the Job</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="idRef" type="xs:string"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="CodeDescriptions" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Codes</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="CodeDescription"
                                type="tps:codeDescriptionType">
                                <xs:annotation>
                                    <xs:documentation>A code that can be used by an element to gain some properties</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="BlockDefinitions">
                    <xs:annotation>
                        <xs:documentation>A collection of Block definitions (also known as smart objects)</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="BlockDefinition"
                                type="tps:blockDefinitionType">
                                <xs:annotation>
                                    <xs:documentation>A Block definition is defined as a collection of objects and a reference point (the real Block is an object itself, and can be included in another Block definition)</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="ObservationInfos">
                    <xs:annotation>
                        <xs:documentation>A collection of Observation informations</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="ObservationInfo"
                                type="tps:observationInfoType">
                                <xs:annotation>
                                    <xs:documentation>An Observation info has the general information about a Measurement session</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="Devices">
                    <xs:annotation>
                        <xs:documentation>A collection of Devices</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="Device"
                                type="tps:deviceType">
                                <xs:annotation>
                                    <xs:documentation>A Gnss device, a TS device or a DL device. It contributes to create a Measurement Session</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="Controllers">
                    <xs:annotation>
                        <xs:documentation>A collection of Controllers</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="Controller"
                                type="tps:controllerType">
                                <xs:annotation>
                                    <xs:documentation>A Controller contributes to create a Measurement Session</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="DLRuns">
                    <xs:annotation>
                        <xs:documentation>A collection of Digital Level runs</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="DLRun"
                                type="tps:dlRunType">
                                <xs:annotation>
                                    <xs:documentation>A Digital Level run contributes to create a Measurement Session</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="AntennaSettings">
                    <xs:annotation>
                        <xs:documentation>A collection of Gnss antennas</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="GPSAntennaSetting"
                                type="tps:gpsAntennaSettingsType">
                                <xs:annotation>
                                    <xs:documentation>A Gnss antenna contributes to create a Measurement Session</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="CoordSystems" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Coordinate Systems</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="CoordSystemInfo" type="tps:coordinateSystemInfoType"
                                maxOccurs="unbounded" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A Coordinate system can refer to structures contained in external files, like geoids. It contains also Localization data. It contributes to create a Measurement Session</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ObservationSession" type="tps:observationSessionType"
                    minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Raw data, like Gnss positions or Total station Backsight points</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="MeasurementSessions">
                    <xs:annotation>
                        <xs:documentation>A collection of Measurement sessions</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence maxOccurs="unbounded" minOccurs="0">
                            <xs:element name="MeasurementSession" type="tps:measurementSessionType"
                                minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A Measurement session is a combination of a Device, a Controller, a Digital Level run, a Gnss antenna and a Coordinate system. It represents a session during which the user has taken measurements with these instruments and parameters. If an element refers to a Measurement session, it's always possibile to find which instrument was used to take its measurement.</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PlanEntities" type="tps:objectsType" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of drawing objects, like points and polylines</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element minOccurs="0" name="Roads">
                    <xs:annotation>
                        <xs:documentation>A collection of all data related to Alignments</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence maxOccurs="1" minOccurs="1">
                            <xs:element name="StaEquationSets" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Station equation sets</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="StaEquationSet"
                                            type="tps:staEquationSetType">
                                            <xs:annotation>
                                                <xs:documentation>A collection of Station equations</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="HorizontalAlignments" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Horizontal alignments</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="HorizontalAlignment"
                                            type="tps:horizontalAlignmentType">
                                            <xs:annotation>
                                                <xs:documentation>A Horizontal alignment is defined by a sequence of horizontal elements. It's used by an Alignment or a Road string</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="VerticalAlignments" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Vertical alignments</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="VerticalAlignment"
                                            type="tps:verticalAlignmentType">
                                            <xs:annotation>
                                                <xs:documentation>A Vertical alignment is defined by a sequence of vertical positions. It's used by an Alignment or a Road string</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="RoadTemplates" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Road templates</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="RoadTemplate" type="tps:roadTemplateType"
                                            maxOccurs="unbounded">
                                            <xs:annotation>
                                                <xs:documentation>A Road template is defined by a sequence of 2D segments. It's used by a Cross section</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="CrossSectionSets" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Cross section sets</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="CrossSectionSet"
                                            type="tps:crossSectionSetType" maxOccurs="unbounded">
                                            <xs:annotation>
                                                <xs:documentation>A sequence of Cross sections, used by an Alignment</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="RoadStringSets" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Road string sets</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="RoadStringSet"
                                            type="tps:roadStringSetType">
                                            <xs:annotation>
                                                <xs:documentation>A sequence of Road strings, that can be used by an Alignment instead of Cross sections</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="Alignments" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A collection of Alignments</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="Alignment"
                                            type="tps:alignmentType">
                                            <xs:annotation>
                                                <xs:documentation>An Alignment is defined by a Horizontal alignment, a Vertical alignment and a Cross section set (or a Road string set).</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Surfaces" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Surfaces</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="Surface"
                                type="tps:surfaceType">
                                <xs:annotation>
                                    <xs:documentation>A Surface is defined by a collection of triangles, which refers to a sequence of positions</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ScanningSessions" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Scanning sessions</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="ScanningSession"
                                type="tps:scanningSessionType">
                                <xs:annotation>
                                    <xs:documentation>A Scanning Session contains a collection of points measured over an oriented image</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="OrientationJobs" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Orientation jobs</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="OrientationJob"
                                type="tps:orientationJobType">
                                <xs:annotation>
                                    <xs:documentation>An Orientation job is defined as a collection of orientation sessions and stereo pairs</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="FieldReports" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Field reports</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="FieldReport"
                                type="tps:fieldReportsType">
                                <xs:annotation>
                                    <xs:documentation>A Field report with job info, surveyor info, coordinates, time, notes and taken images</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="Regions">
                    <xs:annotation>
                        <xs:documentation>A collection of Regions</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="Region"
                                type="tps:regionType">
                                <xs:annotation>
                                    <xs:documentation>A Region describes an area with some attributes</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="ObjectLists">
                    <xs:annotation>
                        <xs:documentation>A collection of Object Lists</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="ObjectList"
                                type="tps:objectListType">
                                <xs:annotation>
                                    <xs:documentation>An Object List is a list of references to Objects (usually used to describe a Point List)</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="CustomStyles">
                    <xs:annotation>
                        <xs:documentation>A collection of point symbols, line styles and textures</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="CustomPoints">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="PointSymbol"
                                            type="tps:pointSymbolType"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="CustomLines">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="LineStyle"
                                            type="tps:lineStyleType"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="Textures">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="TextureImage"
                                            type="tps:textureImageType"/>
                                        <xs:element maxOccurs="unbounded" name="Texture"
                                            type="tps:textureType"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="Management">
                    <xs:annotation>
                        <xs:documentation>Task data container</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element minOccurs="0" name="Locations">
                                <xs:annotation>
                                    <xs:documentation>A collection of locations</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Location" type="tps:locationType"
                                            maxOccurs="unbounded">
                                            <xs:annotation>
                                                <xs:documentation>Where the quantity is located</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="Materials">
                                <xs:annotation>
                                    <xs:documentation>A collection of materials</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Material" type="tps:materialType"
                                            maxOccurs="unbounded">
                                            <xs:annotation>
                                                <xs:documentation>Type of work or material (or cost code) of the quantity</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="Quantities">
                                <xs:annotation>
                                    <xs:documentation>Deprecated. A collection of quantities
                                    </xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="Quantity"
                                            type="tps:quantityType">
                                            <xs:annotation>
                                                <xs:documentation>Definition of a quantity
                                                </xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="Tasks">
                                <xs:annotation>
                                    <xs:documentation>A collection of Tasks</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="Task"
                                            type="tps:taskType">
                                            <xs:annotation>
                                                <xs:documentation>Definition of a task</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="Dependencies">
                                <xs:annotation>
                                    <xs:documentation>Dependencies to other tasks</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="Dependency"
                                            type="tps:dependencyType">
                                            <xs:annotation>
                                                <xs:documentation>The definition of a dependency between tasks</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element minOccurs="0" name="LocationIntersections">
                                <xs:annotation>
                                    <xs:documentation>A collection of intersections</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded"
                                            name="LocationIntersection"
                                            type="tps:locationIntersectionType">
                                            <xs:annotation>
                                                <xs:documentation>The definition of an intersection of locations</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="BackgroundImages">
                    <xs:annotation>
                        <xs:documentation>A collection of CAD background images
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="BkgImage" type="tps:imageType">
                                <xs:annotation>
                                    <xs:documentation>The background drawing</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="Favorites">
                    <xs:annotation>
                        <xs:documentation>A collection of predefined settings/data</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="QuickCodesGroup">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Name" type="xs:string">
                                            <xs:annotation>
                                                <xs:documentation>Quick Codes Group name</xs:documentation>
                                            </xs:annotation>
                                        </xs:element>
                                        <xs:element maxOccurs="unbounded" minOccurs="0"
                                            name="QuickCode">
                                            <xs:annotation>
                                                <xs:documentation>Represents the Quick Code definition</xs:documentation>
                                            </xs:annotation>
                                            <xs:complexType>
                                                <xs:sequence maxOccurs="unbounded">
                                                  <xs:element name="CodeDescriptionRef">
                                                  <xs:annotation>
                                                  <xs:documentation>A reference to the Description of this Code</xs:documentation>
                                                  </xs:annotation>
                                                  <xs:complexType>
                                                  <xs:attribute name="idRef" type="xs:IDREF"/>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  <xs:element minOccurs="0" name="CodeString"
                                                  type="xs:string"/>
                                                  <xs:element maxOccurs="2" minOccurs="0"
                                                  name="ControlCode" type="xs:string">
                                                  <xs:annotation>
                                                  <xs:documentation>Represents the control codes (maximum two)</xs:documentation>
                                                  </xs:annotation>
                                                  </xs:element>
                                                </xs:sequence>
                                                <xs:attribute name="row" type="xs:decimal">
                                                  <xs:annotation>
                                                  <xs:documentation>zero based index of row [0..2] for vertical positioning on screen</xs:documentation>
                                                  </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="column" type="xs:decimal">
                                                  <xs:annotation>
                                                  <xs:documentation>zero based index of column [0..2] for horizontal positioning on screen</xs:documentation>
                                                  </xs:annotation>
                                                </xs:attribute>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute default="false" name="default" type="xs:boolean"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="EquipmentCalibrations">
                    <xs:annotation>
                        <xs:documentation>A collection of scanner calibrations</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0"
                                name="mmGPSTransmitterData" type="tps:mmGPSTransmitterDataType"/>
                            <xs:element maxOccurs="unbounded" minOccurs="0"
                                name="mmGPSTransmitterInfo" type="tps:mmGPSTransmitterPositionType"/>
                            <xs:element minOccurs="0" name="mmGPSCalibration" maxOccurs="unbounded"
                                type="tps:mmGPSCalibrationSetType"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="StakeReportConfigs">
                    <xs:annotation>
                        <xs:documentation>A collection of Stakeout report configurations</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="StakeReportConfig"
                                type="tps:stakeReportConfigType">
                                <xs:annotation>
                                    <xs:documentation>A stakeout report configuration, defined by a type, tolerances and a collection of header fields</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="StakeReports">
                    <xs:annotation>
                        <xs:documentation>A collection of Stakeout reports</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="StakeReport"
                                type="tps:stakeReportType">
                                <xs:annotation>
                                    <xs:documentation>A stakeout report, defined by a configuration (reference) and a collection of records</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="InsertedImages">
                    <xs:annotation>
                        <xs:documentation>A collection of CAD inserted images
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="InsertedImage"
                                type="tps:imageType">
                                <xs:annotation>
                                    <xs:documentation>The background drawing</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="Planes">
                    <xs:annotation>
                        <xs:documentation>A collection of Planes
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="Plane"
                                type="tps:planeType">
                                <xs:annotation>
                                    <xs:documentation>A Region describes an area with some attributes</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="SurveyXSections">
                    <xs:annotation>
                        <xs:documentation>A collection of Road surveys</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="SurveyXSectionSet"
                                type="tps:surveyXSectionSetType">
                                <xs:annotation>
                                    <xs:documentation>A Road survey</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="BIMProjects" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="BIMProject" type="tps:bimProjectType"
                                maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="PrismInfos">
                    <xs:annotation>
                        <xs:documentation>A collection of Prism Information</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="PrismInfo"
                                type="tps:prismInfoType">
                                <xs:annotation>
                                    <xs:documentation>Information about a Prism</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element minOccurs="0" name="PointCloudSets">
                    <xs:annotation>
                        <xs:documentation>A collection of Point Cloud Sets</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="PointCloudSet"
                                type="tps:pointCloudSetType"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Transaction" type="tps:transactionType">
        <xs:annotation>
            <xs:documentation>Transaction data is either the definition of a Transaction Measurement session or a sequence of Actions on elements</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="JobHistory" type="tps:jobHistoryType">
        <xs:annotation>
            <xs:documentation>The history of the changes made to the job</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:complexType name="grid2GroundType">
        <xs:annotation>
            <xs:documentation>Grid to ground conversion parameters type</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="ScaleFactor" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Combined Scale Factor calculated for grid to ground conversion</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Rotation" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Grid to ground rotation in radians (angle difference between azimuths oriented clockwise)</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Northing" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Grid to ground northing offset in meters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Easting" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Grid to ground easting offset in meters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="MapScaleFactor" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Scale factor between ellipsoid and grid</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Elevation" type="xs:double">
                <xs:annotation>
                    <xs:documentation>Average ellipsoidal elevation of job in meters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="OriginPoint" type="tps:g2gOriginPointType">
                <xs:annotation>
                    <xs:documentation>Used as origin point for grid to ground transformation.
If missing grid's origin point is used.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType mixed="false" name="mmGPSTransmitterPositionType">
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Data">
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:string"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Channel">
                        <xs:simpleType>
                            <xs:restriction base="xs:decimal">
                                <xs:minInclusive value="1"/>
                                <xs:maxInclusive value="4"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element default="false" name="Valid" type="xs:boolean" minOccurs="0"/>
                    <xs:element minOccurs="0" name="TransmitterPointRef">
                        <xs:annotation>
                            <xs:documentation>A reference to Transmitter point</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" use="required"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="LLH" type="tps:coordsXYZType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>DEPRECATED (use TxLLH instead)! The coordinates of optical center (in WGS84 LLH)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AntennaHeight" type="xs:double" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The Transmitter height that is distance from position mark to mark on device.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AntennaHeightOffset" type="xs:double" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Transmitter height offset.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="MeasuredVertical"
                        type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>true meas that Antenna was VERTICAL, otherwise means SLANT</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="FixedRodType">
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="NONE"/>
                                <xs:enumeration value="20M"/>
                                <xs:enumeration value="18M"/>
                                <xs:enumeration value="15M"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="KnownPointRef">
                        <xs:annotation>
                            <xs:documentation>A reference to the known point.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" use="required"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="Resected" type="xs:boolean"/>
                    <xs:element minOccurs="0" name="NumResectedMeasurements" type="xs:decimal">
                        <xs:annotation>
                            <xs:documentation>Number of resection measurements.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ResectionError" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Resection error value</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="true" minOccurs="0" name="ApplyAntennaHeightOffset"
                        type="xs:boolean">
                        <xs:annotation>
                            <xs:documentation>Flags if AntennaHeightOffset should be applied or not (true by default).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="KnownElevation" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>Can be used to initialize elevation as alternative to KnownPointRef</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="TxLLH" type="tps:coordsBLHType">
                        <xs:annotation>
                            <xs:documentation>The coordinates of optical center (in WGS84 LLH)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="mmGPSTransmitterDataType">
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element default="false" name="Valid" type="xs:boolean" minOccurs="0"/>
                    <xs:element name="SerialNumber" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The serial number of the instrument.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:string"/>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="Firmware" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The firmware of the instrument (maximum 32 characters)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:string"/>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="CalibrationData" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The calibration data for TX (a 4x10 matrix)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:annotation>
                                <xs:documentation>The calibration data is a 4x10 matrix</xs:documentation>
                            </xs:annotation>
                            <xs:restriction base="tps:calibrationDataType">
                                <xs:maxLength value="40"/>
                                <xs:minLength value="40"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="TransmitterModel" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Transmitter model (PZL-1/PZL-1A, or LZ-T5, or LZ-S5 w/ GNSS)</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="PZL1"/>
                                <xs:enumeration value="LZT5"/>
                                <xs:enumeration value="LZS5"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element default="0" minOccurs="0" name="TrasnmitterModelRawValue"
                        type="xs:int"/>
                    <xs:element name="CalibrationTime" type="xs:dateTime" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Time when field calibration was performed and transmitter was updated.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="datumTransformationType">
        <xs:annotation>
            <xs:documentation>The datum transformation type sets datum transformation between the two Datums. Supports EPSG code, a number of transformations types such as parameters-based, library-based and table-based.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The name of the datum transformation</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="EpsgCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The code of the datum transformation by The European Petroleum Survey Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Source" type="tps:csSourceType" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>The source of the datum transformation</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="ToLocal" type="xs:boolean" default="false">
                        <xs:annotation>
                            <xs:documentation>The direction of the transformation, true is for DatumFromTo(WGS84) to Local(this one), false otherwise. By default transformation from Local to WGS84.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="WGS84" maxOccurs="1" minOccurs="0" name="DatumToFrom">
                        <xs:annotation>
                            <xs:documentation>The name of the OTHER datum in "datum to datum" transformation. Direction is shown by ToLocal flag.
By default transformation from Local to WGS84.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="idRef" type="xs:IDREF">
                                        <xs:annotation>
                                            <xs:documentation>Optional reference to datumToFrom definition </xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:choice minOccurs="0">
                        <xs:element name="HelmertParameters" type="tps:helmertParametersType"
                            minOccurs="1">
                            <xs:annotation>
                                <xs:documentation>Seven parameters for Helmert transformation used by the datum.
Corresponds RTCM 1021 message.</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element name="HelmertTimeDependentParameters"
                            type="tps:helmertTimeDependentParametersType" minOccurs="1">
                            <xs:annotation>
                                <xs:documentation>14-parameters for Time-dependent Helmert transformation used by the datum</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element name="MolodenskyBdksParameters"
                            type="tps:molodenskyBdksParametersType" minOccurs="1">
                            <xs:annotation>
                                <xs:documentation>Ten parameters for Molodensky-Badekas transformation used by the datum. Corresponds RTCM 1022 message.</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element minOccurs="1" name="CustomTransformation"
                            type="tps:customDatumTransformationType">
                            <xs:annotation>
                                <xs:documentation>Datum properties for the datum defined in a library</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element maxOccurs="1" minOccurs="1" name="MolodenskyBLH"
                            type="tps:molodenskyBLHType">
                            <xs:annotation>
                                <xs:documentation>Molodensky ellipsoidal transformation used by the datum</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:choice>
                    <xs:element minOccurs="0" name="Units" type="tps:datumTransformUnitsType"> </xs:element>
                    <xs:element minOccurs="0" name="DatumTransformationBoundaries"
                        type="tps:boundariesType">
                        <xs:annotation>
                            <xs:documentation>Global boundaries of Datum Transformation validity area.
The boundaries is latitude/longitude values.
Corresponds RTCM DF152-DF155 fields.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element maxOccurs="unbounded" minOccurs="0" name="CorrectionTable"
                        type="tps:csTableDataType">
                        <xs:annotation>
                            <xs:documentation>The Correction Table for Datum Transformation (or the set of tables). Correction table applied after parameters-based transformation. All boundaries, horizontal mean values and residuals are spherical values (lat/lon) on the Datum after applying parameters-based transformation. Corresponds RTCM 1023 message.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="CTCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Application managed code. Technical field. Do not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="projectionType">
        <xs:annotation>
            <xs:documentation>The projection type defines projection transformation into plane system. Supports EPSG code, parameters-based projections of all types supported by Magnet GEOSDK, library-based projections and table-based projections.</xs:documentation>
        </xs:annotation>
        <xs:sequence minOccurs="0">
            <xs:element name="Name" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The name of the projection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DisplayName" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>The display name of the projection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Comment" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The comment for the projection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="EpsgCode" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The code of the projection by The European Petroleum Survey Group</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Axes" type="tps:axesDirectionType" default="NE">
                <xs:annotation>
                    <xs:documentation>The direction of Axes in the projection</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Units" type="tps:projectionUnitsType">
                <xs:annotation>
                    <xs:documentation>The units used in the projection parameters</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Type" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The type of the projection coordinate system. Could be 
 - TMERC // Transverse Mercator, 
 - LC // Lambert Conformal Conic, 
 - STER // Stereographic, 
 - DSTER // Double Stereographic,
 - MERCATOR // Mercator Auxiliary Sphere,
 - OM // Oblique Mercator,
 - CASSINI // Cassini Soldner,
 - AlbersConic // Albers Conic Equal Area
 - etc. 
 
 Corresponds RTCM DF170 field.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:choice minOccurs="0">
                <xs:element name="TableProjection" type="tps:tableProjectionType">
                    <xs:annotation>
                        <xs:documentation>Projection properties for the grid defined in a library</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="ParamsProjection" type="tps:paramsProjectionType">
                    <xs:annotation>
                        <xs:documentation>Projection parameters in case of parameters-based grid.
Parameters correspond RTCM 1025-1027 messages.</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="CorrectionTable"
                type="tps:csTableDataType">
                <xs:annotation>
                    <xs:documentation>The Correction Table for Projection (or the set of tables). Correction table applied after parameter-based transformation. All boundaries and residuals are plane values. Corresponds RTCM 1024 message.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Datum" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>The name and idRef of Datum(s) used by this projection.
In case of 1 datum defined, the projection could be used only with it.
In case of several datums listed, the projection could be based on one of them only.
In case of missing Datum tag, the projection is supposed to be used with any datum.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="idRef" type="xs:IDREF">
                                <xs:annotation>
                                    <xs:documentation>Optional reference to datum definition tag</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element minOccurs="0" name="CTCode" type="xs:string">
                <xs:annotation>
                    <xs:documentation>Application managed code. Technical field. Do not required.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="RefIDs_type">
        <xs:sequence>
            <xs:element maxOccurs="unbounded" minOccurs="1" name="RefID">
                <xs:annotation>
                    <xs:documentation>Defines a dummy entity with ID that is referenced in current document, but not defined due to XML size optimization. Technically allows to make XML document valid. </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="id" type="xs:ID" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="CoordinateSystemsCollection">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Ellipsoids" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Ellipsoids</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="EllipsoidDefinition"
                                type="tps:ellipsoidDefinitionType" maxOccurs="unbounded"
                                minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>An Ellipsoid definition contains all ellipsoid parameters</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Datums" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Datums</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Datum" type="tps:datumType" maxOccurs="unbounded"
                                minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A Datum</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Grids" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>A collection of Grids</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Grid" type="tps:gridType" maxOccurs="unbounded"
                                minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>A grid</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="helmertTimeDependentParametersType">
        <xs:annotation>
            <xs:documentation>14-parameters for Time-dependent Helmert transformation. Strict and Linearized formulas. 
Base Helmert parameters are treated as parameters for time T0.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:group ref="tps:helmertParametersGroup"/>
            <xs:element minOccurs="1" name="T0" type="xs:dateTime">
                <xs:annotation>
                    <xs:documentation>The time of first datum state</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VDX" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of DX change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VDY" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of DY change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VDZ" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of DZ change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VRX" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of RX change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VRY" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of RY change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VRZ" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of RZ change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VScale" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The velocity of Scale change</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="HorizontalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum horizontal error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF214 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VerticalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum vertical error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF215 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="molodenskyBLHType">
        <xs:annotation>
            <xs:documentation>Molodensky ellipsoidal transformation. Standard and Abridged formulas.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element default="false" minOccurs="0" name="IsAbridged" type="xs:boolean">
                <xs:annotation>
                    <xs:documentation>Standard or Abridged formulas. By default Standard formulas are used</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="DX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>RTCM DF156</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="DY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>RTCM DF157</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="DZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>RTCM DF158</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="RX" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>RTCM DF159</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="RY" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>RTCM DF160</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="RZ" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>RTCM DF161</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="Scale" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>RTCM DF162. Delta Scale. In formula M=(1+dS*10^-6).</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="DA" type="xs:double"/>
            <xs:element minOccurs="1" name="DF" type="xs:double"/>
            <xs:element minOccurs="0" name="HorizontalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum horizontal error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF214 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VerticalQuality" type="xs:float" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum vertical error within the given area after applying the parameters transformation in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF215 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="boundariesType">
        <xs:annotation>
            <xs:documentation>Boundaries of rectangle area in Northing/Easting plane coordinates or boundaries of spherical rectangle area in Latitude/Longitude coordinates</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="1" name="MinLatNorthing" type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="1" name="MinLonEasting" type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="1" name="MaxLatNorthing" type="xs:double"/>
            <xs:element maxOccurs="1" minOccurs="1" name="MaxLonEasting" type="xs:double"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="bimProjectType">
        <xs:annotation>
            <xs:documentation>Represents a single BIM model (e.g. a whole building).</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="BIMProjectName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A human-readable descriptive name of the project</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Visible" type="xs:boolean" minOccurs="0" default="true"/>
                    <xs:element name="BIMProjectUnits" type="tps:unitsType">
                        <xs:annotation>
                            <xs:documentation>The units used in the project</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="InsertionPointRef" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to a design point that is used as the insertion point (i.e. the project's coordinate center will be placed at this point's position).</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Rotation" type="xs:double" minOccurs="0" default="0.0">
                        <xs:annotation>
                            <xs:documentation>Rotation of the project around the Z axis. It's counter-clockwise, with zero on x-axis (east). Can be ommitted if additional rotation is not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Scale" type="xs:double" minOccurs="0" default="1.0">
                        <xs:annotation>
                            <xs:documentation>The scale factor of the project. Can be ommitted if scaling is not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="BIMProjectData" type="tps:bimProjectDataType" minOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="bimProjectDataType">
        <xs:annotation>
            <xs:documentation>The actual data items used in BIM projects</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="BIMElements">
                <xs:annotation>
                    <xs:documentation/>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="BIMElement" type="tps:bimElementType"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="RootElementRef">
                <xs:annotation>
                    <xs:documentation>The root element of the element hierarchy (e.g. a "building" element for a project that describes a building)</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:attribute name="idRef" type="xs:IDREF"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="BIMAttributeSets" minOccurs="0">
                <xs:annotation>
                    <xs:documentation/>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="BIMAttributeSet" type="tps:bimAttributesSetType"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="BIMGroups" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="BIMGroup" type="tps:bimElementGroupType"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="BIMLayers" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="BIMLayer" type="tps:bimElementLayerType"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="BIMModels" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="BIM3dModel" type="tps:bimElement3dModelType"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="bimElementType">
        <xs:annotation>
            <xs:documentation>A single element of a BIM project, e.g. a door, wall, table, etc.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="IfcId" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A unique identifier used within the BIM file (e.g. for an IFC file it is a hash).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A human-readable name of the element</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="BIM3dModelRef" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to a 3d model used by this element</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Visible" type="xs:boolean" minOccurs="0" default="true"/>
                    <xs:element name="BIMAttributeSetRef" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>A reference to an attribute set</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:attribute name="idRef" type="xs:IDREF" use="optional">
                                <xs:annotation>
                                    <xs:documentation/>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="AdditionalAttributes" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>Additional attributes for this specific element.
For example: 100 instances of a "Computer" element may have a set of shared attributes (model, manufacturer, hardware used, etc), and an additional attribute that is unique for each instance (e.g. an owner, or an inventory number).</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:annotation>
                                    <xs:documentation/>
                                </xs:annotation>
                                <xs:element name="Attribute" type="tps:bimElementAttributeType"
                                    maxOccurs="unbounded">
                                    <xs:annotation>
                                        <xs:documentation>Extra attributes that can be specified in addition to the referenced AttributeSet</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="ChildElementsRefs" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>References to this elements' child elements</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="BIMElementRef" maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="BIMGroupsRefs" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>References to the groups that this element belongs to</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="BIMGroupRef" maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="BIMLayersRefs" minOccurs="0">
                        <xs:annotation>
                            <xs:documentation>References to the layers that this element belongs to</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="BIMLayerRef" maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="bimElementAttributeType">
        <xs:annotation>
            <xs:documentation>A BIM attribute, which is a "key-value" pair; both key and value are treated as strings.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="BIMAttributeName" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The name of the attribute</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="BIMAttributeValue" type="xs:string">
                <xs:annotation>
                    <xs:documentation>The value of the attribute</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="bimAttributesSetType">
        <xs:annotation>
            <xs:documentation>A set of attributes used by a BIM element. Attribute sets can be shared between multiple elements</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="BIMAttribute" type="tps:bimElementAttributeType"
                        maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="bimElementGroupType">
        <xs:annotation>
            <xs:documentation>A BIM group is a named entity used to logically group multiple elements.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="BIMGroupName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The group's human-readable name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Visible" type="xs:boolean" minOccurs="0" default="true"/>
                    <xs:element minOccurs="0" name="ChildrenGroupsRefs">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element maxOccurs="unbounded" name="BIMGroupRef">
                                    <xs:complexType>
                                        <xs:attribute name="idRef" type="xs:IDREF"/>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element default="false" minOccurs="0" name="IsChildGroup" type="xs:boolean"
                    />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="bimElementLayerType">
        <xs:annotation>
            <xs:documentation>A BIM layer is a named entity used to logically group multiple elements.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="BIMLayerName" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The layer's human-readable name</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Visible" type="xs:boolean" minOccurs="0" default="true"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="bimElement3dModelType">
        <xs:annotation>
            <xs:documentation>A reference to an external file with the data used for rendering. A single model is likely to be shared between multiple BIM elements.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="BIM3dModelFile" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>A filename of an external file with the 3d data</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="geoidType">
        <xs:annotation>
            <xs:documentation>The geoid type sets geoid model of orthometric heights corrections. Supports EPSG code, number of regional geoids types, table-based in file geoid definition.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:actionObjectType">
                <xs:sequence>
                    <xs:element name="Name" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The name of the geoid (it must be found in an external file)</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="Comment" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The comment for the geoid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="0" name="EpsgCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>The code of the geoid (VertCS) by The European Petroleum Survey Group</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Source" type="tps:csSourceType" minOccurs="0"
                        default="undefined">
                        <xs:annotation>
                            <xs:documentation>The source of the geoid</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element default="WGS84" maxOccurs="1" minOccurs="0" name="Datum">
                        <xs:annotation>
                            <xs:documentation>The name of the datum, geoid is based on</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="idRef" type="xs:IDREF">
                                        <xs:annotation>
                                            <xs:documentation>Optional reference to datum definition </xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:choice minOccurs="0">
                        <xs:element name="RegionalGeoid" type="tps:regionalGeoidType">
                            <xs:annotation>
                                <xs:documentation>Regional geoid stored in separate file with predefined type.</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                        <xs:element name="TableGeoid" minOccurs="1" type="tps:csTableDataType"
                            maxOccurs="unbounded">
                            <xs:annotation>
                                <xs:documentation>The table data of geoid directly stored in MAXML file.</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:choice>
                    <xs:element minOccurs="0" name="CTCode" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Application managed code. Technical field. Do not required.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="csTableDataType">
        <xs:annotation>
            <xs:documentation>Tha data for table based coodinate system. Used as RTCM CT source data exchange.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="0" name="MeanLatNorthing" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The Mean Offset in Latitude (Northing) direction.
Used in table data for horizontal CS.
ResultOffset = MeanOffset + InterpolatedDeltaFromTable
Corresponds RTCM DF196 (DF206) field.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="MeanLonEasting" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The Mean Offset in Longitude (Easting) direction.
Used in table data for horizontal CS.
ResultOffset = MeanOffset + InterpolatedDeltaFromTable
Corresponds RTCM DF197 (DF207) field.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="MeanHeight" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The Mean Offset in Height direction.
Used in table data for vertical CS (geoids) or in three dimension tables in RTCM systems.
ResultOffset = MeanOffset + InterpolatedDeltaFromTable
Corresponds RTCM DF198 (DF208) field.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="HorizontalInterpolation" default="bilinear">
                <xs:annotation>
                    <xs:documentation>The interpolation type for horizontal offset calculation.
Corresponds RTCM DF212 field:
bilinear - 0,
biquadratic - 1,
bispline - 2,
kriging - '-'</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="bilinear"/>
                        <xs:enumeration value="biquadratic"/>
                        <xs:enumeration value="bispline"/>
                        <xs:enumeration value="kriging"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element minOccurs="0" name="VerticalInterpolation" default="bilinear">
                <xs:annotation>
                    <xs:documentation>The interpolation type for vertical offset calculation.
Also used in geoid definition.
Corresponds RTCM DF213 field:
bilinear - 0,
biquadratic - 1,
bispline - 2,
kriging - '-'</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="bilinear"/>
                        <xs:enumeration value="biquadratic"/>
                        <xs:enumeration value="bispline"/>
                        <xs:enumeration value="kriging"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element minOccurs="0" name="HeightProcessMethod" default="undefined">
                <xs:annotation>
                    <xs:documentation>The indicator for way of height processing in the transformation. There are:
- Geometric: Height calculated only in Helmert/Molodenski transformation and result is Ellipsoidal Height, table offsets are not processed for height;
- PhysicalTarget: Offsets in the table for height are given in the Current(Target) Datum (after Helmert/Molodenski transformation);
- PhysicalSource: Offsets in the table for height are given in Source Datum (FromDatum).</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="geometric"/>
                        <xs:enumeration value="physical_target"/>
                        <xs:enumeration value="physical_source"/>
                        <xs:enumeration value="undefined"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element minOccurs="0" name="HorizontalTableQuality" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum horizontal error within the given area after applying the residuals in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF216 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="VerticalTableQuality" type="xs:double" default="0">
                <xs:annotation>
                    <xs:documentation>The maximum vertical error within the given area after applying the residuals in millimeters. The zero is for Unknown Quality.
Corresponds RTCM DF217 field.
</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="ModifiedJulianDay" type="xs:int" default="0">
                <xs:annotation>
                    <xs:documentation>The modified julian day. Corresponds RTCM DF051 field in 1023, 1024 messages. 
Versioning?</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="Passport" type="tps:csTablePassportType">
                <xs:annotation>
                    <xs:documentation>The dimension of data in the table. How much residuals for each point in table.
- 1D is for Geoid (Vertical CS definitioin);
- 2D is for Horizontal table datum or grid CS definition;
- 3D is for Horizontal and Vertical residuals in one table.
In RTCM messages tables are always three dimensions, but there are DF190 and DF191 boolean fields that tell use or no horizontal (2D) and vertical (1D) part of table.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Data" type="tps:csTableMatrixDataType">
                <xs:annotation>
                    <xs:documentation>This field contains space separated float values for each point of the table.
Number of values calculated based on Passport as:

Num = ((MaxLonEasting - MinLonEasting) / LonEastingStep + 1) *
((MaxLatNorthing - MinLatNorthing) / LatNorthingStep + 1) *
DataDimension

, where DataDimension = {1,2,3}</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="csTablePassportType">
        <xs:annotation>
            <xs:documentation>The passport of the table data in table-based CS.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="tps:boundariesType">
                <xs:sequence>
                    <xs:element name="LatNorthingStep" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The step between two neighbour values in the table in Latitude(Northing) direction.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="LonEastingStep" type="xs:double">
                        <xs:annotation>
                            <xs:documentation>The step between two neighbour values in the table in Longitude(Easting) direction.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element minOccurs="1" name="DataDimension">
                        <xs:annotation>
                            <xs:documentation>The dimension of data in the table. How much residuals for each point in table.
- 1 is for Geoid (Vertical CS definition), only Height residual;
- 2 is for Horizontal table datum or grid CS definition, Lat/Lon or Northing/Easting residuals;
- 3 is for Horizontal and Vertical residuals in one table, Lat/Lon/Height or N/E/Height residuals. The order matters.
In RTCM messages tables are always three dimensions, but there are DF190 and DF191 boolean fields that tell use or no horizontal and vertical parts of table.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                            <xs:restriction base="xs:NMTOKEN">
                                <xs:enumeration value="1"/>
                                <xs:enumeration value="2"/>
                                <xs:enumeration value="3"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element minOccurs="0" name="TraversalOrder" type="tps:traversalOrderType"
                        default="EN">
                        <xs:annotation>
                            <xs:documentation>The traversal order of matrix. The default value is Easting-Northing.
Outher loop is on second direction, and inner loop is on first direction.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="csTableMatrixDataType">
        <xs:annotation>
            <xs:documentation>Matrix of double values in space separated string</xs:documentation>
        </xs:annotation>
        <xs:restriction>
            <xs:simpleType>
                <xs:list itemType="xs:double"/>
            </xs:simpleType>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="regionalGeoidType">
        <xs:annotation>
            <xs:documentation>The type for geoid storaged in file</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="DataFile" type="xs:string" minOccurs="1">
                <xs:annotation>
                    <xs:documentation>The file name of the geoid</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Type" minOccurs="0" default="gff">
                <xs:annotation>
                    <xs:documentation>The type of the geoid (can be 95, 99, global 2008, gff, australian, canadian, denmark, dutch 2004, norway, swedish, austrian germany, belgium, berlin, dutch, french 98, 2003, bkg germany, japan 2000, japan 96, korea k, korea pnu95n, malaysia, north ireland, geoid model, slovakia, spain, swiss 2004, uk, finland, israel, new zealand, slovenia, turky)</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="95"/>
                        <xs:enumeration value="99"/>
                        <xs:enumeration value="global_2008"/>
                        <xs:enumeration value="gff"/>
                        <xs:enumeration value="australian"/>
                        <xs:enumeration value="canadian"/>
                        <xs:enumeration value="denmark"/>
                        <xs:enumeration value="dutch_2004"/>
                        <xs:enumeration value="norway"/>
                        <xs:enumeration value="swedish"/>
                        <xs:enumeration value="austrian_germany"/>
                        <xs:enumeration value="belgium"/>
                        <xs:enumeration value="berlin"/>
                        <xs:enumeration value="dutch"/>
                        <xs:enumeration value="french_98"/>
                        <xs:enumeration value="2003"/>
                        <xs:enumeration value="bkg_germany"/>
                        <xs:enumeration value="japan_2000"/>
                        <xs:enumeration value="japan_96"/>
                        <xs:enumeration value="korea_k"/>
                        <xs:enumeration value="korea_pnu95n"/>
                        <xs:enumeration value="malaysia"/>
                        <xs:enumeration value="n_ireland"/>
                        <xs:enumeration value="geoid_model"/>
                        <xs:enumeration value="slovakia"/>
                        <xs:enumeration value="spain"/>
                        <xs:enumeration value="swiss_2004"/>
                        <xs:enumeration value="uk"/>
                        <xs:enumeration value="finland"/>
                        <xs:enumeration value="israel"/>
                        <xs:enumeration value="nz"/>
                        <xs:enumeration value="slovenia"/>
                        <xs:enumeration value="turky"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:group name="helmertParametersGroup">
        <xs:sequence>
            <xs:element name="Method" type="tps:methodType" minOccurs="0" default="strict">
                <xs:annotation>
                    <xs:documentation>The transformation method type used in the parameters datum</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The translation vector X coord // RTCM DF156</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The translation vector Y coord // RTCM DF157</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="DZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The translation vector Z coord // RTCM DF158</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The rotation around the X axis in parent.AngleUnits // RTCM DF159</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The rotation around the Y axis in parent.AngleUnits // RTCM DF160</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="RZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The rotation around the Z axis in parent.AngleUnits // RTCM DF161</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Scale" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The scale factor // RTCM DF162</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="0" name="T" type="xs:dateTime">
                <xs:annotation>
                    <xs:documentation>The current epoch</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:group>
    <xs:simpleType name="traversalOrderType">
        <xs:annotation>
            <xs:documentation>The table traversal order.
Could be
NE, ///northing-easting
ES, ///easting-southing
SE, ///southing-easting
EN, ///easting-northing
WN, ///westing-northing
WS, ///westing-southing
SW, ///southing-westing 
NW  ///northing-westing </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="NE"/>
            <xs:enumeration value="ES"/>
            <xs:enumeration value="SE"/>
            <xs:enumeration value="EN"/>
            <xs:enumeration value="WN"/>
            <xs:enumeration value="WS"/>
            <xs:enumeration value="SW"/>
            <xs:enumeration value="NW"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="sourceFileFormatIdType">
        <xs:annotation>
            <xs:documentation>The format of the source file (can be las, laz, ply, e57 or undefined)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="las"/>
            <xs:enumeration value="laz"/>
            <xs:enumeration value="ply"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="boundingBoxType">
        <xs:annotation>
            <xs:documentation>The Information about a Prism</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element minOccurs="1" name="MinX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The format of the source file</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="MinY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The format of the source file</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="MinZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The format of the source file</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="MaxX" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The format of the source file</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="MaxY" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The format of the source file</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element minOccurs="1" name="MaxZ" type="xs:double">
                <xs:annotation>
                    <xs:documentation>The format of the source file</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="numPointsQualityType">
        <xs:annotation>
            <xs:documentation>The number of points Quality type (can be unknown, estimation or exact)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="unknown"/>
            <xs:enumeration value="estimation"/>
            <xs:enumeration value="exact"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
