Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/data/xsd/additional_file.xsd
169668 views
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:include schemaLocation="types/metadata.xsd"/>
    <xsd:include schemaLocation="types/route.xsd"/>
    <xsd:include schemaLocation="types/taz.xsd"/>

    <xsd:element name="additional" type="additionalType"/>
    <xsd:element name="rerouterValue" type="rerouterValuesType"/>

    <xsd:complexType name="additionalType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="metadata" type="metadataType" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="location" type="locationType" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="vTypeProbe" type="vTypeProbeType" minOccurs="0"/>
            <xsd:element name="e1Detector" type="e1DetectorType" minOccurs="0"/>
            <xsd:element name="inductionLoop" type="e1DetectorType" minOccurs="0"/>
            <xsd:element name="e2Detector" type="e2DetectorType" minOccurs="0"/>
            <xsd:element name="laneAreaDetector" type="e2DetectorType" minOccurs="0"/>
            <xsd:element name="e3Detector" type="e3DetectorType" minOccurs="0"/>
            <xsd:element name="entryExitDetector" type="e3DetectorType" minOccurs="0"/>
            <xsd:element name="edgeData" type="meandataType" minOccurs="0"/>
            <xsd:element name="laneData" type="meandataType" minOccurs="0"/>
            <xsd:element name="timedEvent" type="timedEventType" minOccurs="0"/>
            <xsd:element name="tlLogic" type="tlLogicAdditionalType" minOccurs="0"/>
            <xsd:element name="WAUT" type="WAUTType" minOccurs="0"/>
            <xsd:element name="wautJunction" type="wautJunctionType" minOccurs="0"/>
            <xsd:element name="variableSpeedSign" type="variableSpeedSignType" minOccurs="0"/>
            <xsd:element name="routeProbe" type="routeProbeType" minOccurs="0"/>
            <xsd:element name="rerouter" type="rerouterType" minOccurs="0"/>
            <xsd:element name="instantInductionLoop" type="instantInductionLoopType" minOccurs="0"/>
            <xsd:element name="busStop" type="busStopType" minOccurs="0"/>
            <xsd:element name="trainStop" type="busStopType" minOccurs="0"/>
            <xsd:element name="containerStop" type="containerStopType" minOccurs="0"/>
            <xsd:element name="chargingStation" type="chargingStationType" minOccurs="0"/>
            <xsd:element name="overheadWireSegment" type="overheadWireSegmentType" minOccurs="0"/>
            <xsd:element name="tractionSubstation" type="tractionSubstationType" minOccurs="0"/>
            <xsd:element name="overheadWireClamp" type="overheadWireClampType" minOccurs="0"/>
            <xsd:element name="overheadWire" type="overheadWireType" minOccurs="0"/>
            <xsd:element name="parkingArea" type="parkingAreaType" minOccurs="0"/>
            <xsd:element name="calibrator" type="calibratorType" minOccurs="0"/>
            <xsd:element name="vaporizer" type="vaporizerType" minOccurs="0"/>
            <xsd:element name="railSignalConstraints" type="railSignalConstraintsType" minOccurs="0"/>
            <xsd:element name="deadlock" type="deadlockType" minOccurs="0"/>

            <xsd:element name="vTypeDistribution" type="vTypeDistributionType" minOccurs="0"/>
            <xsd:element name="routeDistribution" type="routeDistributionType" minOccurs="0"/>
            <xsd:element name="vType" type="vTypeType" minOccurs="0"/>
            <xsd:element name="route" type="routeType" minOccurs="0"/>
            <xsd:element name="vehicle" type="vehicleType" minOccurs="0"/>
            <xsd:element name="flow" type="flowType" minOccurs="0"/>
            <xsd:element name="trip" type="tripType" minOccurs="0"/>
            <xsd:element name="person" type="personType" minOccurs="0"/>
            <xsd:element name="personFlow" type="personFlowType" minOccurs="0"/>
            <xsd:element name="container" type="containerType" minOccurs="0"/>
            <xsd:element name="containerFlow" type="containerFlowType" minOccurs="0"/>
            <xsd:element name="interval" type="flowIntervalType" minOccurs="0"/>

            <xsd:element name="poly" type="polygonType" minOccurs="0"/>
            <xsd:element name="poi" type="poiType" minOccurs="0"/>
            <xsd:element name="taz" type="tazType" minOccurs="0" maxOccurs="unbounded"/>

            <xsd:element name="type" type="typeType" minOccurs="0"/>

            <xsd:element name="include" type="includeType" minOccurs="0"/>
        </xsd:choice>
    </xsd:complexType>

    <xsd:complexType name="rerouterValuesType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="interval" minOccurs="1" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:choice maxOccurs="unbounded">
                        <xsd:element name="closingReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="allow" type="xsd:string" use="optional"/>
                                <xsd:attribute name="disallow" type="xsd:string" use="optional"/>
                                <xsd:attribute name="until" type="timeType" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="closingLaneReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="allow" type="xsd:string" use="optional"/>
                                <xsd:attribute name="disallow" type="xsd:string" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="destProbReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="routeProbReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="parkingAreaReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                                <xsd:attribute name="visible" type="boolType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="viaProbReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="overtakingReroute">
                            <xsd:complexType>
                                <xsd:attribute name="main" type="xsd:string" use="required"/>
                                <xsd:attribute name="siding" type="xsd:string" use="required"/>
                                <xsd:attribute name="minSaving" type="nonNegativeFloatType" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="stationReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="xsd:string" use="required"/>
                                <xsd:attribute name="minSaving" type="nonNegativeFloatType" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:choice>
                    <xsd:attribute name="begin" type="nonNegativeFloatType" use="required"/>
                    <xsd:attribute name="end" type="nonNegativeFloatType" use="required"/>
                </xsd:complexType>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>

    <xsd:complexType name="e1DetectorType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="detectorIdType" use="required"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="pos" type="floatType" use="required"/>
        <xsd:attribute name="length" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="period" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="nextEdges" type="xsd:string" use="optional"/>
        <xsd:attribute name="detectPersons" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="friendlyPos" use="optional" type="boolType"/>
        <!-- allow reading typed detectors (dfrouter/flowrouter) -->
        <xsd:attribute name="type" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="vTypeProbeType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="type" type="xsd:string" use="optional"/>
        <xsd:attribute name="period" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="e2DetectorType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="detectorIdType" use="required"/>
        <xsd:attribute name="lane" type="xsd:string" use="optional"/>
        <xsd:attribute name="lanes" type="xsd:string" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
        <xsd:attribute name="pos" type="floatType" use="optional"/>
        <xsd:attribute name="endPos" type="floatType" use="optional"/>
        <xsd:attribute name="length" type="floatType" use="optional"/>
        <xsd:attribute name="period" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="tl" type="xsd:string" use="optional"/>
        <xsd:attribute name="to" type="xsd:string" use="optional"/>
        <xsd:attribute name="cont" type="boolType" use="optional"/>
        <xsd:attribute name="timeThreshold" type="floatType" use="optional"/>
        <xsd:attribute name="speedThreshold" type="floatType" use="optional"/>
        <xsd:attribute name="jamThreshold" type="floatType" use="optional"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="nextEdges" type="xsd:string" use="optional"/>
        <xsd:attribute name="detectPersons" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="friendlyPos" use="optional" type="boolType"/>
        <xsd:attribute name="show" use="optional" type="boolType"/>
    </xsd:complexType>

    <xsd:complexType name="e3DetectorType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:choice minOccurs="2" maxOccurs="unbounded">
                <xsd:element name="detEntry" type="detEntryExitType" minOccurs="1" maxOccurs="unbounded"/>
                <xsd:element name="detExit" type="detEntryExitType" minOccurs="1" maxOccurs="unbounded"/>
            </xsd:choice>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="detectorIdType" use="required"/>
        <xsd:attribute name="period" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
        <xsd:attribute name="timeThreshold" type="floatType" use="optional"/>
        <xsd:attribute name="speedThreshold" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="nextEdges" type="xsd:string" use="optional"/>
        <xsd:attribute name="detectPersons" type="xsd:string" use="optional"/>
        <xsd:attribute name="openEntry" type="boolType" use="optional"/>
        <xsd:attribute name="expectArrival" type="boolType" use="optional"/>
        <xsd:attribute name="pos" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="detEntryExitType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="pos" type="floatType" use="required"/>
        <xsd:attribute name="friendlyPos" use="optional" type="boolType">
        </xsd:attribute>
    </xsd:complexType>

    <xsd:complexType name="meandataType">
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="type" use="optional">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="emissions"/>
                    <xsd:enumeration value="hbefa"/> <!-- deprecated in favor of emissions -->
                    <xsd:enumeration value="harmonoise"/>
                    <xsd:enumeration value="amitran"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="period" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
        <xsd:attribute name="begin" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="end" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="maxTraveltime" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="excludeEmpty" use="optional">
            <xsd:simpleType>
                <xsd:union memberTypes="boolType">
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="defaults"/>
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:union>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="withInternal" type="boolType" use="optional"/>
        <xsd:attribute name="trackVehicles" type="boolType" use="optional"/>
        <xsd:attribute name="detectPersons" type="xsd:string" use="optional"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="writeAttributes" type="xsd:string" use="optional"/>
        <xsd:attribute name="edges" type="xsd:string" use="optional"/>
        <xsd:attribute name="edgesFile" type="xsd:string" use="optional"/>
        <xsd:attribute name="aggregate" type="boolType" use="optional"/>
        <xsd:attribute name="minSamples" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="speedThreshold" type="floatType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="timedEventType">
        <xsd:attribute name="type" use="required">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="SaveTLSProgram"/>
                    <xsd:enumeration value="SaveTLSStates"/>
                    <xsd:enumeration value="SaveTLSSwitchTimes"/>
                    <xsd:enumeration value="SaveTLSSwitchStates"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="source" type="xsd:string" use="optional"/>
        <xsd:attribute name="dest" type="xsd:string" use="required"/>
        <xsd:attribute name="saveDetectors" type="boolType" use="optional"/>
        <xsd:attribute name="saveConditions" type="boolType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="WAUTType">
        <xsd:sequence>
            <xsd:element name="wautSwitch" type="wautSwitchType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="refTime" type="timeType"/>
        <xsd:attribute name="startProg" type="xsd:string" use="required"/>
        <xsd:attribute name="period" type="timeType"/>
    </xsd:complexType>

    <xsd:complexType name="wautSwitchType">
        <xsd:attribute name="time" type="timeType" use="required"/>
        <xsd:attribute name="to" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="wautJunctionType">
        <xsd:attribute name="wautID" type="xsd:string" use="required"/>
        <xsd:attribute name="junctionID" type="xsd:string" use="required"/>
        <xsd:attribute name="procedure" type="xsd:string"/>
        <xsd:attribute name="synchron" type="xsd:string"/>
    </xsd:complexType>

    <xsd:complexType name="variableSpeedSignType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="step" minOccurs="1" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:attribute name="time" type="nonNegativeFloatType" use="required"/>
                    <xsd:attribute name="speed" type="floatType" use="optional"/>
                </xsd:complexType>
            </xsd:element>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="lanes" type="xsd:string" use="required"/>
        <xsd:attribute name="file" type="xsd:string" use="optional"/>
        <xsd:attribute name="pos" type="xsd:string" use="optional"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="routeProbeType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="edge" type="xsd:string" use="optional"/>
        <xsd:attribute name="begin" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="period" type="positiveFloatType" use="optional" />
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="rerouterType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="include" type="includeType" minOccurs="0"/>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="interval" minOccurs="1" maxOccurs="unbounded">
                <xsd:complexType>
                    <xsd:choice maxOccurs="unbounded">
                        <xsd:element name="closingReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="allow" type="xsd:string" use="optional"/>
                                <xsd:attribute name="disallow" type="xsd:string" use="optional"/>
                                <xsd:attribute name="until" type="timeType" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="closingLaneReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="allow" type="xsd:string" use="optional"/>
                                <xsd:attribute name="disallow" type="xsd:string" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="destProbReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="routeProbReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="parkingAreaReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                                <xsd:attribute name="visible" type="boolType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="viaProbReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="idType" use="required"/>
                                <xsd:attribute name="probability" type="nonNegativeFloatType"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="overtakingReroute">
                            <xsd:complexType>
                                <xsd:attribute name="main" type="xsd:string" use="required"/>
                                <xsd:attribute name="siding" type="xsd:string" use="required"/>
                                <xsd:attribute name="minSaving" type="nonNegativeFloatType" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="stationReroute">
                            <xsd:complexType>
                                <xsd:attribute name="id" type="xsd:string" use="required"/>
                                <xsd:attribute name="minSaving" type="nonNegativeFloatType" use="optional"/>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:choice>
                    <xsd:attribute name="begin" type="timeType" use="required"/>
                    <xsd:attribute name="end" type="timeType" use="required"/>
                </xsd:complexType>
            </xsd:element>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="edges" type="xsd:string" use="optional"/>
        <xsd:attribute name="probability" type="nonNegativeFloatType"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="timeThreshold" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="pos" type="xsd:string" use="optional"/>
        <xsd:attribute name="radius" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="visible" type="boolType" use="optional"/>
        <xsd:attribute name="off" type="boolType" use="optional"/>
        <xsd:attribute name="optional" type="boolType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="instantInductionLoopType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="detectorIdType" use="required"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="pos" type="floatType" use="required"/>
        <xsd:attribute name="file" type="xsd:string" use="required"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="nextEdges" type="xsd:string" use="optional"/>
        <xsd:attribute name="detectPersons" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="busStopType">
        <xsd:choice  minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="access" type="accessType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="color" type="colorType" use="optional"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="startPos" type="floatType"/>
        <xsd:attribute name="endPos" type="floatType"/>
        <xsd:attribute name="angle" type="floatType" use="optional"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="lines" type="xsd:string" use="optional"/>
        <xsd:attribute name="personCapacity" type="nonNegativeIntType" use="optional"/>
        <xsd:attribute name="parkingLength" type="nonNegativeFloatType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="containerStopType">
        <xsd:choice  minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="access" type="accessType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="color" type="colorType" use="optional"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="startPos" type="floatType"/>
        <xsd:attribute name="endPos" type="floatType"/>
        <xsd:attribute name="angle" type="floatType" use="optional"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="lines" type="xsd:string" use="optional"/>
        <xsd:attribute name="containerCapacity" type="nonNegativeIntType" use="optional"/>
        <xsd:attribute name="parkingLength" type="nonNegativeFloatType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="chargingStationType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="startPos" type="floatType"/>
        <xsd:attribute name="endPos" type="floatType"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="lines" type="xsd:string" use="optional"/>
        <xsd:attribute name="power" type="floatType" use="optional"/>
        <xsd:attribute name="efficiency" type="floatType" use="optional"/>
        <xsd:attribute name="chargeInTransit" type="boolType" use="optional"/>
        <xsd:attribute name="chargeDelay" type="floatType" use="optional"/>
        <xsd:attribute name="chargeType" use="optional">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="normal"/>
                    <xsd:enumeration value="battery-exchange"/>
                    <xsd:enumeration value="fuel"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="waitingTime" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="parkingArea" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="overheadWireSegmentType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="voltageSource" type="boolType" use="optional"/>
        <xsd:attribute name="startPos" type="floatType" use="optional"/>
        <xsd:attribute name="endPos" type="floatType" use="optional"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="tractionSubstationType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="voltage" type="floatType" use="optional"/>
        <xsd:attribute name="currentLimit" type="floatType" use="optional"/>
        <xsd:attribute name="pos" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="overheadWireClampType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="substationId" type="xsd:string" use="required"/>
        <xsd:attribute name="idSegmentStartClamp" type="xsd:string" use="required"/>
        <xsd:attribute name="idSegmentEndClamp" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="overheadWireType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="segments" type="xsd:string" use="required"/>
        <xsd:attribute name="substationId" type="xsd:string" use="required"/>
        <xsd:attribute name="clamps" type="xsd:string" use="optional"/>
        <xsd:attribute name="forbiddenInnerLanes" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:simpleType name="accessPosType">
        <xsd:union memberTypes="floatType">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="random"/>
                    <xsd:enumeration value="doors"/>
                    <xsd:enumeration value="carriage"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:union>
    </xsd:simpleType>

    <xsd:complexType name="accessType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="pos" type="accessPosType" use="required"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="length" type="nonNegativeFloatType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="parkingAreaType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="space" type="parkingSpaceType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="roadsideCapacity" type="nonNegativeIntType" use="optional"/>
        <xsd:attribute name="onRoad" type="boolType" use="optional"/>
        <xsd:attribute name="startPos" type="floatType" use="optional"/>
        <xsd:attribute name="endPos" type="floatType" use="optional"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="lines" type="xsd:string" use="optional"/>
        <xsd:attribute name="width" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="length" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="angle" type="floatType" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="departPos" type="floatType" use="optional"/>
        <xsd:attribute name="lefthand" type="boolType" use="optional"/>
        <xsd:attribute name="acceptedBadges" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="parkingSpaceType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="x" type="floatType" use="required"/>
        <xsd:attribute name="y" type="floatType" use="required"/>
        <xsd:attribute name="z" type="floatType" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
        <xsd:attribute name="width" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="length" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="angle" type="floatType" use="optional"/>
        <xsd:attribute name="slope" type="floatType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="calibratorType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="include" type="includeType" minOccurs="0"/>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="route" type="routeType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="flow" type="flowCalibratorType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:choice>
        <xsd:attribute name="id" type="detectorIdType" use="required"/>
        <xsd:attribute name="edge" type="xsd:string" use="optional"/>
        <xsd:attribute name="lane" type="xsd:string" use="optional"/>
        <xsd:attribute name="node" type="xsd:string" use="optional"/>
        <xsd:attribute name="pos" type="floatType" use="optional"/>
        <xsd:attribute name="friendlyPos" type="boolType" use="optional"/>
        <xsd:attribute name="local" type="boolType" use="optional"/>
        <xsd:attribute name="period" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="freq" type="positiveFloatType" use="optional"/>
        <xsd:attribute name="file" type="xsd:string" use="optional"/>
        <xsd:attribute name="output" type="xsd:string" use="optional"/>
        <xsd:attribute name="routeProbe" type="xsd:string" use="optional"/>
        <xsd:attribute name="jamThreshold" type="floatType" use="optional"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="vaporizerType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="begin" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="end" type="nonNegativeFloatType" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="railSignalConstraintsType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="predecessor" type="constraintType"/>
            <xsd:element name="insertionPredecessor" type="constraintType"/>
            <xsd:element name="foeInsertion" type="constraintType"/>
            <xsd:element name="insertionOrder" type="constraintType"/>
            <xsd:element name="bidiPredecessor" type="constraintType"/>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="constraintType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="tripId" use="required" type="xsd:string"/>
        <xsd:attribute name="tl"     use="required" type="idType"/>
        <xsd:attribute name="foes"   use="required" type="xsd:string"/>
        <xsd:attribute name="limit"  use="optional" type="positiveIntType"/>
        <xsd:attribute name="active" use="optional" type="boolType"/>
    </xsd:complexType>

    <xsd:complexType name="deadlockType">
        <xsd:attribute name="time" type="timeType" use="optional"/>
        <xsd:attribute name="vehicles" type="xsd:string" use="optional"/>
        <xsd:attribute name="signals" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="polygonType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="type" type="xsd:string" use="optional"/>
        <xsd:attribute name="color" type="colorType" use="optional"/>
        <xsd:attribute name="fill" type="boolType" use="optional"/>
        <xsd:attribute name="geo" type="boolType" use="optional"/>
        <xsd:attribute name="layer" type="floatType" use="optional"/>
        <xsd:attribute name="shape" type="shapeType" use="required"/>
        <xsd:attribute name="angle" type="floatType" use="optional"/>
        <xsd:attribute name="lineWidth" type="floatType" use="optional"/>
        <xsd:attribute name="imgFile" type="xsd:string" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="poiType">
        <xsd:sequence>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="icon" use="optional">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value=""/>
                    <xsd:enumeration value="pin"/>
                    <xsd:enumeration value="tree"/>
                    <xsd:enumeration value="hotel"/>
                    <xsd:enumeration value="fuel"/>
                    <xsd:enumeration value="charging_station"/>
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="type" type="xsd:string" use="optional"/>
        <xsd:attribute name="color" type="colorType" use="optional"/>
        <xsd:attribute name="layer" type="floatType" use="optional"/>
        <xsd:attribute name="x" type="floatType" use="optional"/>
        <xsd:attribute name="y" type="floatType" use="optional"/>
        <xsd:attribute name="lon" type="floatType" use="optional"/>
        <xsd:attribute name="lat" type="floatType" use="optional"/>
        <xsd:attribute name="lane" type="xsd:string" use="optional"/>
        <xsd:attribute name="pos" type="floatType" use="optional"/>
        <xsd:attribute name="friendlyPos" use="optional" type="boolType"/>
        <xsd:attribute name="posLat" type="floatType" use="optional"/>
        <xsd:attribute name="angle" type="floatType" use="optional"/>
        <xsd:attribute name="imgFile" type="xsd:string" use="optional"/>
        <xsd:attribute name="width" type="floatType" use="optional"/>
        <xsd:attribute name="height" type="floatType" use="optional"/>
        <xsd:attribute name="name" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <!-- differs from types/base.xsd/tlLogicType in 'type' being optional here -->
    <xsd:complexType name="tlLogicAdditionalType">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="phase" type="phaseType"/>
            <xsd:element name="param" type="paramType"/>
            <xsd:element name="condition" type="conditionType"/>
            <xsd:element name="assignment" type="assignmentType"/>
            <xsd:element name="function" type="functionType"/>
        </xsd:choice>
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="type" type="tlTypeType" use="optional"/>
        <xsd:attribute name="programID" type="xsd:string" use="required"/>
        <xsd:attribute name="offset" type="offsetType" use="optional"/>
    </xsd:complexType>


</xsd:schema>