This page contains documentation with clarifications of how Netex (the Nordic Profile) data is imported by Samtrafiken.

The data is delivered in a zip file that consists of the following required files:

The files are described below.

Changelog of this documentation

2024-02-12 - Added the two fields JourneyPart.StartTimeDayOffset and JourneyPart.EndTimeDayOffset with explanations.

NeTEx version requirements

Samtrafiken requires submitted NeTEx datasets to comply with the Norwegian NeTEx 1.0.11 standard.

If you are using Java, you can use the netex-java-model package offered by Entur. This package helps validating your NeTEx files against the previously mentioned XSD files, and is the same validation as we use when we receive NeTEx files. https://github.com/entur/netex-java-model/releases/tag/netex-java-model-1.0.11

<dependency>
    <groupId>org.entur</groupId>
    <artifactId>netex-java-model</artifactId>
    <version>1.0.11</version>
</dependency>

In order to validate a file, you can take a look at this example code:

NeTExValidator netexValidator = new NeTExValidator();
Schema schema = netexValidator.getSchema();
Validator validator = schema.newValidator();
validator.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
validator.setErrorHandler(new XmlErrorHandler());
validator.validate(new StreamSource(netexFile));

If you want to validate the files in another way, you can use XSD files directly. These files can be found here: https://github.com/NeTEx-CEN/NeTEx

In case the version requirements would change in a way that your Netex files no longer validate against the new version, Samtrafiken will contact you before the change happens.

Codespace, ids and versioning

ServiceCalendar and DayTypeAssignment

You must use the <Date> or the <OperatingPeriodRef> element in the DayTypeAssignment when specifying operating days.
We do not support the use of the OperatingDayRef element.
Example:

<DayTypeAssignment order="1" version="any" id="SE:253:DayTypeAssignment:1-20191125">
    <!-- Choice OperatingDayRef is not allowed -->
    <Date>2019-11-25</Date>
    <DayTypeRef ref="SE:253:DayType:1" version="any"/>
</DayTypeAssignment>
<DayTypeAssignment order="1" version="any" id="SE:253:DayTypeAssignment:2-20191101">
    <!-- Choice OperatingDayRef is not allowed -->
    <OperatingPeriodRef ref="SE:253:OperatingPeriod:Cal20192786-MoWeThFr" version="any"/>
    <DayTypeRef ref="SE:253:DayType:1" version="any"/>
</DayTypeAssignment>

Note: An OperatingPeriod is valid up to the datetime specified in the ToDate, but NOT including that time, see the example below:

<OperatingPeriod version="any" id="SE:253:OperatingPeriod:221108221209">
  <FromDate>2022-11-08T00:00:00</FromDate>
  <ToDate>2022-12-10T00:00:00</ToDate>
  <!-- N.B: The ToDate is actually the time when the OperatingPeriod stops being valid.
       This means that the period is valid up to this time, but NOT including this time. 
       So the last possible trip would depart on 2022-12-09 23:59:59 -->
</OperatingPeriod>

JourneyParts and Timingpoints

ServiceFacilities or TrainNumbers can be specified for parts of a journey using JourneyParts, and are defined by two StopPoints and their passing times. See the XML file below for an example.

TimingPoints (where a vehicle does not stop, but is merely passing by at a specified time) are ignored by Samtrafiken. If a JourneyPart begins or ends at a PointInJourneyPattern which is a reference to a TimingPoint, then that JourneyPart will be ignored completely by Samtrafiken.

ServiceJourney.PublicCode

This element will be used as the announced journey code for the ServiceJourney. This element is optional but if not present there must be either a train number for trains or Line.PublicCode for other public transports available.

Notable requirements on some input values

A few fields have strict requirements on what values that are allowed in them. These requirements are necessary in order for Samtrafiken to be able to use the delivered data.

The most important fields are listed here for clarity. The examples for each file also have comments on fields that have special requirements.

To see requirements for ServiceFacilities, click here.

Mandatory fields with special requirements

Element

Requirement

Used for

Comment

StopPlace.Name

Required

Max 50 characters

Used as StopArea.name/StopPoint.name in Samtrafiken's systems.

StopPlace.PrivateCode

Must be either

  • a number between 1 and 999998

  • a 9-digit rikshållplatsnumber, such as 740000001

Used as StopArea.Number in Samtrafiken's systems.

If PrivateCode is not supplied, then the last part of the StopPlace.id will be tried instead. For example if the StopPlace.PrivateCode is empty and the StopPlace.id is: SE:253:StopPlace:174711, then 174711 will be used as StopArea.Number.

The requirement (between 1-999998) remains the same.

When delivering stops using rikshållplatsnumbers, all numbers should already exist as a rikshållplats.

Line.PrivateCode

Must be a number between 1 and 9998

Used as Line.Number in Samtrafiken's systems.

This should be unique in combination with the lines TransportOrganisation in the entire dataset.

ServiceJourney.trainNumbers

Required if the ServiceJourney.TransportMode is of type rail.

Max 5 characters

Used as DatedVehicleJourney.AnnouncedTrainNumber in Samtrafiken's systems.

The train number must be specified if the ServiceJourney.TransportMode is of type rail.

Optional fields with special requirements

Element

Requirement

Used for

Comment

Quay.Name

Optional

Max 50 characters

Used as StopPoint.name in Samtrafikens systems

StopPlace.ShortName

Quay.ShortName

Optional

Max 16 characters

Used as StopArea.ShortName/StopPoint.ShortName in Samtrafikens systems

StopPlace.AlternativeName.Abbreviation

Optional

Max 8 characters

Quay.PublicCode

Optional

Max 4 characters

Public facing stop point designation. When not present, the local number (auto-increment per StopPlace) is used instead.

Automatically shortened to 4 characters if too long.

For train operators: If the quay is not known (yet), use * as designation.

DestinationDisplay.PublicCode

Optional

Max 8 characters

Usually the same as Line.PublicCode

DestinationDisplay.FrontText

Optional

Max 50 characters

ServiceJourney.PublicCode

Optional

Max 5 characters

Public facing journey code. When not present, the first announced train number (for trains) or Line.PublicCode is used.

Import will fail if ServiceJourney.PublicCode is present but empty

_shared_data.xml

This is an example of the _shared_data.xml file with instructions on how the different fields and elements are expected to be used.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PublicationDelivery xmlns="http://www.netex.org.uk/netex" xmlns:ns2="http://www.opengis.net/gml/3.2">
    <PublicationTimestamp>2019-11-27T12:50:21</PublicationTimestamp> <!-- Required Timestamp of export. -->
    <ParticipantRef>SAM</ParticipantRef> <!-- Required Codespace for data submitter, participant identifier. We currently don't use this value for anything, so it's not important for our import. -->
    <dataObjects>
        <CompositeFrame created="2019-11-27T12:50:21" version="20191127125021" id="SE:253:CompositeFrame:1">
            <ValidBetween>
                <FromDate>2002-01-01T00:00:00</FromDate>
                <!-- ToDate is omitted since if there are elements within the frame that have indefinite validity, the frame must also have that. -->
            </ValidBetween>
            <codespaces>
                <Codespace id="253"> <!-- id is the same as Xmlns below -->
                    <Xmlns>253</Xmlns> <!-- From Samtrafiken's registry of producer numbers, provided by Samtrafiken -->
                    <XmlnsUrl>http://www.samtrafiken.se/ns/Östgötatrafiken</XmlnsUrl> <!-- "Östgötatrafiken" is based on data source and ensures that the url is unique, but is otherwise ignored during import -->
                </Codespace>
            </codespaces>
            <!-- Recommended defaults used to define common values. -->
            <FrameDefaults>
                <DefaultLocale>
                    <TimeZone>Europe/Stockholm</TimeZone>
                    <DefaultLanguage>se</DefaultLanguage>
                </DefaultLocale>
                <DefaultLocationSystem>4326</DefaultLocationSystem> <!-- All coordinates are EPSG:4326 WGS84 -->
            </FrameDefaults>
            <frames>
                <ResourceFrame version="20191127125021" id="SE:253:ResourceFrame:1">
                    <organisations>
                        <Authority version="20131206" id="SE:253:Authority:9010005000000000">
                            <CompanyNumber>5560388950</CompanyNumber> <!-- Required -->
                            <Name>Östgötatrafiken</Name> <!-- Required -->
                            <LegalName>Östgötatrafiken</LegalName> <!-- Required -->
                            <OrganisationType>authority</OrganisationType> <!-- Always "authority" -->
                        </Authority>
                        <!-- More Authority elements -->
                        <Operator version="20131211" id="SE:253:Operator:9013005918200000">
                            <Name>eBuss Motala</Name> <!-- Required -->
                            <LegalName>eBuss i Sverige AB</LegalName> <!-- Required -->
                            <OrganisationType>operator</OrganisationType> <!-- Always "operator" -->
                        </Operator>
                        <!-- More Operator elements -->
                    </organisations>
                </ResourceFrame>
                <ServiceFrame version="20191127125021" id="SE:253:ServiceFrame:1">
                    <!-- Network elements are refered to from Line elements (in the line-files) and provide common information of the Lines, like  their Authority. -->
                    <Network version="20131206" id="SE:253:Network:9010005000000000">
                        <Name>Östgötatrafiken</Name> <!-- Required -->
                        <AuthorityRef ref="SE:253:Authority:9010005000000000" version="20131206"/>
                    </Network>
                    <additionalNetworks>
                        <!-- More Network elements -->
                    </additionalNetworks>

                    <routePoints>
                        <!-- A point that is a stop place in a route. -->
                        <RoutePoint version="20190426" id="SE:253:RoutePoint:9022005000001001">
                            <projections>
                                <PointProjection version="20190426" id="SE:253:PointProjection:9022005000001001">
                                    <ProjectedPointRef ref="SE:253:ScheduledStopPoint:9022005000001001" version="20190426"/>
                                </PointProjection>
                            </projections>
                        </RoutePoint>
                        <RoutePoint version="20190426" id="SE:253:RoutePoint:9022005000050016">
                            <projections>
                                <PointProjection version="20190426" id="SE:253:PointProjection:9022005000001002">
                                    <ProjectedPointRef ref="SE:253:ScheduledStopPoint:9022005000001001" version="20190426"/>
                                </PointProjection>
                            </projections>
                        </RoutePoint>
                        <!-- More RoutePoint elements -->
                    </routePoints>
                    <destinationDisplays>
                        <!-- The displayed destination for a vehicle, commonly above the front window or onboard information screens, describing the vehicles final (or intermediary) destination. -->
                        <!-- -->
                        <DestinationDisplay version="any" id="SE:253:DestinationDisplay:via_55700000037211691">
                            <FrontText>Västerlösa</FrontText> <!-- Required, max 50 characters -->
                            <PublicCode>573</PublicCode> <!-- Optional Line Designation/number, max 8 characters -->
                            <!-- SideText is ignored -->
                        </DestinationDisplay>
                        <DestinationDisplay version="any" id="SE:253:DestinationDisplay:55700000037211691">
                            <FrontText>Malmslätt</FrontText>
                            <PublicCode>573</PublicCode>
                            <vias>
                                <!-- max 1 via -->
                                <Via>
                                    <DestinationDisplayRef ref="SE:253:DestinationDisplay:via_55700000037211691" version="any"/>
                                </Via>
                            </vias>
                        </DestinationDisplay>
                        <!-- More DestinationDisplay elements -->
                    </destinationDisplays>
                    <scheduledStopPoints>
                        <!-- Point for planned disembarking and/or boarding.
                         All ScheduledStopPoint must be mapped to a corresponding Quay, through PassengerStopAssignment further down the file. -->
                        <ScheduledStopPoint version="20190426" id="SE:253:ScheduledStopPoint:9022005000001001">
                            <Name>Norr Tull</Name> <!-- Name is ignored, but useful for human readability -->
                        </ScheduledStopPoint>
                        <ScheduledStopPoint version="20190426" id="SE:253:ScheduledStopPoint:9022005001364002">
                            <Name>Söder Tull</Name>
                        </ScheduledStopPoint>
                        <ScheduledStopPoint version="20190426" id="SE:253:ScheduledStopPoint:9022005000057002">
                            <Name>Öster Tull</Name>
                        </ScheduledStopPoint>
                        <!-- More ScheduledStopPoint elements -->
                    </scheduledStopPoints>
                    <serviceLinks> <!-- Optional, omit if empty -->
                        <!-- A ServiceLink describes the actual path a vehicle travels between two stop points. In GTFS this is called Shapes. -->
                        <ServiceLink version="20190213" id="SE:253:ServiceLink:BUS_9025005000136402_9025005000005702">
                            <ValidBetween>
                                <FromDate>2019-02-13T00:00:00</FromDate>
                            </ValidBetween>
                            <Distance>338</Distance> <!-- Optional distance in meters (decimals are ignored) defaults to 0 -->
                            <projections>
                                <LinkSequenceProjection version="20190213" id="SE:253:LinkSequenceProjection:BUS_9025005000136402_9025005000005702">
                                    <!-- Geometric representation of Link. The LineString is a sequential list of coordinate pairs. -->
                                    <ns2:LineString srsName="4326" ns2:id="LS_BUS_9025005000136402_9025005000005702">
                                        <!-- Coordinate pairs -->
                                        <ns2:posList count="30" srsDimension="2">58.666991 16.180848 58.666982 16.180848 58.66691 16.180899 58.666703 16.181034 58.666325 16.181358 58.666109 16.181545 58.665821 16.1818 58.665749 16.181834 58.665651 16.181833 58.665624 16.181833 58.665328 16.181743 58.664978 16.18155 58.664593 16.181253 58.664494 16.181166 58.664154 16.180869</ns2:posList>
                                    </ns2:LineString>
                                </LinkSequenceProjection>
                            </projections>
                            <FromPointRef ref="SE:253:ScheduledStopPoint:9022005001364002" version="20190426"/> <!-- Required -->
                            <ToPointRef ref="SE:253:ScheduledStopPoint:9022005000057002" version="20190426"/> <!-- Required -->
                            <!-- VehicleMode is ignored during import, it is extracted from ServiceJourneys that travel this ServceLink instead -->
                        </ServiceLink>
                        <!-- More ServiceLink elements -->
                    </serviceLinks>
                    <stopAssignments>
                        <!-- Mapping between ScheduledStopPoint and Quay -->
                        <PassengerStopAssignment order="1" version="20190426" id="SE:253:PassengerStopAssignment:9022005000001001">
                            <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005000001001" version="20190426"/>
                            <QuayRef ref="SE:253:Quay:9022005000001001"/>
                        </PassengerStopAssignment>
                        <PassengerStopAssignment order="2" version="20190426" id="SE:253:PassengerStopAssignment:9022005000001002">
                            <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005001364002" version="20190426"/>
                            <QuayRef ref="SE:253:Quay:9022005000100216"/>
                        </PassengerStopAssignment>
                        <PassengerStopAssignment order="3" version="20190426" id="SE:253:PassengerStopAssignment:9022005000001003">
                            <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057002" version="20190426"/>
                            <QuayRef ref="SE:253:Quay:9022005000102017"/>
                        </PassengerStopAssignment>
                        <!-- More PassengerStopAssignment elements -->
                    </stopAssignments>
                    <notices>
                        <!-- Text-based notes describing circumstances which cannot be modelled as structured data.
                        These are mapped to ServiceJourneys in the line-files through NoticeAssignment.
                        (Note: the example text below should actually be provided as a BookingArrangement (WIP for us))-->
                        <Notice version="any" id="SE:253:Notice:55700000050931583">
                            <Text>Turen måste förbeställas på 0771 - 71 10 20 senast 2 timmar före avresa från turens starthållplats.</Text> <!-- Required-->
                        </Notice>
                        <!-- More Notice elements -->
                    </notices>
                </ServiceFrame>
                <ServiceCalendarFrame version="20191127125021" id="SE:253:ServiceCalendarFrame:1">
                    <!-- Each unique combination of operating days will create one DayType. -->
                    <!-- The DayType contains each operating date or an OperatingPeriodRef as a DayTypeAssignment. -->
                    <dayTypes>
                        <DayType version="any" id="SE:253:DayType:1"/>
                        <DayType version="any" id="SE:253:DayType:2"/>
                        <DayType version="any" id="SE:253:DayType:3"/>
                        <DayType version="any" id="SE:253:DayType:4"/>
                        <DayType version="any" id="SE:253:DayType:5"/>
                        <DayType version="any" id="SE:253:DayType:6"/>
                        <DayType version="any" id="SE:253:DayType:7"/>
                        <DayType version="any" id="SE:253:DayType:8"/>
                        <DayType version="any" id="SE:253:DayType:9"/>
                        <DayType version="any" id="SE:253:DayType:10"/>
                        <DayType version="any" id="SE:253:DayType:11"/>
                        <DayType version="any" id="SE:253:DayType:12"/>
                        <DayType version="any" id="SE:253:DayType:13"/>
                    </dayTypes>
                    <dayTypeAssignments>
                        <!-- Each DayTypeAssignments maps one operating Date to a DayType -->
                        <DayTypeAssignment order="1" version="any" id="SE:253:DayTypeAssignment:1-20191125">
                            <Date>2019-11-25</Date>
                            <DayTypeRef ref="SE:253:DayType:1" version="any"/>
                        </DayTypeAssignment>
                        <DayTypeAssignment order="2" version="any" id="SE:253:DayTypeAssignment:1-20191126">
                            <Date>2019-11-26</Date>
                            <DayTypeRef ref="SE:253:DayType:1" version="any"/>
                        </DayTypeAssignment>
                        <DayTypeAssignment order="3" version="any" id="SE:253:DayTypeAssignment:1-20191127">
                            <Date>2019-11-27</Date>
                            <DayTypeRef ref="SE:253:DayType:1" version="any"/>
                        </DayTypeAssignment>
                        <!-- More DayTypeAssignment elements -->
                    </dayTypeAssignments>
                </ServiceCalendarFrame>
            </frames>
        </CompositeFrame>
    </dataObjects>
</PublicationDelivery>

_stops.xml

This is an example of the _stops.xml file with instructions on how the different fields and elements are expected to be used.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PublicationDelivery xmlns="http://www.netex.org.uk/netex">
    <PublicationTimestamp>2019-11-27T12:50:21</PublicationTimestamp> <!-- Required Timestamp of export. -->
    <ParticipantRef>SAM</ParticipantRef>  <!-- Required Codespace for data submitter, participant identifier. We currently don't use this value for anything, so it's not important for our import. -->
    <dataObjects>
        <SiteFrame version="20191127125021" id="SE:253:SiteFrame:1">
            <ValidBetween>
                <FromDate>2005-01-01T00:00:00</FromDate>
                <!-- ToDate is omitted since if there are elements within the frame that have indefinite validity, the frame must also have that. -->
            </ValidBetween>
            <codespaces>
                <Codespace id="253"> <!-- id is the same as Xmlns below -->
                    <Xmlns>253</Xmlns> <!-- From Samtrafiken's registry of producer numbers, provided by Samtrafiken -->
                    <XmlnsUrl>http://www.samtrafiken.se/ns/Östgötatrafiken</XmlnsUrl> <!-- "Östgötatrafiken" is based on data source and ensures that the url is unique, but is otherwise ignored during import -->
                </Codespace>
            </codespaces>
            <FrameDefaults>
                <DefaultLocale>
                    <TimeZone>Europe/Stockholm</TimeZone>
                    <DefaultLanguage>se</DefaultLanguage>
                </DefaultLocale>
                <DefaultLocationSystem>4326</DefaultLocationSystem> <!-- All coordinates are EPSG:4326 WGS84 -->
            </FrameDefaults>
            <stopPlaces>
                <StopPlace version="20161213" id="SE:253:StopPlace:9021005000001000">
                    <ValidBetween>
                        <FromDate>2016-12-13T00:00:00</FromDate>
                    </ValidBetween>
                    <Name>Norr Tull</Name> <!-- Required, max 50 characters -->
                    <ShortName>Norr Tull</ShortName> <!-- Optional, max 16 characters -->
                    <PrivateCode>1</PrivateCode> <!-- Required. Internal/technical and unique number, not meant to be shown to passengers. Kind of like an Id for the StopPlace. -->
                    <Centroid>
                        <Location>
                            <Longitude>16.176723</Longitude>
                            <Latitude>58.594850</Latitude>
                            <!-- Altitude is ignored -->
                            <!-- Precision is ignored -->
                        </Location>
                    </Centroid>
                    <TransportMode>bus</TransportMode> <!-- TransportMode is ignored during import -->
                    <StopPlaceType>busStation</StopPlaceType> <!-- Required -->
                    <quays>
                        <!-- A part of StopPlace where passengers can board or disembark a vehicle.
                        For example tactile paving position at a bus stop, the midpoint of a railway platform, a gate at an airport. -->
                        <!-- Quays do not have their own names. This information is inherited from the parent StopPlace. -->
                        <Quay version="20180419" id="SE:253:Quay:9022005000001001">
                            <ValidBetween>
                                <FromDate>2019-04-26T00:00:00</FromDate>
                            </ValidBetween>
                            <Name>Norr Tull</Name> <!-- Optional, max 50 characters -->
                            <ShortName>Norr Tull</ShortName> <!-- Optional, max 16 characters -->
                            <Centroid>
                                <Location>
                                    <Longitude>16.177052</Longitude>
                                    <Latitude>58.595038</Latitude>
                                </Location>
                            </Centroid>
                            <PublicCode>1</PublicCode> <!-- Optional designation meant to be shown for passengers. Max 4 characters long. -->
                        </Quay>
                        <Quay version="20140218" id="SE:253:Quay:9022005000100216">
                            <ValidBetween>
                                <FromDate>2019-04-26T00:00:00</FromDate>
                            </ValidBetween>
                            <Name>Norr Tull</Name>
                            <ShortName>Norr Tull</ShortName>
                            <Location>
                                <Longitude>16.176760</Longitude>
                                <Latitude>58.595074</Latitude>
                            </Location>
                            <PublicCode>2</PublicCode>
                        </Quay>
                        <!-- More Quay elements -->
                    </quays>
                </StopPlace>
                <!-- More StopPlace elements -->
            </stopPlaces>
            <navigationPaths> <!-- Optional, omit if empty -->
                <!-- A detailed description of the path between two places, in our import and export we only handle Quay-to-Quay NavigationPaths. -->
                <NavigationPath version="20180504" id="SE:253:NavigationPath:55700000046273098">
                    <Distance>0</Distance> <!-- Optional. Total length (in meters). -->
                    <From>
                        <PlaceRef ref="SE:253:Quay:9022005000100216" version="20140218"/> <!-- Required -->
                    </From>
                    <To>
                        <PlaceRef ref="SE:253:Quay:9022005000102017" version="20181204"/> <!-- Required -->
                    </To>
                    <TransferDuration>
                        <DefaultDuration>PT6M</DefaultDuration> <!-- Required. Specifies the duration of the transfer. -->
                    </TransferDuration>
                    <!-- NavigationType is ignored -->
                    <!-- AccessibilityAssessment is ignored -->
                </NavigationPath>
                <!-- More NavigationPath elements -->
            </navigationPaths>
        </SiteFrame>
    </dataObjects>
</PublicationDelivery>

line_{Line.Number}_{Line.Id}.xml

This is an example of a line file with instructions on how the different fields and elements are expected to be used.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<PublicationDelivery xmlns="http://www.netex.org.uk/netex">
    <PublicationTimestamp>2019-11-27T12:50:21</PublicationTimestamp> <!-- Timestamp of export -->
    <ParticipantRef>SAM</ParticipantRef> <!-- Required Codespace for data submitter, participant identifier. We currently don't use this value for anything, so it's not important for our import. -->
    <dataObjects>
        <CompositeFrame created="2019-11-27T12:50:21" version="20191127125021" id="SE:253:CompositeFrame:9011005005300000">
            <ValidBetween>
                <FromDate>2005-01-01T00:00:00</FromDate>
                <!-- ToDate is omitted since if there are elements within the frame that have indefinite validity, the frame must also have that. -->
            </ValidBetween>
            <codespaces>
                <Codespace id="253"> <!-- id is the same as Xmlns below -->
                    <Xmlns>253</Xmlns> <!-- From Samtrafiken's registry of producer numbers, provided by Samtrafiken -->
                    <XmlnsUrl>http://www.samtrafiken.se/ns/Östgötatrafiken</XmlnsUrl> <!-- "Östgötatrafiken" is based on data source and ensures that the url is unique, but is otherwise ignored during import -->
                </Codespace>
            </codespaces>
            <FrameDefaults>
                <DefaultLocale>
                    <TimeZone>Europe/Stockholm</TimeZone>
                    <DefaultLanguage>se</DefaultLanguage>
                </DefaultLocale>
                <DefaultLocationSystem>4326</DefaultLocationSystem>
            </FrameDefaults>
            <frames>
                <ServiceFrame version="20191127125021" id="SE:253:ServiceFrame:9011005005300000">
                    <routes>
                        <!-- Description of a route, specified as a sorted list of RoutePoints. -->
                        <Route version="any" id="SE:253:Route:55700000035050824">
                            <Name>Motala</Name> <!-- Required -->
                            <LineRef ref="SE:253:Line:9011005005300000" version="20131215"/> <!-- Required -->
                            <DirectionType>outbound</DirectionType> <!-- inbound/outbound -->
                        </Route>
                        <!-- More Route elements -->
                    </routes>
                    <lines>
                        <Line version="20131215" id="SE:253:Line:9011005005300000">
                            <Name>53</Name> <!-- Required -->
                            <TransportMode>rail</TransportMode> <!-- Required -->
                            <!-- TransportSubmode is currently ignored-->
                            <PublicCode>53</PublicCode> <!-- Optional. The publicly advertised line number -->
                            <PrivateCode>53</PrivateCode> <!-- Required. Internal (non-public) identifier for the line. Together with TransportOrganisation, this value should be unique in the entire dataset. This needs to fit in a numeric(4), can't be a String. -->
                            <RepresentedByGroupRef ref="SE:253:Network:9010005000000000"/> <!-- Required Reference to the Line's Network, defined in the _shared_data.xml-file -->
                        </Line>
                    </lines>
                    <journeyPatterns>
                        <JourneyPattern version="any" id="SE:253:JourneyPattern:55700000035050824">
                            <RouteRef ref="SE:253:Route:55700000035050824" version="any"/> <!-- Required -->
                            <pointsInSequence>
                                <!-- Only StopPointInJourneyPattern is allowed -->
                                <StopPointInJourneyPattern order="1" version="any" id="SE:253:StopPointInJourneyPattern:55700000035050829">
                                    <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005000001001"/> <!-- Required -->
                                    <ForAlighting>false</ForAlighting> <!-- default true -->
                                    <ForBoarding>true</ForBoarding> <!-- default true -->
                                    <DestinationDisplayRef ref="SE:253:DestinationDisplay:55700000037211691"/> <!-- Should be present on at least the first StopPointInJourneyPattern -->
                                    <RequestStop>true</RequestStop> <!-- default false -->
                                </StopPointInJourneyPattern>
                                <StopPointInJourneyPattern order="2" version="any" id="SE:253:StopPointInJourneyPattern:55700000035050830">
                                    <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005001364002"/>
                                    <ForAlighting>true</ForAlighting>
                                    <ForBoarding>true</ForBoarding>
                                    <RequestStop>true</RequestStop>
                                </StopPointInJourneyPattern>
                                <StopPointInJourneyPattern order="3" version="any" id="SE:253:StopPointInJourneyPattern:55700000035050831">
                                    <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057002"/>
                                    <ForAlighting>true</ForAlighting>
                                    <ForBoarding>true</ForBoarding>
                                </StopPointInJourneyPattern>
                                <StopPointInJourneyPattern order="4" version="any" id="SE:253:StopPointInJourneyPattern:55700000035050832">
                                    <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057003"/> <!-- (Reference is missing from this example page) -->
                                    <ForAlighting>true</ForAlighting>
                                    <ForBoarding>true</ForBoarding>
                                </StopPointInJourneyPattern>
                                <StopPointInJourneyPattern order="5" version="any" id="SE:253:StopPointInJourneyPattern:55700000035050833">
                                    <ScheduledStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057004"/> <!-- (Reference is missing from this example page) -->
                                    <ForAlighting>true</ForAlighting>
                                    <ForBoarding>false</ForBoarding>
                                </StopPointInJourneyPattern>
                                <!-- Timing points are not supported (ignored) by Samtrafiken, but may be present in the file using this syntax -->
                                <TimingPointInJourneyPattern order="4" version="0" id="SE:253:TimingPointInJourneyPattern:1234"> 
                                    <TimingPointRef ref="SE:253:TimingPoint:1234" />
                                </TimingPointInJourneyPattern>
                                <!-- More StopPointInJourneyPattern elements -->
                            </pointsInSequence>
                            <linksInSequence>  <!-- Optional, omit if empty -->
                                <!-- References to relevant ServiceLinks that has been defined in the _shared_data.xml-file -->
                                <ServiceLinkInJourneyPattern order="1" version="any" id="SE:253:ServiceLinkInJourneyPattern:BUS_391">
                                    <ServiceLinkRef ref="SE:253:ServiceLink:BUS_9025005000136402_9025005000005702"/>
                                </ServiceLinkInJourneyPattern>
                                <!-- More ServiceLinkInJourneyPattern elements -->
                            </linksInSequence>
                            <!-- PrivateCode is ignored -->
                            <!-- runTimes is ignored -->
                            <!-- waitTimes is ignored -->
                            <!-- headways is ignored -->
                        </JourneyPattern>
                    </journeyPatterns>
                </ServiceFrame>
                <TimetableFrame version="20191127125021" id="SE:253:TimetableFrame:9011005005300000">
                    <!-- A planned journey from starting point to a destination, according to a JourneyPattern. -->
                    <vehicleJourneys>
                        <!-- Only ServiceJourney and DeadRun are allowed, but DeadRun is ignored -->
                        <!-- Multiple versions are not supported on ServiceJourney, and should always be "any" -->
                        <ServiceJourney version="any" id="SE:253:ServiceJourney:55700000049527547">
                            <PrivateCode>123<PrivateCode> <!-- Optional, numeric(6). Represents an internal journey number that is not supposed to be shown to passengers. -->
                            <TransportMode>rail</TransportMode> <!-- Required -->
                            <!-- TransportSubmode is currently ignored -->
                            <dayTypes> <!-- Required -->
                                <DayTypeRef ref="SE:253:DayType:1"/> <!-- at least 1 -->
                            </dayTypes>
                            <JourneyPatternRef ref="SE:253:JourneyPattern:55700000035050824" version="any"/> <!-- Required -->
                            <PublicCode>1234X</PublicCode><!-- Optional, max 5 characters. Represents the trip number that is to be shown to the public. -->
                            <OperatorRef ref="SE:253:Operator:9013005918200000"/>
                            <trainNumbers> <!-- TrainNumbers exists only for ServiceJourneys that are trains. -->
                                <!-- Normally there will only be one TrainNumberRef here. For Trains that change their announced train number during their journey (also called vagnskurs/kursvagnar) there will be multiple TrainNumberRefs (as restricted by JourneyPart-elements). -->
                                <TrainNumberRef ref="SE:253:TrainNumber:9011074007000000_74" versionRef="any"/>
                                <TrainNumberRef ref="SE:253:TrainNumber:9011074007000000_70" versionRef="any"/>
                            </trainNumbers>
                            <passingTimes> <!-- Required -->
                                <TimetabledPassingTime version="any" id="SE:253:TimetabledPassingTime:55700000049527529"> <!-- Required -->
                                    <StopPointInJourneyPatternRef ref="SE:253:StopPointInJourneyPattern:55700000035050829" version="any"/>
                                    <!-- Optional DepartureDayOffset, default value = 0 -->
                                    <!-- Optional ArrivalDayOffset, default value = 0 -->
                                    <DepartureTime>06:40:00</DepartureTime>
                                    <!-- WaitingTime is ignored -->
                                </TimetabledPassingTime>
                                <TimetabledPassingTime version="any" id="SE:253:TimetabledPassingTime:55700000049527530">
                                    <StopPointInJourneyPatternRef ref="SE:253:StopPointInJourneyPattern:55700000035050830" version="any"/>
                                    <ArrivalTime>06:41:28</ArrivalTime>
                                    <DepartureTime>06:41:28</DepartureTime>
                                </TimetabledPassingTime>
                                <TimetabledPassingTime version="any" id="SE:253:TimetabledPassingTime:55700000049527544">
                                    <StopPointInJourneyPatternRef ref="SE:253:StopPointInJourneyPattern:55700000035050831" version="any"/>
                                    <ArrivalTime>07:50:00</ArrivalTime>
                                    <DepartureTime>07:51:00</DepartureTime>
                                </TimetabledPassingTime>
                                <!-- More TimetabledPassingTime elements -->
                                <TimetabledPassingTime version="any" id="SE:253:TimetabledPassingTime:55700000049527545">
                                    <StopPointInJourneyPatternRef ref="SE:253:StopPointInJourneyPattern:55700000035050832" version="any"/>
                                    <ArrivalTime>01:00:00</ArrivalTime>
                                    <ArrivalDayOffset>1</ArrivalDayOffset>
                                    <DepartureTime>01:05:00</DepartureTime>
                                    <DepartureDayOffset>1</DepartureDayOffset>
                                </TimetabledPassingTime>
                                <TimetabledPassingTime version="any" id="SE:253:TimetabledPassingTime:55700000049527546">
                                    <StopPointInJourneyPatternRef ref="SE:253:StopPointInJourneyPattern:55700000035050833" version="any"/>
                                    <ArrivalTime>03:10:00</ArrivalTime>
                                    <ArrivalDayOffset>1</ArrivalDayOffset>
                                </TimetabledPassingTime>
                            </passingTimes>
                            <parts>
                                <!-- JourneyParts with TrainNumberRefs must only exist for ServiceJourneys that are trains. -->
                                <!-- JourneyParts with TrainNumberRefs must only exist for trains that change their announced train number during their journey (also called vagnskurs/kursvagnar). -->
                                <JourneyPart version="any" id="SE:253:JourneyPart:323200000000003266_tn_0">
                                    <!-- MainPartRef is a self-reference that only exists to pass Netex-validation -->
                                    <MainPartRef ref="SE:253:JourneyPart:323200000000003266_tn_0" version="any"/>
                                    <TrainNumberRef ref="SE:253:TrainNumber:9011074007000000_70" versionRef="any"/>
                                    <FromStopPointRef ref="SE:253:ScheduledStopPoint:9022005000001001"/> <!-- required. If this points to a TimingPoint, the JourneyPart will be ignored -->
                                    <ToStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057003"/> <!-- required. If this points to a TimingPoint, the JourneyPart will be ignored -->
                                    <StartTime>06:40:00</StartTime><!-- required. Must match the departure time when this ServiceJourney has a call at FromStopPointRef. -->
                                    <EndTime>01:00:00</EndTime> <!-- required. Must match the arrival time when this ServiceJourney has a call at ToStopPointRef. -->
                                    <EndTimeDayOffset>1</EndTimeDayOffset> <!-- required. If null (or 0) this field is expected to not be set. -->
                                </JourneyPart>
                                <JourneyPart version="any" id="SE:253:JourneyPart:323200000000003266_tn_1">
                                    <MainPartRef ref="SE:253:JourneyPart:323200000000003266_tn_1" version="any"/>
                                    <TrainNumberRef ref="SE:253:TrainNumber:9011074007000000_74" versionRef="any"/>
                                    <FromStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057003"/> <!-- required. If this points to a TimingPoint, the JourneyPart will be ignored -->
                                    <ToStopPointRef ref="SE:253:ScheduledStopPoint:9022005000057004"/> <!-- required. If this points to a TimingPoint, the JourneyPart will be ignored -->
                                    <StartTime>01:05:00</StartTime> <!-- required. Must match the departure time when this ServiceJourney has a call at FromStopPointRef. -->
                                    <StartTimeDayOffset>1</StartTimeDayOffset> <!-- required. If null (or 0) this field is expected to not be set. -->
                                    <EndTime>03:10:00</EndTime> <!-- required. Must match the arrival time when this ServiceJourney has a call at ToStopPointRef. -->
                                    <EndTimeDayOffset>1</EndTimeDayOffset> <!-- required. If null (or 0) this field is expected to not be set. -->
                                </JourneyPart>
                            </parts>
                        </ServiceJourney>
                        <!-- More ServiceJourneys -->
                    </vehicleJourneys>
                    <trainNumbers>
                        <TrainNumber version="any" id="SE:253:TrainNumber:9011074007000000_70">
                            <!-- ForAdvertisement contains the announced train number which should be displayed for passengers. -->
                            <ForAdvertisement>70</ForAdvertisement>
                        </TrainNumber>
                        <TrainNumber version="any" id="SE:253:TrainNumber:9011074007000000_74">
                            <ForAdvertisement>74</ForAdvertisement>
                        </TrainNumber>
                    </trainNumbers>
                    <!-- Mappings between Notices defined in the _shared_data.xml-file and ServiceJourneys -->
                    <noticeAssignments>
                        <NoticeAssignment order="1" version="1" id="SE:NoticeAssignment:55700000050931583">
                            <NoticeRef ref="SE:253:Notice:55700000050931583"/>
                            <NoticedObjectRef ref="SE:253:ServiceJourney:55700000049527547" /> <!-- Only refs to ServiceJourney are allowed -->
                        </NoticeAssignment>
                    </noticeAssignments>
                    <journeyInterchanges>
                        <!-- other than ServiceJourneyInterchange is ignored -->
                        <ServiceJourneyInterchange version="any" id="SE:253:ServiceJourneyInterchange:55700000051347301_1">
                            <Priority>0</Priority> <!--0 = Interchange allowed, -1 = Interchange not allowed -->
                            <!-- Guaranteed and Advertised are ignored-->
                            <FromPointRef ref="SE:253:ScheduledStopPoint:9022005000001001"/>
                            <ToPointRef ref="SE:253:ScheduledStopPoint:9022005001364002" version="20190426"/>
                            <FromJourneyRef ref="SE:253:ServiceJourney:55700000049527547"/>
                            <ToJourneyRef ref="SE:253:ServiceJourney:55700000049527548" version="any"/>
                        </ServiceJourneyInterchange>
                    </journeyInterchanges>
                </TimetableFrame>
            </frames>
        </CompositeFrame>
    </dataObjects>
</PublicationDelivery>