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

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

    <xsd:element name="snapshot">
        <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
                <xsd:element name="rngState" type="rngStateType" minOccurs="0"/>
                <xsd:element name="edgeControl" type="edgeControlState" minOccurs="0"/>
                <xsd:element name="delay" type="delayStateType" minOccurs="1"/>
                <xsd:element name="vTypeDistribution" type="vTypeDistributionStateType" minOccurs="0"/>
                <xsd:element name="routeDistribution" type="routeDistributionStateType" minOccurs="0"/>
                <xsd:element name="vType" type="vTypeType" minOccurs="0"/>
                <xsd:element name="vehicle" type="vehicleStateType" minOccurs="0"/>
                <xsd:element name="transportables" type="transportablesStateType" minOccurs="0"/>
                <xsd:element name="route" type="routeStateType" minOccurs="0"/>
                <xsd:element name="flowState" type="flowStateType" minOccurs="0"/>
                <xsd:element name="lane" type="laneStateType" minOccurs="0"/>
                <xsd:element name="segment" type="segmentStateType" minOccurs="0"/>
                <xsd:element name="vehicleTransfer" type="vehicleTransferType" minOccurs="0"/>
                <xsd:element name="railSignalConstraintTracker" type="railSignalConstraintTrackerType" minOccurs="0"/>
                <xsd:element name="railSignalConstraints" type="railSignalConstraintsType" minOccurs="0"/>
                <xsd:element name="tlLogic" type="tlStateType" minOccurs="0"/>
                <xsd:element name="driveWay" type="driveWayStateType" minOccurs="0"/>
                <xsd:element name="subDriveWay" type="driveWayStateType" minOccurs="0"/>
                <xsd:element name="routingEngine" type="routingEngineType" minOccurs="0"/>
            </xsd:choice>
            <xsd:attribute name="version" type="xsd:string"/>
            <xsd:attribute name="time" type="timeType"/>
            <xsd:attribute name="type" type="xsd:string"/>
            <xsd:attribute name="constraints" type="boolType"/>
            <xsd:attribute name="rail" type="boolType"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:complexType name="rngStateType">
        <xsd:choice maxOccurs="unbounded">
            <xsd:element name="rngLane" type="rngLaneType" minOccurs="0"/>
        </xsd:choice>
        <xsd:attribute name="default" type="xsd:string" use="required"/>
        <xsd:attribute name="routeHandler" type="xsd:string" use="optional"/>
        <xsd:attribute name="insertionControl" type="xsd:string" use="optional"/>
        <xsd:attribute name="device" type="xsd:string" use="optional"/>
        <xsd:attribute name="device.btreceiver" type="xsd:string" use="optional"/>
        <xsd:attribute name="device.toc" type="xsd:string" use="optional"/>
        <xsd:attribute name="driverState" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="edgeControlState">
        <xsd:attribute name="lanes" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="rngLaneType">
        <xsd:attribute name="index" type="xsd:int" use="required"/>
        <xsd:attribute name="state" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="delayStateType">
        <xsd:attribute name="number" type="xsd:int" use="required"/>
        <xsd:attribute name="begin" type="xsd:integer" use="required"/>
        <xsd:attribute name="end" type="xsd:integer" use="required"/>
        <xsd:attribute name="depart" type="floatType" use="required"/>
        <xsd:attribute name="time" type="nonNegativeFloatType" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="vTypeDistributionStateType">
        <xsd:attribute name="id" type="xsd:string" use="required"/>
        <xsd:attribute name="vTypes" type="xsd:string" use="required"/>
        <xsd:attribute name="probabilities" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="routeDistributionStateType">
        <xsd:complexContent>
            <xsd:extension base="routeDistributionType">
                <xsd:attribute name="state" type="xsd:string" use="required"/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="flowStateType">
        <xsd:complexContent>
            <xsd:extension base="flowType">
                <xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
                <xsd:attribute name="done" type="xsd:nonNegativeInteger" use="required"/>
                <xsd:attribute name="next" type="timeType" use="optional"/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="vehicleStateType">
        <xsd:sequence>
            <xsd:element name="stop" type="stopType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="device" type="deviceType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="rem" type="remType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:string" use="required"/>
        <xsd:attribute name="route" type="xsd:string"/>
        <xsd:attribute name="reroute" type="boolType"/>
        <xsd:attribute name="fromTaz" type="xsd:string"/>
        <xsd:attribute name="toTaz" type="xsd:string"/>
        <xsd:attribute name="type" type="xsd:string"/>
        <xsd:attribute name="depart" type="departType" use="required"/>
        <xsd:attribute name="color" type="colorType"/>
        <xsd:attribute name="departLane" type="departLaneType"/>
        <xsd:attribute name="departPos" type="departPosType"/>
        <xsd:attribute name="departSpeed" type="departSpeedType"/>
        <xsd:attribute name="departEdge" type="routeIndexType"/>
        <xsd:attribute name="arrivalEdge" type="routeIndexType"/>
        <xsd:attribute name="arrivalLane" type="arrivalLaneType"/>
        <xsd:attribute name="arrivalPos" type="arrivalPosType"/>
        <xsd:attribute name="arrivalPosRandomized" type="nonNegativeFloatType"/>
        <xsd:attribute name="arrivalSpeed" type="arrivalSpeedType"/>
        <xsd:attribute name="departPosLat" type="departPosLatType"/>
        <xsd:attribute name="arrivalPosLat" type="arrivalPosLatType"/>
        <xsd:attribute name="arrival" type="timeType"/>
        <xsd:attribute name="routeLength" type="nonNegativeFloatType"/>
        <xsd:attribute name="line" type="xsd:string"/>
        <xsd:attribute name="personNumber" type="xsd:nonNegativeInteger"/>
        <xsd:attribute name="containerNumber" type="xsd:nonNegativeInteger"/>
        <xsd:attribute name="insertionChecks" type="xsd:string"/>
        <xsd:attribute name="parkingBadges" type="xsd:string"/>
        <xsd:attribute name="pos" type="xsd:string"/>
        <xsd:attribute name="posLat" type="floatType"/>
        <xsd:attribute name="speed" type="xsd:string"/>
        <xsd:attribute name="angle" type="floatType"/>
        <xsd:attribute name="speedFactor" type="nonNegativeFloatType"/>
        <xsd:attribute name="waitingTime" type="xsd:string"/>
        <xsd:attribute name="distance" type="xsd:string" use="required"/>
        <xsd:attribute name="state" type="xsd:string" use="required"/>
        <xsd:attribute name="lcState" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="deviceType">
        <xsd:attribute name="id" type="xsd:string" use="required"/>
        <!-- device optional if vehicle has not departed yet -->
        <xsd:attribute name="state" type="xsd:string" use="optional"/>
        <!-- device specific attributes -->
        <xsd:attribute name="exitTimes" type="xsd:string" use="optional"/>
        <xsd:attribute name="edge" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="remType">
        <xsd:attribute name="id" type="xsd:string" use="required"/>
        <xsd:attribute name="time" type="timeType" use="required"/>
        <xsd:attribute name="pos" type="xsd:float" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="transportablesStateType">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="person" type="personStateType" minOccurs="0" maxOccurs="unbounded"/>
            <xsd:element name="container" type="containerStateType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:choice>
        <xsd:attribute name="type" type="xsd:string" use="required"/>
        <xsd:attribute name="state" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="personStateType">
        <xsd:complexContent>
            <xsd:extension base="personType">
                <xsd:attribute name="state" type="xsd:string" use="required"/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="containerStateType">
        <xsd:complexContent>
            <xsd:extension base="containerType">
                <xsd:attribute name="state" type="xsd:string" use="required"/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="routeStateType">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="stop" type="stopType"/>
            <xsd:element name="param" type="paramType"/>
        </xsd:choice>
        <xsd:attribute name="id" type="xsd:string" use="required"/>
        <xsd:attribute name="state" type="xsd:string" use="required"/>
        <xsd:attribute name="edges" type="xsd:string" use="required"/>
        <xsd:attribute name="color" type="colorType"/>
    </xsd:complexType>

    <xsd:complexType name="laneStateType">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="vehicles" type="vehiclesType" minOccurs="0" maxOccurs="1"/>
            <xsd:element name="link" type="linkType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:choice>
        <xsd:attribute name="id" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="vehiclesType">
        <xsd:attribute name="value" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="linkType">
        <xsd:sequence>
            <xsd:element name="approaching" type="approachingType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="to" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="approachingType">
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="arrivalTime" type="xsd:integer" use="required"/>
        <xsd:attribute name="arrivalSpeed" type="floatType" use="required"/>
        <xsd:attribute name="departSpeed" type="floatType" use="required"/>
        <xsd:attribute name="request" type="boolType" use="required"/>
        <xsd:attribute name="arrivalTimeBraking" type="xsd:integer" use="optional"/>
        <xsd:attribute name="arrivalSpeedBraking" type="floatType" use="required"/>
        <xsd:attribute name="waitingTime" type="xsd:integer" use="required"/>
        <xsd:attribute name="distance" type="floatType" use="required"/>
        <xsd:attribute name="posLat" type="floatType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="segmentStateType">
        <xsd:sequence>
            <xsd:element name="vehicles" type="queueType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="queueType">
        <xsd:attribute name="time" type="xsd:long" use="required"/>
        <xsd:attribute name="blockTime" type="xsd:long" use="required"/>
        <xsd:attribute name="value" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="vehicleTransferType">
        <xsd:attribute name="id" type="xsd:string" use="required"/>
        <xsd:attribute name="depart" type="xsd:integer" use="required"/>
        <xsd:attribute name="parking" type="xsd:string" use="optional"/>
        <xsd:attribute name="jump" type="boolType" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="railSignalConstraintTrackerType">
        <xsd:attribute name="lane" type="xsd:string" use="required"/>
        <xsd:attribute name="index" type="xsd:int" use="required"/>
        <xsd:attribute name="state" type="xsd:string" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="tlStateType">
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="programID" type="xsd:string" use="required"/>
        <xsd:attribute name="phase" type="xsd:int" use="required"/>
        <xsd:attribute name="duration" type="xsd:integer" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="driveWayStateType">
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="edges" type="xsd:string" use="required"/>
        <xsd:attribute name="vehicles" type="xsd:string" use="optional"/>
    </xsd:complexType>

    <xsd:complexType name="routingEngineType">
        <xsd:sequence>
            <xsd:element name="edge" type="routingEngineEdgeType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="last" type="xsd:int" use="required"/>
        <xsd:attribute name="index" type="xsd:int" use="required"/>
    </xsd:complexType>

    <xsd:complexType name="routingEngineEdgeType">
        <xsd:attribute name="id" type="idType" use="required"/>
        <xsd:attribute name="speed" type="floatType" use="required"/>
        <xsd:attribute name="pastSpeed" type="xsd:string" use="optional"/>
        <xsd:attribute name="bikeSpeed" type="floatType" use="optional"/>
        <xsd:attribute name="pastBikeSpeed" type="xsd:string" use="optional"/>
    </xsd:complexType>

</xsd:schema>