Dev:changes/2.2/diff

From railML 2 Wiki
Jump to navigation Jump to search
Diff Pages

Schema differences between railML® 2.1 and railML® 2.2

This page shows schema differences between railML® 2.1 and railML® 2.2. It is intended to support advanced railML® users in comprehending and documenting the differences between these versions. Thanks to Milan Wölke of PSI Transcom (external link) for compiling the data.

An explanation of how to interpret diff output can be found here (external link).

diff --git a/schema/InfrastructureManagerCodes.xml b/schema/InfrastructureManagerCodes.xml
new file mode 100644
index 0000000..c88b8e0
--- /dev/null
+++ b/schema/InfrastructureManagerCodes.xml
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<!-- Copyright (c) railML.org; All Rights Reserved.
+     This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html
+     For further information see: https://www.railml.org/
+     Content of this file: XML Code List for railML(R) 2.2 Definition of infrastructure manager codes, used by infrastructure sub schema (IS) -->
+<infrastructureManagerCodes xmlns="https://www.railml.org/schemas/lists" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.railml.org/schemas/lists ../codelist-schema/InfrastructureManager.xsd">
+  <infrastructureManager code="ADF">
+    <name>ADIF</name>
+    <isoCountryCode>ES</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="AVG">
+    <name>Albtal-Verkehrs-Gesellschaft mbH</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="BC">
+    <name>BC</name>
+    <isoCountryCode>BY</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="BDK">
+    <name>Banedanmark</name>
+    <isoCountryCode>DK</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="BLS">
+    <name>BLS Netz</name>
+    <isoCountryCode>TR</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="BRE">
+    <name>Bayerische Regionaleisenbahn</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="CFL">
+    <name>CFL</name>
+    <isoCountryCode>LU</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="CFM">
+    <name>CFM</name>
+    <isoCountryCode>MD</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="CFR">
+    <name>CFR Infrastructura</name>
+    <isoCountryCode>RO</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="CIE">
+    <name>CIE</name>
+    <isoCountryCode>IE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="DBN">
+    <name>DB Netz</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="DRE">
+    <name>Deutsche Regionaleisenbahn</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="EDS">
+    <name>ΕΔΙΣΥ</name>
+    <isoCountryCode>GR</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="evb">
+    <name>Eisenbahnen und Verkehrsbetriebe Elbe-Weser GmbH</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="EVR">
+    <name>EVR</name>
+    <isoCountryCode>EE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="GKB">
+    <name>Graz-Köflacher Bahn und Busbetrieb GmbH</name>
+    <isoCountryCode>AT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="GyS">
+    <name>GySEV</name>
+    <isoCountryCode>HU</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="HSB">
+    <name>Harzer Schmalspurbahnen GmbH</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="HZI">
+    <name>HŽ Infrastruktura</name>
+    <isoCountryCode>HR</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="HzL">
+    <name>Hohenzollerische Landesbahn AG</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="InB">
+    <name>Infrabel</name>
+    <isoCountryCode>BE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="JBV">
+    <name>JBV</name>
+    <isoCountryCode>NO</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="KZH">
+    <name>KZH</name>
+    <isoCountryCode>KZ</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="LDz">
+    <name>LDz</name>
+    <isoCountryCode>LV</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="LG">
+    <name>LG</name>
+    <isoCountryCode>LT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="MGB">
+    <name>Matterhorn Gotthard Bahn</name>
+    <isoCountryCode>CH</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="MZ">
+    <name>MŽ</name>
+    <isoCountryCode>MK</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="NEB">
+    <name>Niederbarnimer Eisenbahn AG, Berlin</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="NRl">
+    <name>Network Rail</name>
+    <isoCountryCode>GB</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="NKS">
+    <name>NKSchl</name>
+    <isoCountryCode>BG</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="ÖBB">
+    <name>ÖBB Infra</name>
+    <isoCountryCode>AT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="OHE">
+    <name>Osthannoversche Eisenbahnen AG</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="PLK">
+    <name>PLK</name>
+    <isoCountryCode>PL</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="PrR">
+    <name>ProRail</name>
+    <isoCountryCode>NL</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="REF">
+    <name>REFER</name>
+    <isoCountryCode>PT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RFF">
+    <name>RFF</name>
+    <isoCountryCode>FR</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RFI">
+    <name>RFI</name>
+    <isoCountryCode>IT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RhB">
+    <name>Rhätische Bahn</name>
+    <isoCountryCode>CH</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RHK">
+    <name>RHK</name>
+    <isoCountryCode>FI</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RIG">
+    <name>RegioInfra Gesellschaft mbH</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RÖE">
+    <name>Raab-Oedenburg-Ebenfurter Eisenbahn</name>
+    <isoCountryCode>AT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RSE">
+    <name>Rhein-Sieg-Eisenbahn GmbH</name>
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="RZD">
+    <name>РЖД</name>
+    <isoCountryCode>RU</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="SBB">
+    <name>SBB Infrastruktur</name>
+    <isoCountryCode>CH</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="SLB">
+    <name>Salzburger Lokalbahn</name>
+    <isoCountryCode>AT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="SuH">
+    <name>Stern und Hafferl Ges.m.b.H, Gmunden</name>
+    <isoCountryCode>AT</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="SZD">
+    <name>SŽDC</name>
+    <isoCountryCode>CZ</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="SZI">
+    <name>SŽ Infrastruktura</name>
+    <isoCountryCode>SI</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="TCD">
+    <name>TCDD</name>
+    <isoCountryCode>TR</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="ThE">
+    <name>Thüringer Eisenbahn GmbH</name>
+    <validity begin="2001-08-01" />
+    <isoCountryCode>DE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="TrV">
+    <name>Trafikverket</name>
+    <isoCountryCode>SE</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="UZ">
+    <name>UZ</name>
+    <isoCountryCode>UA</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="VPE">
+    <name>VPE</name>
+    <isoCountryCode>HU</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="ZFB">
+    <name>ŽFBH</name>
+    <isoCountryCode>BA</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="ZS">
+    <name>ŽS</name>
+    <isoCountryCode>RS</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="ZRS">
+    <name>ŽRS</name>
+    <isoCountryCode>BA</isoCountryCode>
+  </infrastructureManager>
+  <infrastructureManager code="ZSR">
+    <name>ŽSR</name>
+    <isoCountryCode>SK</isoCountryCode>
+  </infrastructureManager>
+</infrastructureManagerCodes>
diff --git a/schema/Registers.xml b/schema/Registers.xml
new file mode 100644
index 0000000..ad61cc8
--- /dev/null
+++ b/schema/Registers.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<!-- Copyright (c) railML.org; All Rights Reserved.
+     This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html
+     For further information see: https://www.railml.org/
+     Content of this file: XML Code List for railML(R) 2.2 Definition of operation or control point register codes, used by timetable sub schema (TT) -->
+<registers xmlns="https://www.railml.org/schemas/lists" xmlns:xml="https://www.w3.org/XML/1998/namespace" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.railml.org/schemas/lists ../codelist-schema/Register.xsd">
+  <register code="DB640">
+    <name>Dienstbehelf Nr. 640</name>
+    <organization xml:lang="de-AT">ÖBB</organization>
+  </register>
+  <register code="DIDOK">
+    <name>Dienststellendokumentation</name>
+    <organization xml:lang="de-CH">SBB</organization>
+  </register>
+  <register code="ENEE">
+    <name>ENEE Database Station Code</name>
+    <organization xml:lang="fr">UIC</organization>
+  </register>
+  <register code="IBNR">
+    <name>IBNR</name>
+    <organization xml:lang="de">Europäisches Fahrplanzentrum</organization>
+  </register>
+  <register code="RL100">
+    <name>Betriebsstellenkürzel</name>
+    <organization xml:lang="de">DB</organization>
+    <remarks xml:lang="en">was DS100 or DV100 or Ril100</remarks>
+  </register>
+</registers>
diff --git a/schema/TrainProtectionSystems.xml b/schema/TrainProtectionSystems.xml
new file mode 100644
index 0000000..e5e3998
--- /dev/null
+++ b/schema/TrainProtectionSystems.xml
@@ -0,0 +1,420 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- $Id$ -->
+<!-- Copyright (c) railML.org; All Rights Reserved.
+     This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html
+     For further information see: https://www.railml.org/
+     Content of this file: XML Code List for railML(R) 2.2 Definition of train protection system codes, used by infrastructure sub schema (IS), rollingstock sub schema (RS) and timetable sub schema (TT) -->
+<trainProtectionSystems xmlns="https://www.railml.org/schemas/lists" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.railml.org/schemas/lists ../codelist-schema/TrainProtectionSystem.xsd">
+  <trainProtectionSystemsAtTrack>
+    <trainProtectionSystem code="ALSN">
+      <name>Continuous Automatic Train Signalling</name>
+      <validFor>
+        <vehicleSystem>ALSN</vehicleSystem>
+        <vehicleSystem>ALSEN</vehicleSystem>
+        <vehicleSystem>KLUBU</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ASFA">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATB">
+      <name />
+      <validFor>
+        <vehicleSystem>ATB</vehicleSystem>
+        <vehicleSystem>ATBEG</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATBNG">
+      <name />
+    </trainProtectionSystem>
+    <!-- This name is used for various systems with heterogeneous devices
+    <trainProtectionSystem code="ATC">
+      <name></name>
+      <validFor>
+        <vehicleSystem></vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+-->
+    <trainProtectionSystem code="ATSP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATSS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="AWS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="BACC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Crocodile">
+      <name />
+      <validFor>
+        <vehicleSystem>Crocodile</vehicleSystem>
+        <vehicleSystem>Memor</vehicleSystem>
+        <vehicleSystem>Memor2</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="CIR-ELKE">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="CIR-ELKE2">
+      <name />
+      <validFor>
+        <vehicleSystem>CIR-ELKE</vehicleSystem>
+        <vehicleSystem>CIR-ELKE2</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="CSS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="DATC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="EBICAB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ETCS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="EVM">
+      <name />
+      <validFor>
+        <vehicleSystem>EVM120</vehicleSystem>
+        <vehicleSystem>EVM160</vehicleSystem>
+        <vehicleSystem>Mirel</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Fahrsp">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="GWATP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Indusi">
+      <name />
+      <validFor>
+        <vehicleSystem>Indusi54</vehicleSystem>
+        <vehicleSystem>Indusi60</vehicleSystem>
+        <vehicleSystem>Indusi60R</vehicleSystem>
+        <vehicleSystem>PZ80</vehicleSystem>
+        <vehicleSystem>PZB90</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Integra-Signum">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="KHP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="KVB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="LS">
+      <name />
+      <validFor>
+        <vehicleSystem>LS</vehicleSystem>
+        <vehicleSystem>LS90</vehicleSystem>
+        <vehicleSystem>Mirel</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="LZB">
+      <name />
+      <validFor>
+        <vehicleSystem>LZB-L72</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="RS4c">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SAUTC">
+      <name />
+      <validFor>
+        <vehicleSystem>SAUTC</vehicleSystem>
+        <vehicleSystem>SAUTCM</vehicleSystem>
+        <vehicleSystem>SAUTU</vehicleSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SCMT">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SELCAB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SHP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SSC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TBL">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TPWS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TVM300">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TVM430">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZSI127">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZSI90">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZSL90">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZST90">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB121">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB122">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB123">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB262">
+      <name />
+    </trainProtectionSystem>
+  </trainProtectionSystemsAtTrack>
+  <trainProtectionSystemsOnVehicle>
+    <trainProtectionSystem code="ALSEN">
+      <name />
+      <validFor>
+        <trackSystem>ALSN</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ALSN">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ASFA">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATBEG">
+      <name />
+      <validFor>
+        <trackSystem>ATB</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATBNG">
+      <name />
+    </trainProtectionSystem>
+    <!-- This name is used for various systems with heterogeneous devices
+    <trainProtectionSystem code="ATC">
+      <name></name>
+      <validFor>
+        <trackSystem></trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+-->
+    <trainProtectionSystem code="ATSP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ATSS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="AWS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="BACC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="CIR-ELKE">
+      <name />
+      <validFor>
+        <trackSystem>LZB</trackSystem>
+        <trackSystem>CIR-ELKE</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="CIR-ELKE2">
+      <name />
+      <validFor>
+        <trackSystem>LZB</trackSystem>
+        <trackSystem>CIR-ELKE</trackSystem>
+        <trackSystem>CIR-ELKE2</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Crocodile">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="CSS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="DATC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="EBICAB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ETCS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="EVM120">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="EVM160">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Fahrsp">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="GWATP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Indusi54">
+      <name />
+      <validFor>
+        <trackSystem>Indusi</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Indusi60">
+      <name />
+      <validFor>
+        <trackSystem>Indusi</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Indusi60R">
+      <name />
+      <validFor>
+        <trackSystem>Indusi</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Integra-Signum">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="KHP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="KLUBU">
+      <name />
+      <validFor>
+        <trackSystem>ALSN</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="KVB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="LS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="LS90">
+      <name />
+      <validFor>
+        <trackSystem>LS</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="LZB-L72">
+      <name />
+      <validFor>
+        <trackSystem>LZB</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Memor">
+      <name />
+      <validFor>
+        <trackSystem>Crocodile</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Memor2">
+      <name />
+      <validFor>
+        <trackSystem>Crocodile</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="Mirel">
+      <name />
+      <validFor>
+        <trackSystem>EVM</trackSystem>
+        <trackSystem>LS</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="PZ80">
+      <name />
+      <validFor>
+        <trackSystem>Indusi</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="PZB90">
+      <name />
+      <validFor>
+        <trackSystem>Indusi</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="RS4c">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SAUTC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SAUTCM">
+      <name />
+      <validFor>
+        <trackSystem>SAUTC</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SAUTU">
+      <name />
+      <validFor>
+        <trackSystem>SAUTC</trackSystem>
+      </validFor>
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SCMT">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SELCAB">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SHP">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="SSC">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TBL">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TPWS">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TVM300">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="TVM430">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZSI127">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZSI90">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZSL90">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZST90">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB121">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB122">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB123">
+      <name />
+    </trainProtectionSystem>
+    <trainProtectionSystem code="ZUB262">
+      <name />
+    </trainProtectionSystem>
+  </trainProtectionSystemsOnVehicle>
+</trainProtectionSystems>
diff --git a/schema/genericRailML.xsd b/schema/genericRailML.xsd
index f442d8f..7c08d2d 100644
--- a/schema/genericRailML.xsd
+++ b/schema/genericRailML.xsd
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" xmlns:dc="https://purl.org/dc/elements/1.1/" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" xmlns:dc="https://purl.org/dc/elements/1.1/" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of generic simple types, used by all sub schemas</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of generic simple types, used by all sub schemas</xs:documentation>
   </xs:annotation>
 
   <xs:import namespace="https://purl.org/dc/elements/1.1/" schemaLocation="https://dublincore.org/schemas/xmls/qdc/2008/02/11/dc.xsd">
@@ -31,14 +31,14 @@
 
   <xs:simpleType name="tVersionNumber">
     <xs:annotation>
-      <xs:documentation>an arbitrary version number for any system; allowing digits, letters and whitespace</xs:documentation>
+      <xs:documentation>an arbitrary version number for any system; allowing digits, letters and white space</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:string" />
   </xs:simpleType>
 
   <xs:simpleType name="tGenericID">
     <xs:annotation>
-      <xs:documentation>an XML-side constrained biunique identity; unique across an XML file including its outsourced components (xi:include mechanism); whitespaces not allowed</xs:documentation>
+      <xs:documentation>an XML-side constrained bi-unique identity; unique across an XML file including its outsourced components (xi:include mechanism); white spaces not allowed</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:ID" />
   </xs:simpleType>
@@ -52,14 +52,14 @@
 
   <xs:simpleType name="tGenericName">
     <xs:annotation>
-      <xs:documentation>system-wide known name of an railway facility (e.g. station, timetable period or vehicle), allowing digits, letters and whitespace</xs:documentation>
+      <xs:documentation>system-wide known name of an railway facility (e.g. station, timetable period or vehicle), allowing digits, letters and white space</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:string" />
   </xs:simpleType>
 
   <xs:simpleType name="tElementDescription">
     <xs:annotation>
-      <xs:documentation>an detailed description of an railway facility (e.g. station, timetable period or vehicle), allowing digits, letters and whitespace</xs:documentation>
+      <xs:documentation>an detailed description of an railway facility (e.g. station, timetable period or vehicle), allowing digits, letters and white space</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:string" />
   </xs:simpleType>
@@ -72,6 +72,63 @@
       <xs:element name="additionalName" type="rail:tAdditionalName" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>additional names and its according descriptions to be provided in other languages, dialects, encodings...</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_infrastructure" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_track" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_mileageChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_switch" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_crossing" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_crossSection" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_border" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_speedChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_gradientChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_radiusChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_tunnel" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_brigde" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_levelCrossing" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_ownerChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_operationModeChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_trainProtectionChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_electrificationChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_powerTransmissionChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_axleWeightChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_gaugeChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_geoMapping" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_trackCondition" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_platformEdge" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_serviceSection" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_signal" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_signalGroup" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_trainDetector" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_trackCircuitBorder" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_balise" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_trainProtectionElement" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_line" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_locallyControlledArea" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_ocp" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_propOther" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_controller" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_speedProfile" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_macroscopicInfrastructureElement" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_rollingstock" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_vehicle" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_propulsion" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_energyStorage" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_etcs" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_specificTransmissionModule" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_nationalSystem" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_trainRadio" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_otherEquipment" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:additionalName_formation" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_timetable" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_timetablePeriod" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_operatingPeriod" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_category" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_trainPart" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_train" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_trainGroup" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_rostering" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_blockPart" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:additionalName_block" />
         </xs:annotation>
       </xs:element>
       <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
@@ -140,7 +197,7 @@
       <xs:documentation>Special derived type without 'any' element sequence but 'anyAttribute' for inheritance with 'xs:all' model group.</xs:documentation>
     </xs:annotation>
     <xs:complexContent>
-      <xs:restriction base="rail:tElementWithIDAndName">
+      <xs:extension base="rail:tAdditionalName">
         <xs:attribute name="id" type="rail:tGenericID" use="required">
           <xs:annotation>
             <xs:documentation>XML-file-wide unique identity is required for later referencing that element</xs:documentation>
@@ -151,22 +208,7 @@
             <xs:documentation>for typical, specific abbreviations, used in different systems with the same understanding</xs:documentation>
           </xs:annotation>
         </xs:attribute>
-        <xs:attribute name="name" type="rail:tGenericName">
-          <xs:annotation>
-            <xs:documentation>should be interpreted in its elements' context (e.g. track/name, vehicle/name)</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="description" type="rail:tElementDescription">
-          <xs:annotation>
-            <xs:documentation>should be interpreted in its elements' context, substantiates the name</xs:documentation>
-          </xs:annotation>
-        </xs:attribute>
-        <xs:attributeGroup ref="rail:anyAttribute">
-          <xs:annotation>
-            <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
-          </xs:annotation>
-        </xs:attributeGroup>
-      </xs:restriction>
+      </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
@@ -196,6 +238,9 @@
           <xs:element name="metadata" type="dc:elementContainer" minOccurs="0">
             <xs:annotation>
               <xs:documentation>subschema-wide flexible collection of Dublin Core metadata based on xs:any according to https://dublincore.org/</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:metadata" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:metadata" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:metadata" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -240,7 +285,7 @@
 
   <xs:simpleType name="tOneToZero">
     <xs:annotation>
-      <xs:documentation>generic type for values only between 0 and 1, as efficiency or cosinus phi.</xs:documentation>
+      <xs:documentation>generic type for values only between 0 and 1, as efficiency or cosine phi.</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:decimal">
       <xs:minInclusive value="0" />
@@ -251,7 +296,7 @@
 
   <xs:simpleType name="tDigitString">
     <xs:annotation>
-      <xs:documentation>an arbitrary string consisting of digits from 0 to 9; not allowing whitespace, letters; no length restriction</xs:documentation>
+      <xs:documentation>an arbitrary string consisting of digits from 0 to 9; not allowing white space, letters; no length restriction</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:string">
       <xs:pattern value="[0-9]*" />
@@ -305,7 +350,7 @@
 
   <xs:simpleType name="tDoubleList">
     <xs:annotation>
-      <xs:documentation>an arbitrary list consisting of xs:double values separated by whitespace; no length restriction</xs:documentation>
+      <xs:documentation>an arbitrary list consisting of xs:double values separated by white space; no length restriction</xs:documentation>
     </xs:annotation>
     <xs:list itemType="xs:double" />
   </xs:simpleType>
@@ -322,7 +367,7 @@
 
   <xs:simpleType name="tOtherEnumerationValue">
     <xs:annotation>
-      <xs:documentation>an arbitrary string starting with 'other:' followed by at minimum two characters, whitespace not allowed for extending railML enumeration lists</xs:documentation>
+      <xs:documentation>an arbitrary string starting with 'other:' followed by at minimum two characters, white space not allowed for extending railML enumeration lists</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:string">
       <xs:pattern value="other:\w{2,}" />
diff --git a/schema/infrastructure.xsd b/schema/infrastructure.xsd
index 61ce423..04d3a32 100644
--- a/schema/infrastructure.xsd
+++ b/schema/infrastructure.xsd
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
-  <xs:annotation>
+    <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of elements (partially hidden as complex type) for infrastructure sub schema (IS), uses infrastructure types and attribute groups from "xs:include" path</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of elements (partially hidden as complex type) for infrastructure sub schema (IS), uses infrastructure types and attribute groups from "xs:include" path</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="infrastructureTypes.xsd" />
@@ -14,24 +14,201 @@
   <xs:import namespace="https://www.w3.org/XML/1998/namespace" schemaLocation="https://www.w3.org/2001/03/xml.xsd" />
 
   <xs:element name="infrastructure">
+    <xs:annotation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/IS:infrastructure" />
+    </xs:annotation>
     <xs:complexType>
       <xs:complexContent>
         <xs:extension base="rail:tInfrastructure">
           <xs:sequence>
-            <xs:element name="infraAttrGroups" type="rail:eInfraAttrGroup" minOccurs="0" />
-            <xs:element name="tracks" type="rail:eTracks" minOccurs="0" />
-            <xs:element name="trackGroups" type="rail:eTrackGroups" minOccurs="0" />
-            <xs:element name="operationControlPoints" type="rail:eOperationControlPoints" minOccurs="0" />
-            <xs:element name="controllers" type="rail:eControllers" minOccurs="0" />
+            <xs:element name="infraAttrGroups" type="rail:eInfraAttrGroup" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/IS:infraAttrGroups" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="tracks" type="rail:eTracks" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/IS:tracks" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="trackGroups" type="rail:eTrackGroups" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackGroups" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="operationControlPoints" type="rail:eOperationControlPoints" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/IS:operationControlPoints" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="controllers" type="rail:eControllers" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/IS:controllers" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="speedProfiles" type="rail:eSpeedProfiles" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/IS:speedProfiles" />
+              </xs:annotation>
+            </xs:element>
           </xs:sequence>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
+
+    <xs:key name="infraAttributesKey">
+      <xs:selector xpath=".//rail:infraAttrGroups/rail:infraAttributes" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="infraAttributes-trackKeyref" refer="rail:infraAttributesKey">
+      <xs:selector xpath=".//rail:tracks/rail:track" />
+      <xs:field xpath="@infraAttrGroupRef" />
+    </xs:keyref>
+    <xs:keyref name="infraAttributes-infraAttrGroupRefKeyref" refer="rail:infraAttributesKey">
+      <xs:selector xpath=".//rail:infraAttrGroupRefs/rail:infraAttrGroupRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="connectionKey">
+      <xs:selector xpath=".//rail:connection" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="connection-connectionKeyref" refer="rail:connectionKey">
+      <xs:selector xpath=".//rail:connection" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="speedChangeKey">
+      <xs:selector xpath=".//rail:speedChanges/rail:speedChange" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="speedChange-signalSpeedRefKeyref" refer="rail:speedChangeKey">
+      <xs:selector xpath=".//rail:signal/rail:speed/rail:speedChangeRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="levelCrossingKey">
+      <xs:selector xpath=".//rail:levelCrossings/rail:levelCrossing" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="levelCrossing-signalLevelCrossingKeyref" refer="rail:levelCrossingKey">
+      <xs:selector xpath=".//rail:signal/rail:levelCrossing" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="trackConditionKey">
+      <xs:selector xpath=".//rail:trackConditions/rail:trackCondition" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="trackCondition-signalTrainRadioKeyref" refer="rail:trackConditionKey">
+      <xs:selector xpath=".//rail:signal/rail:trainRadio" />
+      <xs:field xpath="@trackConditionRef" />
+    </xs:keyref>
+    <xs:keyref name="trackCondition-signalCatenaryKeyref" refer="rail:trackConditionKey">
+      <xs:selector xpath=".//rail:signal/rail:catenary" />
+      <xs:field xpath="@trackConditionRef" />
+    </xs:keyref>
+    <xs:keyref name="trackCondition-signalBrakingKeyref" refer="rail:trackConditionKey">
+      <xs:selector xpath=".//rail:signal/rail:braking" />
+      <xs:field xpath="@trackConditionRef" />
+    </xs:keyref>
+    
+    <xs:key name="mileageChangeKey">
+      <xs:selector xpath=".//rail:mileageChanges/rail:mileageChange" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="mileageChange-signalMilepostKeyref" refer="rail:mileageChangeKey">
+      <xs:selector xpath=".//rail:signal/rail:milepost" />
+      <xs:field xpath="@mileageChangeRef" />
+    </xs:keyref>
+
+    <xs:key name="signalKey">
+      <xs:selector xpath=".//rail:signals/rail:signal" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="signal-signalRefKeyref" refer="rail:signalKey">
+      <xs:selector xpath=".//rail:stopPost/rail:signalRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="signal-signalGroupKeyref" refer="rail:signalKey">
+      <xs:selector xpath=".//rail:signalGroups/rail:signalGroup/rail:signalRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="baliseKey">
+      <xs:selector xpath=".//rail:balises/rail:balise" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="balise-baliseGroupKeyref" refer="rail:baliseKey">
+      <xs:selector xpath=".//rail:baliseGroup/rail:baliseRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="baliseGroupKey">
+      <xs:selector xpath=".//rail:balises/rail:baliseGroup" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="baliseGroup-signalKeyref" refer="rail:baliseGroupKey">
+      <xs:selector xpath=".//rail:signals/rail:signal/rail:baliseGroupRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="trainProtectionElementKey">
+      <xs:selector xpath=".//rail:trainProtectionElements/rail:trainProtectionElement" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="trainProtectionElement-trainProtectionElementGroupKeyref" refer="rail:trainProtectionElementKey">
+      <xs:selector xpath=".//rail:trainProtectionElementGroup/rail:trainProtectionElementRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="trainProtectionElementGroupKey">
+      <xs:selector xpath=".//rail:trainProtectionElements/rail:trainProtectionElementGroup" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="trainProtectionElementGroup-signalKeyref" refer="rail:trainProtectionElementGroupKey">
+      <xs:selector xpath=".//rail:signals/rail:signal/rail:trainProtectionElementGroupRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <xs:key name="controllerKey">
+      <xs:selector xpath=".//rail:controllers/rail:controller" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    <xs:keyref name="controller-switchKeyref" refer="rail:controllerKey">
+      <xs:selector xpath=".//rail:switch" />
+      <xs:field xpath="@controllerRef" />
+    </xs:keyref>
+    <xs:keyref name="controller-levelCrossingKeyref" refer="rail:controllerKey">
+      <xs:selector xpath=".//rail:levelCrossings/rail:levelCrossing" />
+      <xs:field xpath="@controllerRef" />
+    </xs:keyref>
+    <xs:keyref name="controller-signalKeyref" refer="rail:controllerKey">
+      <xs:selector xpath=".//rail:signals/rail:signal" />
+      <xs:field xpath="@controllerRef" />
+    </xs:keyref>
+    <xs:keyref name="controller-trainDetectorKeyref" refer="rail:controllerKey">
+      <xs:selector xpath=".//rail:trainDetectionElements/rail:trainDetector" />
+      <xs:field xpath="@controllerRef" />
+    </xs:keyref>
+    <xs:keyref name="controller-trackCircuitBorderKeyref" refer="rail:controllerKey">
+      <xs:selector xpath=".//rail:trainDetectionElements/rail:trackCircuitBorder" />
+      <xs:field xpath="@controllerRef" />
+    </xs:keyref>
+    <xs:keyref name="controller-locallyControlledAreaKeyref" refer="rail:controllerKey">
+      <xs:selector xpath=".//rail:trackGroups/rail:locallyControlledArea" />
+      <xs:field xpath="@controllerRef" />
+    </xs:keyref>
+
   </xs:element>
 
   <xs:complexType name="eOperationControlPoints">
     <xs:sequence>
-      <xs:element name="ocp" type="rail:eOcp" maxOccurs="unbounded" />
+      <xs:element name="ocp" type="rail:eOcp" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:ocp" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -39,13 +216,46 @@
     <xs:complexContent>
       <xs:extension base="rail:tOperationControlPoint">
         <xs:sequence>
-          <xs:element name="propOperational" type="rail:eOcpPropOperational" minOccurs="0" />
-          <xs:element name="propService" type="rail:tOcpPropService" minOccurs="0" />
-          <xs:element name="propEquipment" type="rail:eOcpPropEquipment" minOccurs="0" />
-          <xs:element name="propOther" type="rail:eOcpPropOther" minOccurs="0" />
-          <xs:element name="tsi" type="rail:tOcpTsi" minOccurs="0" />
-          <xs:element name="area" type="rail:tOcpArea" minOccurs="0" />
-          <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0" />
+          <xs:element name="propOperational" type="rail:eOcpPropOperational" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:propOperational" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="propService" type="rail:tOcpPropService" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:propService" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="propEquipment" type="rail:eOcpPropEquipment" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:propEquipment" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="propOther" type="rail:eOcpPropOther" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:propOther" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="tsi" type="rail:tOcpTsi" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:tsi" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="area" type="rail:tOcpArea" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:area" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_ocp" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="designator" type="rail:tDesignator" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:designator" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -55,7 +265,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tOcpPropOperational">
         <xs:sequence>
-          <xs:element name="uptime" type="rail:tOcpUptime" minOccurs="0" maxOccurs="unbounded" />
+          <xs:element name="uptime" type="rail:tOcpUptime" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:uptime" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -77,20 +291,46 @@
 
   <xs:complexType name="eOcpPropEquipment">
     <xs:choice>
-      <xs:element name="summary" type="rail:tOcpPropEquipmentSummary" />
-      <xs:element name="trackRef" type="rail:tTrackRefInGroup" maxOccurs="unbounded" />
+      <xs:element name="summary" type="rail:tOcpPropEquipmentSummary">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:summary" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trackRef" type="rail:tTrackRefInGroup" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackRef_propEquipment" />
+        </xs:annotation>
+      </xs:element>
     </xs:choice>
   </xs:complexType>
 
   <xs:complexType name="eControllers">
     <xs:sequence>
-      <xs:element name="controller" type="rail:tController" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="controller" type="rail:tController" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:controller" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="eSpeedProfiles">
+    <xs:sequence>
+      <xs:element name="speedProfile" type="rail:tSpeedProfile" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:speedProfile" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eInfraAttrGroup">
     <xs:sequence>
-      <xs:element name="infraAttributes" type="rail:eInfraAttr" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="infraAttributes" type="rail:eInfraAttr" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:infraAttributes" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -98,7 +338,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tLocallyControlledArea">
         <xs:sequence>
-          <xs:element name="trackRef" type="rail:tTrackRefInGroup" maxOccurs="unbounded" />
+          <xs:element name="trackRef" type="rail:tTrackRefInGroup" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackRef_locallyControlledArea" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -108,8 +352,16 @@
     <xs:complexContent>
       <xs:extension base="rail:tLine">
         <xs:sequence>
-          <xs:element name="lineDescr" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
-          <xs:element name="trackRef" type="rail:tTrackRefInGroup" maxOccurs="unbounded" />
+          <xs:element name="lineDescr" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:lineDescr" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="trackRef" type="rail:tTrackRefInGroup" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackRef_line" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -117,15 +369,31 @@
 
   <xs:complexType name="eTrackGroups">
     <xs:sequence>
-      <xs:element name="line" type="rail:eLine" minOccurs="0" maxOccurs="unbounded" />
-      <xs:element name="locallyControlledArea" type="rail:eLocallyControlledArea" minOccurs="0" maxOccurs="unbounded" />
-      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="line" type="rail:eLine" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:line" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="locallyControlledArea" type="rail:eLocallyControlledArea" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:locallyControlledArea" />
+        </xs:annotation>
+      </xs:element>
+      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>provide an extension point for non-railML elements in foreign namespace</xs:documentation>
+        </xs:annotation>
+      </xs:any>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eTracks">
     <xs:sequence>
-      <xs:element name="track" type="rail:eTrack" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="track" type="rail:eTrack" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:track" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -133,10 +401,31 @@
     <xs:complexContent>
       <xs:extension base="rail:tTrack">
         <xs:sequence>
-          <xs:element name="trackDescr" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
-          <xs:element name="trackTopology" type="rail:eTrackTopology" />
-          <xs:element name="trackElements" type="rail:eTrackElements" minOccurs="0" />
-          <xs:element name="ocsElements" type="rail:eOcsElements" minOccurs="0" />
+          <xs:element name="trackDescr" type="xs:string" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackDescr" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="trackTopology" type="rail:eTrackTopology">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackTopology" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="trackElements" type="rail:eTrackElements" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackElements" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="ocsElements" type="rail:eOcsElements" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:ocsElements" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="infraAttrGroupRefs" type="rail:eInfraAttrGroupRefs" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:infraAttrGroupRefs" />
+            </xs:annotation>
+          </xs:element>
           <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>Deprecated for next major release, use "generic any element" instead.</xs:documentation>
@@ -149,12 +438,38 @@
 
   <xs:complexType name="eTrackTopology">
     <xs:sequence>
-      <xs:element name="trackBegin" type="rail:eTrackNode" />
-      <xs:element name="trackEnd" type="rail:eTrackNode" />
-      <xs:element name="mileageChanges" type="rail:eMileageChanges" minOccurs="0" />
-      <xs:element name="connections" type="rail:eConnections" minOccurs="0" />
-      <xs:element name="crossSections" type="rail:eCrossSections" minOccurs="0" />
-      <xs:element name="borders" type="rail:eBorder" minOccurs="0" />
+      <xs:element name="trackBegin" type="rail:eTrackBegin">
+        <xs:annotation>
+          <xs:documentation>this node marks the begin of the track defined by its relative position pos=0</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackBegin" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trackEnd" type="rail:eTrackEnd">
+        <xs:annotation>
+          <xs:documentation>this node marks the end of the track defined by its relative position pos=(length of track)</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackEnd" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="mileageChanges" type="rail:eMileageChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:mileageChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="connections" type="rail:eConnections" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:connections" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="crossSections" type="rail:eCrossSections" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:crossSections" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="borders" type="rail:eBorder" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:borders" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -162,20 +477,68 @@
     <xs:complexContent>
       <xs:extension base="rail:tTrackNode">
         <xs:choice>
-          <xs:element name="connection" type="rail:tConnectionData" />
-          <xs:element name="bufferStop" type="rail:tBufferStop" />
-          <xs:element name="openEnd" type="rail:tOpenEnd"></xs:element>
-          <xs:element name="macroscopicNode" type="rail:tMacroscopicNode"></xs:element>
+          <xs:element name="connection" type="rail:tConnectionData">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:connection_trackBegin" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:connection_trackEnd" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="bufferStop" type="rail:tBufferStop">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:bufferStop_trackBegin" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:bufferStop_trackEnd" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="openEnd" type="rail:tOpenEnd">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:openEnd_trackBegin" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:openEnd_trackEnd" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="macroscopicNode" type="rail:tMacroscopicNode">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:macroscopicNode_trackBegin" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:macroscopicNode_trackEnd" />
+            </xs:annotation>
+          </xs:element>
         </xs:choice>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="eTrackBegin">
+    <xs:complexContent>
+      <xs:extension base="rail:eTrackNode">
+        <xs:attribute name="absDir" type="rail:tMileageDirection">
+          <xs:annotation>
+            <xs:documentation>the starting direction of the mileage related to the track</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="eTrackEnd">
+    <xs:complexContent>
+      <xs:extension base="rail:eTrackNode">
+        <xs:attribute name="absPosIn" type="rail:tLengthM">
+          <xs:annotation>
+            <xs:documentation>the mileage of the (incoming) line in meters</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
   <xs:complexType name="eSwitch">
     <xs:complexContent>
       <xs:extension base="rail:tSwitch">
         <xs:sequence>
-          <xs:element name="connection" type="rail:tSwitchConnectionData" maxOccurs="3" />
+          <xs:element name="connection" type="rail:tSwitchConnectionData" maxOccurs="3">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:connection_switch" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -185,7 +548,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tCrossing">
         <xs:sequence>
-          <xs:element name="connection" type="rail:tSwitchConnectionData" maxOccurs="3" />
+          <xs:element name="connection" type="rail:tSwitchConnectionData" maxOccurs="3">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:connection_crossing" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -193,160 +560,376 @@
 
   <xs:complexType name="eMileageChanges">
     <xs:sequence>
-      <xs:element name="mileageChange" type="rail:tMileageChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="mileageChange" type="rail:tMileageChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:mileageChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eConnections">
     <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="switch" type="rail:eSwitch" minOccurs="0" maxOccurs="unbounded" />
-      <xs:element name="crossing" type="rail:eCrossing" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="switch" type="rail:eSwitch" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:switch" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="crossing" type="rail:eCrossing" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:crossing" />
+        </xs:annotation>
+      </xs:element>
     </xs:choice>
   </xs:complexType>
 
   <xs:complexType name="eCrossSections">
     <xs:sequence>
-      <xs:element name="crossSection" type="rail:tCrossSection" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="crossSection" type="rail:tCrossSection" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:crossSection" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eBorder">
     <xs:sequence>
-      <xs:element name="border" type="rail:tBorder" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="border" type="rail:tBorder" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:border" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eTrackElements">
     <xs:sequence>
-      <xs:element name="speedChanges" type="rail:eSpeedChanges" minOccurs="0" />
-      <xs:element name="gradientChanges" type="rail:eGradientChanges" minOccurs="0" />
-      <xs:element name="radiusChanges" type="rail:eRadiusChanges" minOccurs="0" />
-      <xs:element name="tunnels" type="rail:eTunnels" minOccurs="0" />
-      <xs:element name="bridges" type="rail:eBridges" minOccurs="0" />
-      <xs:element name="levelCrossings" type="rail:eLevelCrossings" minOccurs="0" />
-      <xs:element name="ownerChanges" type="rail:eOwnerChanges" minOccurs="0" />
-      <xs:element name="operationModeChanges" type="rail:eOperationModeChanges" minOccurs="0" />
-      <xs:element name="trainProtectionChanges" type="rail:eTrainProtectionChanges" minOccurs="0" />
-      <xs:element name="electrificationChanges" type="rail:eElectrificationChanges" minOccurs="0" />
-      <xs:element name="powerTransmissionChanges" type="rail:ePowerTransmissionChanges" minOccurs="0" />
-      <xs:element name="axleWeightChanges" type="rail:eAxleWeightChanges" minOccurs="0" />
-      <xs:element name="gaugeChanges" type="rail:eGaugeChanges" minOccurs="0" />
-      <xs:element name="geoMappings" type="rail:eGeoMappings" minOccurs="0" />
-      <xs:element name="trackConditions" type="rail:eTrackConditions" minOccurs="0" />
-      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="speedChanges" type="rail:eSpeedChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:speedChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="gradientChanges" type="rail:eGradientChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:gradientChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="radiusChanges" type="rail:eRadiusChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:radiusChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="tunnels" type="rail:eTunnels" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:tunnels" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="bridges" type="rail:eBridges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:bridges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="levelCrossings" type="rail:eLevelCrossings" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:levelCrossings" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ownerChanges" type="rail:eOwnerChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:ownerChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="operationModeChanges" type="rail:eOperationModeChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:operationModeChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trainProtectionChanges" type="rail:eTrainProtectionChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="electrificationChanges" type="rail:eElectrificationChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:electrificationChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="powerTransmissionChanges" type="rail:ePowerTransmissionChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:powerTransmissionChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="axleWeightChanges" type="rail:eAxleWeightChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:axleWeightChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="gaugeChanges" type="rail:eGaugeChanges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:gaugeChanges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="geoMappings" type="rail:eGeoMappings" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoMappings" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trackConditions" type="rail:eTrackConditions" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackConditions" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="platformEdges" type="rail:ePlatformEdges" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:platformEdges" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="serviceSections" type="rail:eServiceSections" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:serviceSections" />
+        </xs:annotation>
+      </xs:element>
+      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>provide an extension point for non-railML elements in foreign namespace</xs:documentation>
+        </xs:annotation>
+      </xs:any>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eSpeedChanges">
     <xs:sequence>
-      <xs:element name="speedChange" type="rail:tSpeedChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="speedChange" type="rail:tSpeedChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:speedChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eGradientChanges">
     <xs:sequence>
-      <xs:element name="gradientChange" type="rail:tGradientChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="gradientChange" type="rail:tGradientChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:gradientChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eRadiusChanges">
     <xs:sequence>
-      <xs:element name="radiusChange" type="rail:tRadiusChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="radiusChange" type="rail:tRadiusChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:radiusChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eTunnels">
     <xs:sequence>
-      <xs:element name="tunnel" type="rail:tTunnel" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="tunnel" type="rail:tTunnel" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:tunnel" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eBridges">
     <xs:sequence>
-      <xs:element name="brigde" type="rail:tBridge" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="brigde" type="rail:tBridge" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:brigde" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eLevelCrossings">
     <xs:sequence>
-      <xs:element name="levelCrossing" type="rail:tLevelCrossing" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="levelCrossing" type="rail:tLevelCrossing" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:levelCrossing" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eOwnerChanges">
     <xs:sequence>
-      <xs:element name="ownerChange" type="rail:tOwnerChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="ownerChange" type="rail:tOwnerChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:ownerChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eOperationModeChanges">
     <xs:sequence>
-      <xs:element name="operationModeChange" type="rail:tOperationModeChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="operationModeChange" type="rail:tOperationModeChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:operationModeChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eTrainProtectionChanges">
     <xs:sequence>
-      <xs:element name="trainProtectionChange" type="rail:tTrainProtectionChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="trainProtectionChange" type="rail:tTrainProtectionChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eElectrificationChanges">
     <xs:sequence>
-      <xs:element name="electrificationChange" type="rail:tElectrificationChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="electrificationChange" type="rail:tElectrificationChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:electrificationChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="ePowerTransmissionChanges">
     <xs:sequence>
-      <xs:element name="powerTransmissionChange" type="rail:tPowerTransmissionChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="powerTransmissionChange" type="rail:tPowerTransmissionChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:powerTransmissionChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eAxleWeightChanges">
     <xs:sequence>
-      <xs:element name="axleWeightChange" type="rail:tAxleWeightChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="axleWeightChange" type="rail:tAxleWeightChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:axleWeightChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eGaugeChanges">
     <xs:sequence>
-      <xs:element name="gaugeChange" type="rail:tGaugeChange" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="gaugeChange" type="rail:tGaugeChange" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:gaugeChange" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eGeoMappings">
     <xs:sequence>
-      <xs:element name="geoMapping" type="rail:tPlacedElement" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="geoMapping" type="rail:tPlacedElement" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoMapping" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eTrackConditions">
     <xs:sequence>
-      <xs:element name="trackCondition" type="rail:tTrackCondition" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="trackCondition" type="rail:tTrackCondition" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackCondition" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="ePlatformEdges">
+    <xs:sequence>
+      <xs:element name="platformEdge" type="rail:tPlatformEdge" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:platformEdge" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="eServiceSections">
+    <xs:sequence>
+      <xs:element name="serviceSection" type="rail:tServiceSection" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:serviceSection" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eOcsElements">
     <xs:sequence>
-      <xs:element name="signals" type="rail:eSignals" minOccurs="0" />
-      <xs:element name="trainDetectionElements" type="rail:eTrainDetectionElements" minOccurs="0" />
-      <xs:element name="balises" type="rail:eBalises" minOccurs="0" />
-      <xs:element name="trainProtectionElements" type="rail:eTrainProtectionElements" minOccurs="0" />
-      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="signals" type="rail:eSignals" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:signals" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trainDetectionElements" type="rail:eTrainDetectionElements" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainDetectionElements" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="balises" type="rail:eBalises" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:balises" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trainProtectionElements" type="rail:eTrainProtectionElements" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionElements" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="stopPosts" type="rail:eStopPosts" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:stopPosts" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="derailers" type="rail:eDerailers" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:derailers" />
+        </xs:annotation>
+      </xs:element>
+      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>provide an extension point for non-railML elements in foreign namespace</xs:documentation>
+        </xs:annotation>
+      </xs:any>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eSignals">
     <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="signal" type="rail:tSignal" />
-      <xs:element name="signalGroups" type="rail:eSignalGroups" />
+      <xs:element name="signal" type="rail:tSignal">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:signal" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="signalGroups" type="rail:eSignalGroups">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:signalGroups" />
+        </xs:annotation>
+      </xs:element>
     </xs:choice>
   </xs:complexType>
 
   <xs:complexType name="eSignalGroups">
     <xs:sequence>
-      <xs:element name="signalGroup" type="rail:eSignalGroup" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="signalGroup" type="rail:eSignalGroup" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:signalGroup" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -354,7 +937,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tSignalGroup">
         <xs:sequence>
-          <xs:element name="signalRef" type="rail:tSignalRefInGroup" minOccurs="0" maxOccurs="unbounded" />
+          <xs:element name="signalRef" type="rail:tSignalRefInGroup" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:signalRef" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -362,27 +949,77 @@
 
   <xs:complexType name="eTrainDetectionElements">
     <xs:choice minOccurs="0" maxOccurs="unbounded">
-      <xs:element name="trainDetector" type="rail:tTrainDetector" />
-      <xs:element name="trackCircuitBorder" type="rail:tTrackCircuitBorder" />
+      <xs:element name="trainDetector" type="rail:tTrainDetector">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainDetector" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trackCircuitBorder" type="rail:tTrackCircuitBorder">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trackCircuitBorder" />
+        </xs:annotation>
+      </xs:element>
     </xs:choice>
   </xs:complexType>
 
   <xs:complexType name="eBalises">
     <xs:sequence>
-      <xs:element name="balise" type="rail:tBalise" maxOccurs="unbounded" />
-      <xs:element name="baliseGroup" type="rail:eBaliseGroup" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="balise" type="rail:tBalise" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:balise" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="baliseGroup" type="rail:tBaliseGroup" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:baliseGroup" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
-  <xs:complexType name="eBaliseGroup">
+  <xs:complexType name="eTrainProtectionElements">
     <xs:sequence>
-      <xs:element name="baliseRef" type="rail:tBaliseRefInGroup" maxOccurs="8" />
+      <xs:element name="trainProtectionElement" type="rail:tTrainProtectionElement" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionElement" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="trainProtectionElementGroup" type="rail:tTrainProtectionElementGroup" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionElementGroup" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
-  <xs:complexType name="eTrainProtectionElements">
+  <xs:complexType name="eStopPosts">
     <xs:sequence>
-      <xs:element name="trainProtectionElement" type="rail:tTrainProtectionElement" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="stopPost" type="rail:tStopPost" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:stopPost" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  
+  <xs:complexType name="eDerailers">
+    <xs:sequence>
+      <xs:element name="derailer" type="rail:tDerailer" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:derailer" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  
+  <xs:complexType name="eInfraAttrGroupRefs">
+    <xs:sequence>
+      <xs:element name="infraAttrGroupRef" type="rail:tElementWithReference" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>sub-element for a reference to an infraAttrGroup</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:infraAttrGroupRef" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -390,16 +1027,56 @@
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndNameWithoutAny">
         <xs:all>
-          <xs:element name="owner" type="rail:tOwner" minOccurs="0" />
-          <xs:element name="operationMode" type="rail:tOperationMode" minOccurs="0" />
-          <xs:element name="trainProtection" type="rail:tTrainProtection" minOccurs="0" />
-          <xs:element name="electrification" type="rail:tElectrification" minOccurs="0" />
-          <xs:element name="powerTransmission" type="rail:tPowerTransmission" minOccurs="0" />
-          <xs:element name="axleWeight" type="rail:tAxleWeight" minOccurs="0" />
-          <xs:element name="gauge" type="rail:tGauge" minOccurs="0" />
-          <xs:element name="speeds" type="rail:eSpeeds" minOccurs="0" />
-          <xs:element name="epsgCode" type="rail:tEpsgCode" minOccurs="0" />
-          <xs:element name="generalInfraAttributes" type="rail:eGeneralInfraAttributes" minOccurs="0" />
+          <xs:element name="owner" type="rail:tOwner" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:owner" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="operationMode" type="rail:tOperationMode" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:operationMode" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="trainProtection" type="rail:tTrainProtection" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtection" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="electrification" type="rail:tElectrification" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:electrification" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="powerTransmission" type="rail:tPowerTransmission" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:powerTransmission" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="axleWeight" type="rail:tAxleWeight" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:axleWeight" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="gauge" type="rail:tGauge" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:gauge" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="speeds" type="rail:eSpeeds" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:speeds" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="epsgCode" type="rail:tEpsgCode" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:epsgCode" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="generalInfraAttributes" type="rail:eGeneralInfraAttributes" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:generalInfraAttributes" />
+            </xs:annotation>
+          </xs:element>
         </xs:all>
       </xs:extension>
     </xs:complexContent>
@@ -407,26 +1084,42 @@
 
   <xs:complexType name="eSpeeds">
     <xs:sequence>
-      <xs:element name="speed" type="rail:tSpeedInfo" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="speed" type="rail:tSpeedInfo" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:speed" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eGeneralInfraAttributes">
     <xs:sequence>
-      <xs:element name="generalInfraAttribute" type="rail:eGeneralInfraAttribute" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="generalInfraAttribute" type="rail:eGeneralInfraAttribute" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:generalInfraAttribute" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eGeneralInfraAttribute">
     <xs:sequence>
-      <xs:element name="attributes" type="rail:eAttributes" minOccurs="0" />
+      <xs:element name="attributes" type="rail:eAttributes" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:attributes" />
+        </xs:annotation>
+      </xs:element>
       <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eAttributes">
     <xs:sequence>
-      <xs:element name="attribute" type="rail:tAttribute" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="attribute" type="rail:tAttribute" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:attribute" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
diff --git a/schema/infrastructureTypes.xsd b/schema/infrastructureTypes.xsd
index 6bb4fbe..3cf8177 100644
--- a/schema/infrastructureTypes.xsd
+++ b/schema/infrastructureTypes.xsd
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of attribute groups, simple and complex types, used by infrastructure sub schema (IS)</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of attribute groups, simple and complex types, used by infrastructure sub schema (IS)</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="railwayUnits.xsd" />
@@ -14,17 +14,105 @@
 
   <xs:import namespace="https://www.w3.org/XML/1998/namespace" schemaLocation="https://www.w3.org/2001/03/xml.xsd" />
 
-  <xs:complexType name="tPlacedElement">
+  <xs:complexType name="tBasePlacedElement">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
         <xs:sequence>
-          <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0" />
+          <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_switch" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_crossing" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_crossSection" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_border" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_speedChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_gradientChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_radiusChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_levelCrossing" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_ownerChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_operationModeChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trainProtectionChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_electrificationChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_powerTransmissionChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_axleWeightChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_gaugeChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_geoMapping" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trackCondition" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_signal" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trainDetector" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trackCircuitBorder" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_balise" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trainProtectionElement" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_tunnel" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_brigde" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_platformEdge" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_serviceSection" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
         <xs:attributeGroup ref="rail:aRelPosition" />
         <xs:attributeGroup ref="rail:aAbsPosition" />
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
+  
+  <xs:complexType name="tPlacedElement">
+    <xs:complexContent>
+      <xs:extension base="rail:tBasePlacedElement">
+        <xs:sequence>
+          <xs:element name="states" type="rail:tStates" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container to define disabled/enabled pieces of infrastructure.</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_switch" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_crossing" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_crossSection" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_border" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_speedChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_gradientChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_radiusChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_levelCrossing" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_ownerChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_operationModeChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_trainProtectionChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_electrificationChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_powerTransmissionChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_axleWeightChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_gaugeChange" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_geoMapping" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_trackCondition" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_signal" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_trainDetector" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_trackCircuitBorder" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_balise" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_trainProtectionElement" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="tPlacedElementWithLength">
+    <xs:complexContent>
+      <xs:extension base="rail:tBasePlacedElement">
+        <xs:sequence>
+          <xs:element name="states" type="rail:tStatesWithLength" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container to define disabled/enabled pieces of infrastructure with length values</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_tunnel" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_brigde" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_platformEdge" />
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_serviceSection" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+        <xs:attribute name="length" type="rail:tLengthM">
+          <xs:annotation>
+            <xs:documentation>length along the track in meters</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
 
   <xs:complexType name="tOrientedElement">
     <xs:complexContent>
@@ -33,6 +121,46 @@
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
+  
+  <xs:complexType name="tOrientedElementWithLength">
+    <xs:complexContent>
+      <xs:extension base="rail:tPlacedElementWithLength">
+        <xs:attributeGroup ref="rail:aOrientation" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tDelimitedOrientedElement">
+    <xs:complexContent>
+      <xs:extension base="rail:tPlacedElement">
+        <xs:attributeGroup ref="rail:aDelimitedOrientation" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="tDelimitedOrientedElementWithLength">
+    <xs:complexContent>
+      <xs:extension base="rail:tPlacedElementWithLength">
+        <xs:attributeGroup ref="rail:aDelimitedOrientation" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tStrictOrientedElement">
+    <xs:complexContent>
+      <xs:extension base="rail:tPlacedElement">
+        <xs:attributeGroup ref="rail:aStrictOrientation" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="tStrictOrientedElementWithLength">
+    <xs:complexContent>
+      <xs:extension base="rail:tPlacedElementWithLength">
+        <xs:attributeGroup ref="rail:aStrictOrientation" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
 
   <xs:complexType name="tGeoCoord">
     <xs:attribute name="coord" type="rail:tCoordinateList" use="required" />
@@ -46,7 +174,27 @@
   </xs:attributeGroup>
 
   <xs:attributeGroup name="aOrientation">
-    <xs:attribute name="dir" type="rail:tLaxDirection" />
+    <xs:attribute name="dir" type="rail:tLaxDirection">
+      <xs:annotation>
+        <xs:documentation>a direction, which allows for all direction attributes</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="aDelimitedOrientation">
+    <xs:attribute name="dir" type="rail:tDelimitedDirection">
+      <xs:annotation>
+        <xs:documentation>a limited direction, which allows only for "up", "down" and "unknown"</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="aStrictOrientation">
+    <xs:attribute name="dir" type="rail:tStrictDirection">
+      <xs:annotation>
+        <xs:documentation>a strict direction, which allows only for "up" and "down"</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:attributeGroup>
 
   <xs:attributeGroup name="aAbsPosition">
@@ -58,10 +206,135 @@
     </xs:attribute>
   </xs:attributeGroup>
 
+  <xs:complexType name="tStates">
+    <xs:sequence>
+      <xs:element name="state" maxOccurs="unbounded" type="rail:tState">
+        <xs:annotation>
+          <xs:documentation>This is to define disabled/enabled infrastructure pieces with a given time frame.</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_switch" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_crossing" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_crossSection" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_border" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_speedChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_gradientChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_radiusChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_levelCrossing" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_ownerChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_operationModeChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_trainProtectionChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_electrificationChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_powerTransmissionChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_axleWeightChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_gaugeChange" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_geoMapping" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_trackCondition" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_signal" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_trainDetector" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_trackCircuitBorder" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_balise" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_trainProtectionElement" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="tState">
+    <xs:sequence>
+      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>provide an extension point for non-railML elements in foreign namespace</xs:documentation>
+        </xs:annotation>
+      </xs:any>
+    </xs:sequence>
+    <xs:attribute name="disabled" type="xs:boolean" use="required">
+      <xs:annotation>
+        <xs:documentation>This attribute is 'true' if the infrastructure piece is somehow disabled.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="operatingPeriodRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>The temporal frame of the 'state' should be defined in the 'timetable' part of the railML file, using the 'operatingPeriod' element.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="remarks" type="rail:tElementDescription">
+      <xs:annotation>
+        <xs:documentation>This is to further explain the 'state' definition.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attributeGroup ref="rail:anyAttribute" />
+  </xs:complexType>
+
+  <xs:complexType name="tStatesWithLength">
+    <xs:sequence>
+      <xs:element name="state" maxOccurs="unbounded" type="rail:tStateWithLength">
+        <xs:annotation>
+          <xs:documentation>This is to define disabled/enabled infrastructure pieces with a given time frame for a certain length.</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_tunnel" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_brigde" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_platformEdge" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_serviceSection" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:state_track" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="tStateWithLength">
+    <xs:complexContent>
+      <xs:extension base="rail:tState">
+        <xs:sequence>
+          <xs:element name="from" type="rail:tLocation" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>starting point where the 'state' takes place, e.g. kilometric position</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:from" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="to" type="rail:tLocation" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>end point where the 'state' takes place, e.g. kilometric position</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:to" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tLocation">
+    <xs:sequence>
+      <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>location described by geographic coordinates</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_from" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_to" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+    <xs:attribute name="ocpRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>location described by the reference to a well-known 'operation or control point' defined in the same railML file</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attributeGroup ref="rail:aRelPosition" />
+    <xs:attributeGroup ref="rail:aAbsPosition" />
+  </xs:complexType>
+
+  <xs:complexType name="tRuleCodeElement">
+    <xs:complexContent>
+      <xs:extension base="rail:tOrientedElement">
+        <xs:attribute name="ruleCode" type="rail:tElementDescription">
+          <xs:annotation>
+            <xs:documentation>Code for this element in the rule book, combination of letters and numbers and space allowed, e.g. Ne5, GA, SFRS/E</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
   <xs:complexType name="tOcpArea">
     <xs:attribute name="name" type="rail:tGenericName" />
     <xs:attribute name="number" type="rail:tPositiveCounter" />
-    <xs:attribute name="zip" type="rail:tPositiveCounter" use="required" />
+    <xs:attribute name="zip" type="xs:string" use="optional" />
   </xs:complexType>
 
   <xs:complexType name="tOcpPropOperational">
@@ -92,6 +365,7 @@
     <xs:attribute name="service" type="xs:boolean" default="false" />
     <xs:attribute name="ship" type="xs:boolean" default="false" />
     <xs:attribute name="bus" type="xs:boolean" default="false" />
+    <xs:attribute name="airport" type="xs:boolean" default="false" />
     <xs:attribute name="tariffpoint" type="xs:boolean" default="false" />
     <xs:attribute name="goodsLoading" type="xs:boolean" default="false" />
     <xs:attribute name="goodsSiding" type="xs:boolean" default="false" />
@@ -151,25 +425,133 @@
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="tDesignator">
+    <xs:attribute name="register" type="xs:string" use="required">
+      <xs:annotation>
+        <xs:documentation>name of the register, e.g. IBNR, DB640, RL100 or DIDOK</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="entry" type="xs:string" use="required">
+      <xs:annotation>
+        <xs:documentation>the OCP's code in the specified register</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attributeGroup ref="rail:aTimePeriod">
+      <xs:annotation>
+        <xs:documentation>the time period when the register is valid</xs:documentation>
+      </xs:annotation>
+    </xs:attributeGroup>
+    <xs:attributeGroup ref="rail:anyAttribute">
+      <xs:annotation>
+        <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+      </xs:annotation>
+    </xs:attributeGroup>
+  </xs:complexType>
+
   <xs:complexType name="tOperationControlPoint">
     <xs:complexContent>
-      <xs:extension base="rail:tElementWithIDAndName">
+      <xs:extension base="rail:tOcpWithIDAndName">
         <xs:attribute name="number" type="xs:string">
           <xs:annotation>
-            <xs:documentation>DEPRECATED: use "generic attribute" 'code' or a foreign 'anyAttribute' instead</xs:documentation>
+            <xs:documentation>DEPRECATED: use the 'designator' with its parameters 'register' and 'entry' instead</xs:documentation>
           </xs:annotation>
         </xs:attribute>
         <xs:attribute name="abbrevation" type="xs:string">
           <xs:annotation>
-            <xs:documentation>DEPRECATED: use "generic attribute" 'code' or a foreign 'anyAttribute' instead</xs:documentation>
+            <xs:documentation>DEPRECATED: use the 'designator' with its parameters 'register' and 'entry' instead</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="timezone" type="rail:tTimeZone"> </xs:attribute>
+        <xs:attribute name="parentOcpRef" type="rail:tGenericRef" use="optional">
+          <xs:annotation>
+            <xs:documentation>references the one and only parent ocp of this ocp</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tOcpWithIDAndName">
+    <xs:annotation>
+      <xs:documentation>generic base type, used for inheritance of many railML types</xs:documentation>
+    </xs:annotation>
+    <xs:complexContent>
+      <xs:extension base="rail:tAdditionalName">
+        <xs:sequence>
+          <xs:element name="additionalName" type="rail:tAdditionalOcpName" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>additional names and its according descriptions to be provided in other languages, dialects, encodings...</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:additionalName_ocp" />
+            </xs:annotation>
+          </xs:element>
+          <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>provide an extension point for non-railML elements in foreign namespace</xs:documentation>
+            </xs:annotation>
+          </xs:any>
+        </xs:sequence>
+        <xs:attribute name="id" type="rail:tGenericID" use="required">
+          <xs:annotation>
+            <xs:documentation>XML-file-wide unique identity is required for later referencing that element</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="code" type="rail:tGenericName">
+          <xs:annotation>
+            <xs:documentation>for typical, specific abbreviations, used in different systems with the same understanding</xs:documentation>
           </xs:annotation>
         </xs:attribute>
-        <xs:attribute name="timezone" type="rail:tTimeZone">
+        <xs:attribute name="type" type="rail:tOcpNameType">
+          <xs:annotation>
+            <xs:documentation>type of the ocp name</xs:documentation>
+          </xs:annotation>
         </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="tAdditionalOcpName">
+    <xs:attribute name="name" type="rail:tGenericName">
+      <xs:annotation>
+        <xs:documentation>should be interpreted in its elements' context (e.g. track/name, vehicle/name)</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="description" type="rail:tElementDescription">
+      <xs:annotation>
+        <xs:documentation>should be interpreted in its elements' context, substantiates the name</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute ref="xml:lang">
+      <xs:annotation>
+        <xs:documentation>natural language identification according to https://www.w3.org/TR/xml/#sec-lang-tag</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="type" type="rail:tOcpNameType">
+      <xs:annotation>
+        <xs:documentation>type of the ocp name</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attributeGroup ref="rail:anyAttribute">
+      <xs:annotation>
+        <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+      </xs:annotation>
+    </xs:attributeGroup>
+  </xs:complexType>
+
+  <xs:simpleType name="tOcpNameType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="operationalName" />
+          <xs:enumeration value="trafficName" />
+          <xs:enumeration value="localName" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
   <xs:simpleType name="tOcpOperationalType">
     <xs:union>
       <xs:simpleType>
@@ -215,7 +597,7 @@
     </xs:attribute>
     <xs:attribute name="type" type="rail:tOcpNameType">
       <xs:annotation>
-        <xs:documentation>Deprecated for next major release, use "any" attribute in element "additionalName" in "ocp" instead</xs:documentation>
+        <xs:documentation>Deprecated for next major release, element "additionalName" in "ocp" provides the same attribute</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute ref="xml:lang">
@@ -225,27 +607,20 @@
     </xs:attribute>
   </xs:complexType>
 
-  <xs:simpleType name="tOcpNameType">
-    <xs:union>
-      <xs:simpleType>
-        <xs:restriction base="xs:string">
-          <xs:enumeration value="operationalName" />
-          <xs:enumeration value="trafficName" />
-          <xs:enumeration value="localName" />
-        </xs:restriction>
-      </xs:simpleType>
-      <xs:simpleType>
-        <xs:restriction base="rail:tOtherEnumerationValue" />
-      </xs:simpleType>
-    </xs:union>
-  </xs:simpleType>
-
   <xs:complexType name="tController">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
         <xs:annotation>
           <xs:documentation>controller element, e.g. interlocking</xs:documentation>
         </xs:annotation>
+        <xs:sequence>
+          <xs:element name="states" type="rail:tStates" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container to define disabled/enabled controllers</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_controller" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
         <!--<xs:attribute name="type" type="xs:string" use="optional" />-->
       </xs:extension>
     </xs:complexContent>
@@ -265,8 +640,17 @@
   </xs:attributeGroup>
 
   <xs:attributeGroup name="aOwner">
-    <xs:attribute name="ownerName" type="xs:string" use="required" />
+    <xs:attribute name="ownerName" type="xs:string" use="optional">
+      <xs:annotation>
+        <xs:documentation>DEPRECATED, use infrastructureManagerRef instead to refer to a listed infrastructureManager</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="uic-no" type="rail:tPositiveCounter" />
+    <xs:attribute name="infrastructureManagerRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>reference to the infrastructure manager entry</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:attributeGroup>
 
   <xs:complexType name="tOwner">
@@ -275,7 +659,7 @@
 
   <xs:complexType name="tOwnerChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aOwner" />
       </xs:extension>
     </xs:complexContent>
@@ -310,7 +694,7 @@
 
   <xs:complexType name="tOperationModeChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aOperationMode" />
       </xs:extension>
     </xs:complexContent>
@@ -327,7 +711,7 @@
 
   <xs:complexType name="tTrainProtectionChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aTrainProtection" />
       </xs:extension>
     </xs:complexContent>
@@ -337,12 +721,36 @@
     <xs:complexContent>
       <xs:extension base="rail:tOrientedElement">
         <xs:attribute name="medium" type="rail:tTrainProtectionMedium" />
-        <xs:attribute name="system" type="xs:string" />
+        <xs:attribute name="system" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>DEPRECATED: use the enumeration parameter trainProtectionSystem instead</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="trainProtectionSystem" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>definition of the national train protection system, which is installed at the track</xs:documentation>
+            <xs:documentation>use value from the separate code definition file 'TrainProtectionSystems.xml'/trainProtectionSystemsAtTrack</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="model" type="xs:string" />
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="tTrainProtectionElementGroup">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName">
+        <xs:sequence>
+          <xs:element name="trainProtectionElementRef" type="rail:tElementWithReference" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionElementRef" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
   <xs:complexType name="tElectrification">
     <xs:attributeGroup ref="rail:aElectrification" />
   </xs:complexType>
@@ -371,7 +779,7 @@
 
   <xs:complexType name="tElectrificationChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aElectrification" />
         <xs:attribute name="vMax" type="rail:tSpeedKmPerHour" />
         <xs:attribute name="isolatedSection" type="xs:boolean" default="false" />
@@ -398,7 +806,7 @@
 
   <xs:complexType name="tGaugeChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aGauge" />
       </xs:extension>
     </xs:complexContent>
@@ -430,7 +838,7 @@
 
   <xs:complexType name="tPowerTransmissionChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aPowerTransmission" />
       </xs:extension>
     </xs:complexContent>
@@ -447,7 +855,7 @@
 
   <xs:complexType name="tAxleWeightChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aAxleWeight" />
       </xs:extension>
     </xs:complexContent>
@@ -463,6 +871,13 @@
   <xs:complexType name="tMileageChange">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
+        <xs:sequence>
+          <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_mileageChange" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
         <xs:attribute name="absPosIn" type="rail:tLengthM" use="required" />
         <xs:attribute name="absPosInOffset" type="rail:tLengthM" use="optional">
           <xs:annotation>
@@ -472,7 +887,16 @@
         <xs:attribute name="type" type="rail:tMileageChangeDescr" use="required" />
         <xs:attribute name="absPos" type="rail:tLengthM" use="required" />
         <xs:attribute name="pos" type="rail:tLengthM" use="required" />
-        <xs:attribute name="dir" type="rail:tDelimitedDirection" />
+        <xs:attribute name="absDir" type="rail:tMileageDirection">
+          <xs:annotation>
+            <xs:documentation>defining a change direction for the mileageChange with values "raising" or "falling"</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dir" type="rail:tStrictDirection">
+          <xs:annotation>
+            <xs:documentation>DEPRECATED: use the new attribute absDir instead to define the mileage's change direction</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
@@ -517,6 +941,11 @@
         <xs:attribute name="model" type="xs:string" />
         <xs:attribute name="length" type="rail:tLengthM" />
         <xs:attributeGroup ref="rail:aOcpRef" />
+        <xs:attributeGroup ref="rail:anyAttribute">
+          <xs:annotation>
+            <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+          </xs:annotation>
+        </xs:attributeGroup>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
@@ -577,9 +1006,21 @@
   <xs:complexType name="tTrack">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
+        <xs:sequence>
+          <xs:element name="states" type="rail:tStatesWithLength" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container to define disabled/enabled pieces of a track</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_track" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
         <xs:attribute name="type" type="rail:tTrackType" />
         <xs:attribute name="mainDir" type="rail:tExtendedDirection" />
-        <xs:attribute name="infraAttrGroupRef" type="rail:tGenericRef" />
+        <xs:attribute name="infraAttrGroupRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>DEPRECATED: use sub-element infraAttrGroupRef instead.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
@@ -602,7 +1043,20 @@
   <xs:complexType name="tLine">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
+        <xs:sequence>
+          <xs:element name="states" type="rail:tStates" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container to define disabled/enabled lines</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_line" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
         <xs:attribute name="type" type="rail:tLineType" />
+        <xs:attribute name="infrastructureManagerRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to the infrastructure manager entry</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
@@ -610,6 +1064,14 @@
   <xs:complexType name="tLocallyControlledArea">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
+        <xs:sequence>
+          <xs:element name="states" type="rail:tStates" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container to define disabled/enabled locally controlled areas</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:states_locallyControlledArea" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
         <xs:attribute name="ocpRef" type="rail:tGenericRef">
           <xs:annotation>
             <xs:documentation>DEPRECATED: use attribute 'ocpStationRef' or 'controllerRef' instead</xs:documentation>
@@ -621,6 +1083,14 @@
   </xs:complexType>
 
   <xs:complexType name="tTrackNode">
+    <xs:sequence>
+      <xs:element name="geoCoord" type="rail:tGeoCoord" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trackBegin" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:geoCoord_trackEnd" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
     <xs:attribute name="id" type="rail:tGenericID" use="required" />
     <xs:attributeGroup ref="rail:aRelPosition" />
     <xs:attributeGroup ref="rail:aAbsPosition" />
@@ -700,10 +1170,19 @@
 
   <xs:complexType name="tCrossSection">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tPlacedElement">
         <xs:attribute name="type" type="rail:tCrossSectionBlockType" />
         <xs:attribute name="ocpRef" type="rail:tGenericRef" use="required" />
-        <xs:attribute name="ocpTrackID" type="xs:unsignedByte" />
+        <xs:attribute name="ocpTrackID" type="xs:unsignedByte">
+          <xs:annotation>
+            <xs:documentation>DEPRECATED since it is not needed anymore (for defining platforms, please use the platform element instead)</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="dir" type="rail:tLaxDirection">
+          <xs:annotation>
+            <xs:documentation>DEPRECATED since it is not needed here.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
@@ -727,33 +1206,186 @@
 
   <xs:complexType name="tBorder">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tDelimitedOrientedElement">
         <xs:attribute name="type" type="rail:tBorderType" use="required" />
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
-  <xs:attributeGroup name="aSpeed">
-    <xs:attribute name="trainCategory" type="rail:tTrainCategory" />
-    <xs:attribute name="status" type="xs:string" />
-    <xs:attribute name="vMax" type="rail:tSpeedKmPerHour" use="required" />
-  </xs:attributeGroup>
-
-  <xs:complexType name="tSpeedInfo">
-    <xs:attributeGroup ref="rail:aSpeed" />
+  <xs:complexType name="tBraking">
+    <xs:annotation>
+      <xs:documentation>parameters describing the train braking configuration</xs:documentation>
+    </xs:annotation>
+    <xs:attributeGroup ref="rail:aMinBasicBrakeAttributes" />
+    <xs:attribute name="minimumBrakePercentage" type="rail:tBrakePercentage">
+      <xs:annotation>
+        <xs:documentation>minimum brake percentage of the train</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:complexType>
 
+  <xs:attributeGroup name="aSpeed">
+    <xs:attribute name="trainCategory" type="rail:tTrainCategory">
+      <xs:annotation>
+        <xs:documentation>DEPRECATED. Use the new attribute etcsTrainCategory instead.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="etcsTrainCategory" type="rail:tEtcsTrainCategory">
+      <xs:annotation>
+        <xs:documentation>the international train category number as specified on page 38 in ERA_ERTMS_040001 "Assignment of values to ETCS variables" v1.9 from 10/07/12</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="profileRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>reference to a speedProfile</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="status" type="xs:string" />
+    <xs:attribute name="vMax" type="rail:tSpeedKmPerHour" use="required">
+      <xs:annotation>
+        <xs:documentation>maximum allowed speed in km/h</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:complexType name="tSpeedInfo">
+    <xs:attributeGroup ref="rail:aSpeed" />
+  </xs:complexType>
+
+  <xs:simpleType name="tInfluence">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="increasing" />
+          <xs:enumeration value="decreasing" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
+  <xs:complexType name="tOcpRefInGroup">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementRefInGroup">
+        <!-- Possible ocpGroup-specific attributes to be added here later -->
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tPath">
+    <xs:sequence>
+      <xs:element name="ocpRef" type="rail:tOcpRefInGroup" minOccurs="2" maxOccurs="2">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/IS:ocpRef" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="tSpeedProfile">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName">
+        <xs:annotation>
+          <xs:documentation>speed profile element that is referenced by speedChange elements</xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+          <xs:element name="tilting" type="rail:tTilting" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>the tilting element contains parameters describing the required train tilting characteristics</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:tilting" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="braking" type="rail:tBraking" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>the braking element contains parameters describing the required train braking configuration</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:braking" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="path" type="rail:tPath" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>the path element indicates a train run between two neighbouring OCPs</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:path" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+        <xs:attribute name="influence" type="rail:tInfluence" use="required">
+          <xs:annotation>
+            <xs:documentation>allows for overlaying speed profiles</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxAxleLoad" type="rail:tWeightTons">
+          <xs:annotation>
+            <xs:documentation>maximum axle load of the train in tons</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maxMeterLoad" type="rail:tMeterloadTonsPerMeter">
+          <xs:annotation>
+            <xs:documentation>maximum meter load of the train in tons per meter</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="operatingPeriodRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to an operatingPeriod element from the timetable sub-schema</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="trainProtectionSystem" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>defining the train protection system</xs:documentation>
+            <xs:documentation>use value from the separate code definition file 'TrainProtectionSystems.xml'/trainProtectionSystemsAtTrack</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="verbalConstraint" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>defining additional verbal constraints like certain train types</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:simpleType name="tTrainRelation">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="headOfTrain" />
+          <xs:enumeration value="midOfTrain" />
+          <xs:enumeration value="endOfTrain" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
   <xs:complexType name="tSpeedChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attributeGroup ref="rail:aSpeed" />
+        <xs:attribute name="trainRelation" type="rail:tTrainRelation">
+          <xs:annotation>
+            <xs:documentation>Reference to the part of the train from where on the speed change is valid. Normally, a speed restriction that is higher than the train's current speed will be valid when the end of the train has passed the speed change while a speed restriction that is lower than the train's current speed will be valid already when the head of train passes the speedChange. Only define this attribute if your train relation differs from this default value.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="mandatoryStop" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>specifying the speedChange as a mandatory stop point, e.g. in front of a level crossing</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="signalised" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>indicates whether the speed aspect is shown next to the track by a signal or panel (true) or only in the "driver's timetable" (false)</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="tGradientChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attribute name="slope" type="rail:tGradientPromille" use="required" />
         <xs:attribute name="transitionLenght" type="rail:tLengthM" />
         <xs:attribute name="transitionRadius" type="rail:tRadiusM" />
@@ -763,7 +1395,7 @@
 
   <xs:complexType name="tLevelCrossing">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tDelimitedOrientedElement">
         <xs:attribute name="length" type="rail:tLengthM" default="0.000" />
         <xs:attribute name="angle" type="rail:tAngleDegQuadrant" default="90" />
         <xs:attribute name="protection" type="xs:string" default="none" />
@@ -790,8 +1422,7 @@
 
   <xs:complexType name="tTunnel">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
-        <xs:attribute name="length" type="rail:tLengthM" />
+      <xs:extension base="rail:tDelimitedOrientedElementWithLength">
         <xs:attribute name="crossSection" type="rail:tLengthM" />
         <xs:attribute name="kind" type="rail:tTunnelType" />
       </xs:extension>
@@ -800,7 +1431,7 @@
 
   <xs:complexType name="tRadiusChange">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tStrictOrientedElement">
         <xs:attribute name="radius" type="rail:tRadiusM" use="required" />
         <xs:attribute name="superelevation" type="rail:tLengthMM" />
       </xs:extension>
@@ -809,8 +1440,7 @@
 
   <xs:complexType name="tBridge">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
-        <xs:attribute name="length" type="rail:tLengthM" />
+      <xs:extension base="rail:tDelimitedOrientedElementWithLength">
         <xs:attribute name="kind" type="xs:string" />
         <xs:attribute name="meterload" type="rail:tMeterloadTonsPerMeter" />
       </xs:extension>
@@ -819,7 +1449,7 @@
 
   <xs:complexType name="tTrackCondition">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tDelimitedOrientedElement">
         <xs:attribute name="length" type="rail:tLengthM" />
         <xs:attribute name="type" type="rail:tTrackConditionType" />
       </xs:extension>
@@ -845,16 +1475,347 @@
       </xs:simpleType>
     </xs:union>
   </xs:simpleType>
+  
+  <xs:complexType name="tBaseServiceSection">
+    <xs:complexContent>
+      <xs:extension base="rail:tStrictOrientedElementWithLength">
+        <xs:attribute name="height" type="rail:tLengthMM">
+          <xs:annotation>
+            <xs:documentation>height above the rails in millimeters</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="side" type="rail:tSide">
+          <xs:annotation>
+            <xs:documentation>side as seen from the oriented track, e.g. left or right</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ocpRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to the OCP, where the platform edge / service section belongs to</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attributeGroup ref="rail:anyAttribute" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tPlatformEdge">
+    <xs:complexContent>
+      <xs:extension base="rail:tBaseServiceSection">
+        <xs:attribute name="parentPlatformEdgeRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a parent platform edge for grouping platform edge parts together</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:simpleType name="tSide">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="left">
+        <xs:annotation>
+          <xs:documentation>left side, regarding the relative direction of the track from trackBegin to trackEnd</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="right">
+        <xs:annotation>
+          <xs:documentation>right side, regarding the relative direction of the track from trackBegin to trackEnd</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="tServiceSection">
+    <xs:complexContent>
+      <xs:extension base="rail:tBaseServiceSection">
+        <xs:attribute name="parentServiceSectionRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a parent service section for grouping service section parts together</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ramp" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being a ramp</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="maintenance" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being a maintenance area</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="loadingFacility" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being equipped with loading facilities</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="cleaning" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being a cleaning area</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="fueling" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being a fueling area</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="parking" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being a parking area</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="preheating" type="xs:boolean">
+          <xs:annotation>
+            <xs:documentation>defining the service section as being a preheating area</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
 
   <xs:complexType name="tSignal">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tRuleCodeElement">
+        <xs:sequence>
+          <xs:element name="speed" type="rail:tSignalSpeed" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a speed signal or panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:speed_signal" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="etcs" type="rail:tSignalEtcs" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining an ETCS panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:etcs" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="levelCrossing" type="rail:tSignalLevelCrossing" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a level crossing signal or panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:levelCrossing_signal" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="trainRadio" type="rail:tSignalTrainRadio" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a train radio signal or panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainRadio" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="catenary" type="rail:tSignalCatenary" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a catenary signal or panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:catenary" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="line" type="rail:tSignalLine" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a line signal or panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:line_signal" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="milepost" type="rail:tSignalMilepost" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a mileage signpost</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:milepost" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="braking" type="rail:tSignalBraking" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>sub-element for defining a braking signal or panel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:braking" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="trainProtectionElementGroupRef" type="rail:tElementWithReference" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>sub-element for a reference to a trainProtectionElementGroup, which is connected to the signal's aspect</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:trainProtectionElementGroupRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="baliseGroupRef" type="rail:tElementWithReference" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>sub-element for a reference to a baliseGroup, which is connected to the signal's aspect</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:baliseGroupRef" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
         <xs:attributeGroup ref="rail:aSignal" />
         <xs:attributeGroup ref="rail:aOcpRef" />
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="tSignalBase">
+    <xs:attribute name="switchable" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>defining the signal to be switchable or fixed (panel)</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attributeGroup ref="rail:anyAttribute">
+      <xs:annotation>
+        <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+      </xs:annotation>
+    </xs:attributeGroup>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalSpeed">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:sequence>
+          <xs:element name="speedChangeRef" type="rail:tElementWithReference" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>reference to a speed change</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:speedChangeRef" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+        <xs:attribute name="kind" type="rail:tSignalKind">
+          <xs:annotation>
+            <xs:documentation>speed signal/panel kind (announcement, execution)</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="trainRelation" type="rail:tTrainRelation">
+          <xs:annotation>
+            <xs:documentation>Reference to the part of the train from where on the signal is valid.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalEtcs">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attributeGroup ref="rail:aETCS">
+          <xs:annotation>
+            <xs:documentation>ETCS level (1, 2, 3, ...)</xs:documentation>
+          </xs:annotation>
+        </xs:attributeGroup>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalLevelCrossing">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attribute name="type" type="rail:tLevelCrossingSignalType">
+          <xs:annotation>
+            <xs:documentation>level crossing signal type (bell, whistle, announcing, activating)</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="ref" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a level crossing</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:simpleType name="tLevelCrossingSignalType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="bell" />
+          <xs:enumeration value="whistle" />
+          <xs:enumeration value="announcing" />
+          <xs:enumeration value="activating" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
+  <xs:complexType name="tSignalTrainRadio">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attribute name="trackConditionRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a trackCondition element</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalCatenary">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attribute name="trackConditionRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a trackCondition element</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalLine">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attribute name="ref" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a line</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalMilepost">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attribute name="shownValue" type="rail:tLength">
+          <xs:annotation>
+            <xs:documentation>mileage value printed on the milepost</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="shownRemark" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>any remark that is printed on the milepost, e.g. for documenting a mileage gap</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="mileageChangeRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a mileageChange element</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="lineRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a line, for which the milepost is valid</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tSignalBraking">
+    <xs:complexContent>
+      <xs:extension base="rail:tSignalBase">
+        <xs:attribute name="trackConditionRef" type="rail:tGenericRef">
+          <xs:annotation>
+            <xs:documentation>reference to a trackCondition element</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:simpleType name="tSignalKind">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="announcement" />
+          <xs:enumeration value="execution" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
   <xs:simpleType name="tSignalType">
     <xs:union>
       <xs:simpleType>
@@ -893,7 +1854,11 @@
     <xs:attribute name="type" type="rail:tSignalType" />
     <xs:attribute name="function" type="rail:tSignalFunction" />
     <xs:attribute name="sigSystem" type="xs:string" />
-    <xs:attribute name="switchable" type="xs:boolean" />
+    <xs:attribute name="switchable" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>DEPRECATED: use attribute 'switchable' in sub-elements instead</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="maskableRoute" type="xs:boolean" />
     <xs:attribute name="maskableATC" type="xs:boolean" />
     <xs:attribute name="virtual" type="xs:boolean" default="false" />
@@ -957,12 +1922,45 @@
     <xs:complexContent>
       <xs:extension base="rail:tOrientedElement">
         <xs:attributeGroup ref="rail:aBalise" />
-        <xs:attribute name="ndx" type="rail:tPIG">
+        <xs:attribute name="ndx" type="rail:tPIG"> </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tBaliseGroup">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName">
+        <xs:sequence>
+          <xs:element name="baliseRef" type="rail:tBaliseRefInGroup" maxOccurs="8">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:baliseRef" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+        <xs:attribute name="type" type="rail:tBaliseGroupType">
+          <xs:annotation>
+            <xs:documentation>functional type of the balise group</xs:documentation>
+          </xs:annotation>
         </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:simpleType name="tBaliseGroupType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="infill" />
+          <xs:enumeration value="signal" />
+          <xs:enumeration value="fixed" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
   <xs:complexType name="tBaliseRefInGroup">
     <xs:complexContent>
       <xs:extension base="rail:tElementRefInGroup">
@@ -1062,7 +2060,7 @@
 
   <xs:complexType name="tTrainDetector">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tDelimitedOrientedElement">
         <xs:attribute name="detectionObject" type="rail:tDetectionObject" />
         <xs:attribute name="medium" type="rail:tDetectorMedium" />
         <xs:attribute name="posInTrack" type="rail:tPosInTrack" />
@@ -1085,13 +2083,149 @@
 
   <xs:complexType name="tTrackCircuitBorder">
     <xs:complexContent>
-      <xs:extension base="rail:tOrientedElement">
+      <xs:extension base="rail:tDelimitedOrientedElement">
         <xs:attribute name="insulatedRail" type="rail:tInsulatedRailSide" />
         <xs:attributeGroup ref="rail:aOcpRef" />
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="tStopPost">
+    <xs:complexContent>
+      <xs:extension base="rail:tRuleCodeElement">
+        <xs:sequence>
+          <xs:element name="validForMovements" type="rail:tValidForMovements" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>specification of the train types for which the stop post is relevant</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:validForMovements" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="signalRef" type="rail:tElementWithReference" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>reference to a (main) signal that is valid for a train waiting at the stop post</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/IS:signalRef_stopPost" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+        <xs:attributeGroup ref="rail:aStopPost" />
+        <xs:attributeGroup ref="rail:anyAttribute">
+          <xs:annotation>
+            <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+          </xs:annotation>
+        </xs:attributeGroup>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:complexType name="tDerailer">
+    <xs:complexContent>
+      <xs:extension base="rail:tRuleCodeElement">
+        <xs:attribute name="derailSide" type="rail:tSide">
+          <xs:annotation>
+            <xs:documentation>Side, to which the vehicle will be derailed (left or right) considering the orientation of the track.</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="kind" type="rail:tDerailKind">
+          <xs:annotation>
+            <xs:documentation>kind of derail device (cp. book "Railway Signalling and Interlocking" by Gregor Theeg and Sergej Vlasenko (Editors), p. 155)</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="model" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>specification of the derailer</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+  
+  <xs:simpleType name="tDerailKind">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="blockDerail">
+        <xs:annotation>
+          <xs:documentation>see book "Railway Signalling and Interlocking", p. 155</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="singleCatchPoints">
+        <xs:annotation>
+          <xs:documentation>see book "Railway Signalling and Interlocking", p. 155</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="doubleCatchPoints">
+        <xs:annotation>
+          <xs:documentation>see book "Railway Signalling and Interlocking", p. 155</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="tValidForMovements">
+    <xs:attribute name="kind" type="rail:tTrainMovements">
+      <xs:annotation>
+        <xs:documentation>specification of the train types</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+
+  <xs:attributeGroup name="aStopPost">
+    <xs:attribute name="trainRelation" type="rail:tTrainRelation">
+      <xs:annotation>
+        <xs:documentation>Reference to the part of the train from where on the stop post is valid. Normally, a stop post relates to the head of the train.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="platformEdgeRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>reference to a platform edge for which the stop post is relevant</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="trainLength" type="rail:tLengthM">
+      <xs:annotation>
+        <xs:documentation>set this value if the stop post is only valid for trains with a certain train length</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="axleCount" type="rail:tPositiveCounter">
+      <xs:annotation>
+        <xs:documentation>set this value if the stop post is only valid for trains with a certain number of axles</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="wagonCount" type="rail:tPositiveCounter">
+      <xs:annotation>
+        <xs:documentation>set this value if the stop post is only valid for trains with a certain number of wagons</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="verbalConstraints" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>set this value if the stop post is only valid for trains fulfilling a certain verbal constraint</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="virtual" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>marks a stop post being virtual if there is no physical representation along the track</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="ocpRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>reference to an OCP, which the stop post belongs to</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:simpleType name="tTrainMovements">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="freightTrains" />
+          <xs:enumeration value="passengerTrains" />
+          <xs:enumeration value="allTrains" />
+          <xs:enumeration value="shunting" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
   <xs:complexType name="tInfrastructure">
     <xs:complexContent>
       <xs:extension base="rail:tGlobalElementWithMetadata">
diff --git a/schema/physicalUnits.xsd b/schema/physicalUnits.xsd
index 4927969..5faf186 100644
--- a/schema/physicalUnits.xsd
+++ b/schema/physicalUnits.xsd
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of simple types, which represent general units of measure, used by all sub schemas</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of simple types, which represent general units of measure, used by all sub schemas</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="genericRailML.xsd" />
diff --git a/schema/railML.xsd b/schema/railML.xsd
index 08c218c..94cc257 100644
--- a/schema/railML.xsd
+++ b/schema/railML.xsd
@@ -1,31 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:dc="https://purl.org/dc/elements/1.1/" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:dc="https://purl.org/dc/elements/1.1/" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of root element "railml", refers to elements of all sub schemas from "xs:include" paths</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of root element "railml", refers to elements of all sub schemas from "xs:include" paths</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="infrastructure.xsd" />
   <xs:include schemaLocation="rollingstock.xsd" />
   <xs:include schemaLocation="timetable.xsd" />
 
-  <xs:import namespace="https://purl.org/dc/elements/1.1/" schemaLocation="https://dublincore.org/schemas/xmls/qdc/2008/02/11/dc.xsd">
-    <xs:annotation>
-      <xs:documentation>Portions of this software may use XML schemas Copyright (c) 2009 DCMI, the Dublin Core Metadata Initiative. These are licensed under the Creative Commons 3.0 Attribution license.</xs:documentation>
-      <xs:documentation>For further information see: https://dublincore.org/ License link: https://creativecommons.org/licenses/by/3.0/</xs:documentation>
-    </xs:annotation>
-  </xs:import>
-
   <xs:element name="railml">
     <xs:complexType>
+      <xs:annotation>
+        <xs:documentation source="https://wiki2.railml.org/wiki/CO:railml" />
+      </xs:annotation>
       <xs:sequence>
-        <xs:element name="metadata" type="dc:elementContainer" minOccurs="0">
+        <xs:element name="metadata" type="rail:tMetadata" minOccurs="0">
           <xs:annotation>
-            <xs:documentation>flexible collection of Dublin Core metadata based on xs:any according to https://dublincore.org/</xs:documentation>
+            <xs:documentation source="https://wiki2.railml.org/wiki/CO:metadata" />
           </xs:annotation>
         </xs:element>
         <xs:element ref="rail:infrastructure" minOccurs="0">
@@ -56,23 +52,269 @@
       </xs:attribute>
     </xs:complexType>
 
+    <!-- infrastructureManager identity in metadata -->
+    <xs:key name="infrastructureManagerKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:infrastructureManager" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- infrastructureManager reference in infrastructure subschema -->
+    <xs:keyref name="infrastructureManager-ownerKeyref" refer="rail:infrastructureManagerKey">
+      <xs:selector xpath=".//rail:infraAttributes/rail:owner" />
+      <xs:field xpath="@infrastructureManagerRef" />
+    </xs:keyref>
+    <xs:keyref name="infrastructureManager-ownerChangeKeyref" refer="rail:infrastructureManagerKey">
+      <xs:selector xpath=".//rail:ownerChange" />
+      <xs:field xpath="@infrastructureManagerRef" />
+    </xs:keyref>
+    <xs:keyref name="infrastructureManager-lineKeyref" refer="rail:infrastructureManagerKey">
+      <xs:selector xpath=".//rail:line" />
+      <xs:field xpath="@infrastructureManagerRef" />
+    </xs:keyref>
+
+    <!-- vehicleManufacturer identity in metadata -->
+    <xs:key name="vehicleManufacturerKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:vehicleManufacturer" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- vehicleManufacturer reference in rollingstock subschema -->
+    <xs:keyref name="vehicleManufacturer-manufacturerKeyref" refer="rail:vehicleManufacturerKey">
+      <xs:selector xpath=".//rail:classification/rail:manufacturer" />
+      <xs:field xpath="@vehicleManufacturerRef" />
+    </xs:keyref>
+
+    <!-- vehicleOperator identity in metadata -->
+    <xs:key name="vehicleOperatorKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:vehicleOperator" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- vehicleOperator reference in rollingstock subschema -->
+    <xs:keyref name="vehicleOperator-operatorKeyref" refer="rail:vehicleOperatorKey">
+      <xs:selector xpath=".//rail:classification/rail:operator" />
+      <xs:field xpath="@vehicleOperatorRef" />
+    </xs:keyref>
+
+    <!-- customer identity in metadata -->
+    <xs:key name="customerKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:customer" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- customer reference in timetable subschema -->
+    <xs:keyref name="customer-customerKeyref" refer="rail:customerKey">
+      <xs:selector xpath=".//rail:organizationalUnitBinding/rail:customer" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- railwayUndertaking identity in metadata -->
+    <xs:key name="railwayUndertakingKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:railwayUndertaking" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- railwayUndertaking reference in timetable subschema -->
+    <xs:keyref name="railwayUndertaking-railwayUndertakingKeyref" refer="rail:railwayUndertakingKey">
+      <xs:selector xpath=".//rail:organizationalUnitBinding/rail:railwayUndertaking" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- operationalUndertaking identity in metadata -->
+    <xs:key name="operationalUndertakingKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:operationalUndertaking" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- operationalUndertaking reference in timetable subschema -->
+    <xs:keyref name="operationalUndertaking-operationalUndertakingKeyref" refer="rail:operationalUndertakingKey">
+      <xs:selector xpath=".//rail:organizationalUnitBinding/rail:operationalUndertaking" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- concessionaire identity in metadata -->
+    <xs:key name="concessionaireKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:concessionaire" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- concessionaire reference in timetable subschema -->
+    <xs:keyref name="concessionaire-concessionaireKeyref" refer="rail:concessionaireKey">
+      <xs:selector xpath=".//rail:organizationalUnitBinding/rail:concessionaire" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- contractor identity in metadata -->
+    <xs:key name="contractorKey">
+      <xs:selector xpath=".//rail:organizationalUnits/rail:contractor" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- contractor reference in timetable subschema -->
+    <xs:keyref name="contractor-contractorKeyref" refer="rail:contractorKey">
+      <xs:selector xpath=".//rail:organizationalUnitBinding/rail:contractor" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- ocp idendity in infrastructure subschema -->
+    <xs:key name="ocpKey">
+      <xs:selector xpath=".//rail:operationControlPoints/rail:ocp" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- ocp reference in infrastructure subschema -->
+    <xs:keyref name="ocp-macroscopicNodeKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:macroscopicNode" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-switchKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:switch" />
+      <xs:field xpath="@ocpStationRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-crossSectionKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:crossSections/rail:crossSection" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-levelCrossingKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:levelCrossings/rail:levelCrossing" />
+      <xs:field xpath="@ocpStationRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-signalKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:signals/rail:signal" />
+      <xs:field xpath="@ocpStationRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-trainDetectorKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:trainDetectionElements/rail:trainDetector" />
+      <xs:field xpath="@ocpStationRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-trackCircuitBorderKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:trainDetectionElements/rail:trackCircuitBorder" />
+      <xs:field xpath="@ocpStationRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-platformEdgeKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:platformEdges/rail:platformEdge" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-serviceSectionKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:serviceSections/rail:serviceSection" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-stopPostKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:stopPosts/rail:stopPost" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-locallyControlledAreaKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:trackGroups/rail:locallyControlledArea" />
+      <xs:field xpath="@ocpStationRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-stateKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:states/rail:state/rail:*" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-signal-signalBoxKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:signals/rail:signal" />
+      <xs:field xpath="@signalBoxOcpRef" />
+      <!-- Deprecated -->
+    </xs:keyref>
+    <xs:keyref name="ocp-signal-stationKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:signals/rail:signal" />
+      <xs:field xpath="@stationOcpRef" />
+      <!-- Deprecated -->
+    </xs:keyref>
+    <xs:keyref name="ocp-locallyControlledArea-shortKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:trackGroups/rail:locallyControlledArea" />
+      <xs:field xpath="@ocpRef" />
+      <!-- Deprecated -->
+    </xs:keyref>
+
+    <!-- ocp reference in timetable subschema -->
+    <xs:keyref name="ocp-ocpTTKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:ocpsTT/rail:ocpTT" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-connectionKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:ocpTT/rail:connections/rail:connection" />
+      <xs:field xpath="@ocpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-blockPartStartKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:blockParts/rail:blockPart" />
+      <xs:field xpath="@startOcpRef" />
+    </xs:keyref>
+    <xs:keyref name="ocp-blockPartEndKeyref" refer="rail:ocpKey">
+      <xs:selector xpath=".//rail:blockParts/rail:blockPart" />
+      <xs:field xpath="@endOcpRef" />
+    </xs:keyref>
+
+    <!-- track idendity in infrastructure subschema -->
+    <xs:key name="trackKey">
+      <xs:selector xpath=".//rail:tracks/rail:track" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- track reference in infrastructure subschema -->
+    <xs:keyref name="track-lineKeyref" refer="rail:trackKey">
+      <xs:selector xpath=".//rail:trackGroups/rail:line/rail:trackRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="track-locallyControlledAreaKeyref" refer="rail:trackKey">
+      <xs:selector xpath=".//rail:trackGroups/rail:locallyControlledArea/rail:trackRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="track-ocpKeyref" refer="rail:trackKey">
+      <xs:selector xpath=".//rail:operationControlPoints/rail:ocp/rail:propEquipment/rail:trackRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- track reference in timetable subschema -->
+    <xs:keyref name="track-ocpTTKeyref" refer="rail:trackKey">
+      <xs:selector xpath=".//rail:ocpsTT/rail:ocpTT" />
+      <xs:field xpath="@trackRef" />
+    </xs:keyref>
+    <xs:keyref name="track-sectionTTKeyref" refer="rail:trackKey">
+      <xs:selector xpath=".//rail:ocpTT/rail:sectionTT/rail:trackRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- line idendity in infrastructure subschema -->
+    <xs:key name="lineKey">
+      <xs:selector xpath=".//rail:trackGroups/rail:line" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- line reference in infrastructure subschema -->
+    <xs:keyref name="line-signalLineKeyref" refer="rail:lineKey">
+      <xs:selector xpath=".//rail:signal/rail:line" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="line-signalMilepostKeyref" refer="rail:lineKey">
+      <xs:selector xpath=".//rail:signal/rail:milepost" />
+      <xs:field xpath="@lineRef" />
+    </xs:keyref>
+
+    <!-- line reference in timetable subschema -->
+    <xs:keyref name="line-sectionTTKeyref" refer="rail:lineKey">
+      <xs:selector xpath=".//rail:ocpTT/rail:sectionTT" />
+      <xs:field xpath="@lineRef" />
+    </xs:keyref>
+
+    <!-- vehicle idendity in rollingstock subschema -->
     <xs:key name="vehicleKey">
       <xs:selector xpath=".//rail:vehicles/rail:vehicle" />
       <xs:field xpath="@id" />
     </xs:key>
 
     <!-- vehicle reference in rollingstock subschema -->
-    <xs:keyref name="vehicle-vehicleFamilyRefKey" refer="rail:vehicleKey">
+    <xs:keyref name="vehicle-vehicleFamilyKeyref" refer="rail:vehicleKey">
       <xs:selector xpath=".//rail:vehicles/rail:vehicle" />
       <xs:field xpath="@vehicleFamilyRef" />
     </xs:keyref>
-    <xs:keyref name="vehicle-vehicleRefKey" refer="rail:vehicleKey">
-      <xs:selector xpath=".//rail:formations/rail:formation/rail:trainOrder/rail:vehicleRef" />
+    <xs:keyref name="vehicle-trainOrderKeyref" refer="rail:vehicleKey">
+      <xs:selector xpath=".//rail:trainOrder/rail:vehicleRef" />
       <xs:field xpath="@vehicleRef" />
     </xs:keyref>
 
     <!-- vehicle reference in timetable subschema -->
-    <xs:keyref name="vehicle-formationTTKeyref" refer="rail:vehicleKey">
+    <xs:keyref name="vehicle-bookingKeyref" refer="rail:vehicleKey">
       <xs:selector xpath=".//rail:reservationInfo/rail:booking" />
       <xs:field xpath="@vehicleRef" />
     </xs:keyref>
@@ -85,6 +327,7 @@
       <xs:field xpath="@vehicleRef" />
     </xs:keyref>
 
+    <!-- formation idendity in rollingstock subschema -->
     <xs:key name="formationKey">
       <xs:selector xpath=".//rail:formations/rail:formation" />
       <xs:field xpath="@id" />
@@ -104,6 +347,134 @@
       <xs:field xpath="@formationRef" />
     </xs:keyref>
 
+    <!-- category idendity in timetable subschema -->
+    <xs:key name="categoryKey">
+      <xs:selector xpath=".//rail:categories/rail:category" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- category reference in timetable subschema -->
+    <xs:keyref name="category-trainPartKeyref" refer="rail:categoryKey">
+      <xs:selector xpath=".//rail:trainParts/rail:trainPart" />
+      <xs:field xpath="@categoryRef" />
+    </xs:keyref>
+    <xs:keyref name="category-trainPartSequenceKeyref" refer="rail:categoryKey">
+      <xs:selector xpath=".//rail:trains/rail:train/rail:trainPartSequence" />
+      <xs:field xpath="@categoryRef" />
+    </xs:keyref>
+
+    <!-- category reference in rollingstock subschema -->
+    <xs:keyref name="category-formationKeyref" refer="rail:categoryKey">
+      <xs:selector xpath=".//rail:formations/rail:formation/rail:categoryRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- speed profile idendity in infrastructure subschema -->
+    <xs:key name="speedProfileKey">
+      <xs:selector xpath=".//rail:speedProfiles/rail:speedProfile" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- speed profile reference in timetable subschema -->
+    <xs:keyref name="speedProfile-trainPartSequenceKeyref" refer="rail:speedProfileKey">
+      <xs:selector xpath=".//rail:trainPartSequence/rail:speedProfileRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- stop post idendity in infrastructure subschema -->
+    <xs:key name="stopPostKey">
+      <xs:selector xpath=".//rail:stopPosts/rail:stopPost" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- stop post reference in timetable subschema -->
+    <xs:keyref name="stopPost-stopDescriptionKeyref" refer="rail:stopPostKey">
+      <xs:selector xpath=".//rail:ocpsTT/rail:ocpTT/rail:stopDescription" />
+      <xs:field xpath="@stopPostRef" />
+    </xs:keyref>
+
+    <!-- platform edge identity in infrastructure subschema -->
+    <xs:key name="platformEdgeKey">
+      <xs:selector xpath=".//rail:platformEdges/rail:platformEdge" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- platform edge reference in infrastructure subschema -->
+    <xs:keyref name="platformEdge-platformEdgeKeyref" refer="rail:platformEdgeKey">
+      <xs:selector xpath=".//rail:platformEdges/rail:platformEdge" />
+      <xs:field xpath="@parentPlatformEdgeRef" />
+    </xs:keyref>
+    <xs:keyref name="platformEdge-stopPostKeyref" refer="rail:platformEdgeKey">
+      <xs:selector xpath=".//rail:stopPosts/rail:stopPost" />
+      <xs:field xpath="@platformEdgeRef" />
+    </xs:keyref>
+
+    <!-- platform edge reference in timetable subschema -->
+    <xs:keyref name="platformEdge-stopDescriptionKeyref" refer="rail:platformEdgeKey">
+      <xs:selector xpath=".//rail:stopDescription/rail:platformEdgeRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- service section identity in infrastructure subschema -->
+    <xs:key name="serviceSectionKey">
+      <xs:selector xpath=".//rail:serviceSections/rail:serviceSection" />
+      <xs:field xpath="@id" />
+    </xs:key>
+    
+    <!-- service section reference in infrastructure subschema -->
+    <xs:keyref name="serviceSection-serviceSectionKeyref" refer="rail:serviceSectionKey">
+      <xs:selector xpath=".//rail:serviceSections/rail:serviceSection" />
+      <xs:field xpath="@parentServiceSectionRef" />
+    </xs:keyref>
+
+    <!-- service section reference in timetable subschema -->
+    <xs:keyref name="serviceSection-stopDescriptionKeyref" refer="rail:serviceSectionKey">
+      <xs:selector xpath=".//rail:stopDescription/rail:serviceSectionRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
+    <!-- operating period identity in timetable subschema -->
+    <xs:key name="operatingPeriodKey">
+      <xs:selector xpath=".//rail:operatingPeriods/rail:operatingPeriod" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- operating period reference in timetable subschema -->
+    <xs:keyref name="operatingPeriod-trainPartKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:trainParts/rail:trainPart/rail:operatingPeriodRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="operatingPeriod-stopDescriptionKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:ocpsTT/rail:ocpTT/rail:stopDescription" />
+      <xs:field xpath="@operatingPeriodRef" />
+    </xs:keyref>
+    <xs:keyref name="operatingPeriod-blockPartKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:blockParts/rail:blockPart" />
+      <xs:field xpath="@operatingPeriodRef" />
+    </xs:keyref>
+    <xs:keyref name="operatingPeriod-circulationKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:circulations/rail:circulation" />
+      <xs:field xpath="@operatingPeriodRef" />
+    </xs:keyref>
+    <xs:keyref name="operatingPeriod-circulationNextKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:circulations/rail:circulation" />
+      <xs:field xpath="@nextOperatingPeriodRef" />
+    </xs:keyref>
+    <xs:keyref name="operatingPeriod-annotationKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:annotationRef" />
+      <xs:field xpath="@operatingPeriodRef" />
+    </xs:keyref>
+
+    <!-- operating period reference in infrastructure subschema -->
+    <xs:keyref name="operatingPeriod-stateKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:states/rail:state" />
+      <xs:field xpath="@operatingPeriodRef" />
+    </xs:keyref>
+    <xs:keyref name="operatingPeriod-speedProfileKeyref" refer="rail:operatingPeriodKey">
+      <xs:selector xpath=".//rail:speedProfiles/rail:speedProfile" />
+      <xs:field xpath="@operatingPeriodRef" />
+    </xs:keyref>
+
   </xs:element>
 
 </xs:schema>
diff --git a/schema/railwayBaseTypes.xsd b/schema/railwayBaseTypes.xsd
index fa094b8..5ed0fb5 100644
--- a/schema/railwayBaseTypes.xsd
+++ b/schema/railwayBaseTypes.xsd
@@ -1,17 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:dc="https://purl.org/dc/elements/1.1/" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of attribute groups, simple and complex types, used by more than one sub schema</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of attribute groups, simple and complex types, used by more than one sub schema</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="genericRailML.xsd" />
   <xs:include schemaLocation="railwayUnits.xsd" />
 
+  <xs:import namespace="https://purl.org/dc/elements/1.1/" schemaLocation="https://dublincore.org/schemas/xmls/qdc/2008/02/11/dc.xsd">
+    <xs:annotation>
+      <xs:documentation>Portions of this software may use XML schemas Copyright (c) 2009 DCMI, the Dublin Core Metadata Initiative. These are licensed under the Creative Commons 3.0 Attribution license.</xs:documentation>
+      <xs:documentation>For further information see: https://dublincore.org/ License link: https://creativecommons.org/licenses/by/3.0/</xs:documentation>
+    </xs:annotation>
+  </xs:import>
+
   <xs:complexType name="tTimeSpan">
     <xs:annotation>
       <xs:documentation>generic type for time spans/periods in required context</xs:documentation>
@@ -46,11 +53,15 @@
   <xs:complexType name="tBasicBrakeType">
     <xs:annotation>
       <xs:documentation>settings and characteristic of a particular brake type or brake application position</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicleBrake" />
     </xs:annotation>
     <xs:sequence>
-      <xs:element name="auxiliaryBrakes" minOccurs="0">
+      <xs:element name="auxiliaryBrakes" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>provides access to the list of possible auxiliary brake systems</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:auxiliaryBrakes_vehicleBrake" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:auxiliaryBrakes_trainBrakes" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:auxiliaryBrakes" />
         </xs:annotation>
         <xs:complexType>
           <xs:attributeGroup ref="rail:aAuxiliaryBrakes" />
@@ -60,7 +71,7 @@
     <xs:attributeGroup ref="rail:aBasicBrakeAttributes" />
   </xs:complexType>
 
-  <xs:attributeGroup name="aBasicBrakeAttributes">
+  <xs:attributeGroup name="aMinBasicBrakeAttributes">
     <xs:attribute name="brakeType" type="rail:tBrakeType" use="required">
       <xs:annotation>
         <xs:documentation>vacuum or compressed air brake, hand brake, parking brake, cable brake</xs:documentation>
@@ -71,6 +82,10 @@
         <xs:documentation>base brake switch, one of G, P or R</xs:documentation>
       </xs:annotation>
     </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:attributeGroup name="aBasicBrakeAttributes">
+    <xs:attributeGroup ref="rail:aMinBasicBrakeAttributes" />
     <xs:attribute name="regularBrakeMass" type="rail:tWeightTons">
       <xs:annotation>
         <xs:documentation>brake mass for normal brake operations of none-automatic brakes</xs:documentation>
@@ -161,7 +176,7 @@
     <xs:attribute name="brakeUse" type="rail:tBrakeUse" />
     <xs:attribute name="H" type="xs:boolean">
       <xs:annotation>
-        <xs:documentation>de: hydrodynamisch</xs:documentation>
+        <xs:documentation>de: hydro-dynamisch</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="E" type="xs:boolean">
@@ -252,11 +267,13 @@
       <xs:element name="places" type="rail:tPlaces" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>list of place capacity of the vehicle divided by particular categories</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:places" />
         </xs:annotation>
       </xs:element>
       <xs:element name="service" type="rail:tService" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>description of any additional service provided per vehicle</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:service_passenger" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
@@ -265,6 +282,7 @@
   <xs:complexType name="tPlaces">
     <xs:annotation>
       <xs:documentation>description of any places of the passenger car(part)</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:places" />
     </xs:annotation>
     <xs:attributeGroup ref="rail:aPlaces" />
   </xs:complexType>
@@ -292,6 +310,14 @@
           <xs:enumeration value="couchette" />
           <xs:enumeration value="bed" />
           <xs:enumeration value="chair" />
+          <xs:enumeration value="bistro" />
+          <xs:enumeration value="restaurant" />
+          <xs:enumeration value="foldingSeat" />
+          <xs:enumeration value="impairedToilet" />
+          <xs:enumeration value="toilet" />
+          <xs:enumeration value="businessCompartment" />
+          <xs:enumeration value="familyCompartment" />
+          <xs:enumeration value="toddlerCompartment" />
         </xs:restriction>
       </xs:simpleType>
       <xs:simpleType>
@@ -303,6 +329,7 @@
   <xs:complexType name="tService">
     <xs:annotation>
       <xs:documentation>description of any service provided by the passenger car(part)</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:service" />
     </xs:annotation>
     <xs:attributeGroup ref="rail:aService" />
   </xs:complexType>
@@ -320,72 +347,19 @@
         <xs:documentation>generic decimal value for additional information of the service, meaning should be clarified by its "description"</xs:documentation>
       </xs:annotation>
     </xs:attribute>
+    <xs:attribute name="type" type="rail:tServiceType" />
     <xs:attributeGroup ref="rail:anyAttribute" />
   </xs:attributeGroup>
 
-  <xs:simpleType name="tNationalSystemsType">
+  <xs:simpleType name="tServiceType">
     <xs:annotation>
-      <xs:documentation>list of common european train control/protection systems</xs:documentation>
+      <xs:documentation>list of common service types</xs:documentation>
     </xs:annotation>
     <xs:union>
       <xs:simpleType>
         <xs:restriction base="xs:string">
-          <xs:enumeration value="ALSEN" />
-          <xs:enumeration value="ALSN" />
-          <xs:enumeration value="ASFA" />
-          <xs:enumeration value="ATB" />
-          <xs:enumeration value="ATBEG" />
-          <xs:enumeration value="ATBEN" />
-          <xs:enumeration value="ATC" />
-          <xs:enumeration value="ATSP" />
-          <xs:enumeration value="ATSS" />
-          <xs:enumeration value="AWS" />
-          <xs:enumeration value="BACC" />
-          <xs:enumeration value="CIR-ELKE" />
-          <xs:enumeration value="CIR-ELKE2" />
-          <xs:enumeration value="Crocodile" />
-          <xs:enumeration value="CSS" />
-          <xs:enumeration value="DATC" />
-          <xs:enumeration value="EBICAB" />
-          <xs:enumeration value="EVM120" />
-          <xs:enumeration value="EVM160" />
-          <xs:enumeration value="Fahrsp" />
-          <xs:enumeration value="GWATP" />
-          <xs:enumeration value="Indusi54" />
-          <xs:enumeration value="Indusi60" />
-          <xs:enumeration value="Indusi60R" />
-          <xs:enumeration value="Integra-Signum" />
-          <xs:enumeration value="KHP" />
-          <xs:enumeration value="KLUBU" />
-          <xs:enumeration value="KVB" />
-          <xs:enumeration value="LS" />
-          <xs:enumeration value="LS90" />
-          <xs:enumeration value="LZB" />
-          <xs:enumeration value="Memor" />
-          <xs:enumeration value="Memor2" />
-          <xs:enumeration value="Mirel" />
-          <xs:enumeration value="PZ80" />
-          <xs:enumeration value="PZB90" />
-          <xs:enumeration value="RS4c" />
-          <xs:enumeration value="SAUTC" />
-          <xs:enumeration value="SAUTCM" />
-          <xs:enumeration value="SAUTU" />
-          <xs:enumeration value="SCMT" />
-          <xs:enumeration value="SELCAB" />
-          <xs:enumeration value="SHP" />
-          <xs:enumeration value="SSC" />
-          <xs:enumeration value="TBL" />
-          <xs:enumeration value="TPWS" />
-          <xs:enumeration value="TVM300" />
-          <xs:enumeration value="TVM430" />
-          <xs:enumeration value="ZSI127" />
-          <xs:enumeration value="ZSI90" />
-          <xs:enumeration value="ZSL90" />
-          <xs:enumeration value="ZST90" />
-          <xs:enumeration value="ZUB121" />
-          <xs:enumeration value="ZUB122" />
-          <xs:enumeration value="ZUB123" />
-          <xs:enumeration value="ZUB262" />
+          <xs:enumeration value="mobileCatering" />
+          <xs:enumeration value="WLAN" />
         </xs:restriction>
       </xs:simpleType>
       <xs:simpleType>
@@ -425,4 +399,200 @@
     </xs:union>
   </xs:simpleType>
 
+  <xs:complexType name="tTilting">
+    <xs:annotation>
+      <xs:documentation>data for tilting mechanism of passenger cars</xs:documentation>
+    </xs:annotation>
+    <xs:attributeGroup ref="rail:aTilting" />
+  </xs:complexType>
+
+  <xs:attributeGroup name="aTilting">
+    <xs:attribute name="maxTiltingAngle" type="rail:tAngleDegQuadrant">
+      <xs:annotation>
+        <xs:documentation>maximum tilting angle in degrees</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="actuation" type="rail:tTiltingActuationType">
+      <xs:annotation>
+        <xs:documentation>way of actuating the car body tilting (active/passive)</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="tiltingSpeed" type="rail:tSpeedDegreesPerSecond">
+      <xs:annotation>
+        <xs:documentation>speed of changing the tilting angle in degrees per second</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:simpleType name="tTiltingActuationType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="none" />
+      <xs:enumeration value="active" />
+      <xs:enumeration value="passive" />
+      <xs:enumeration value="rollCompensation" />
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:attributeGroup name="aETCS">
+    <xs:attribute name="srsVersion" type="rail:tVersionNumber">
+      <xs:annotation>
+        <xs:documentation>Version of ETCS language (SRS edition) installed</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="level_0" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>on-board unit supports level 0</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="level_1" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>on-board unit supports level 1</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="level_2" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>on-board unit supports level 2</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="level_3" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>on-board unit supports level 3</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
+  <xs:complexType name="tMetadata">
+    <xs:complexContent>
+      <xs:extension base="dc:elementContainer">
+        <xs:annotation>
+          <xs:documentation>flexible collection of Dublin Core metadata based on xs:any according to https://dublincore.org/</xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+          <xs:element name="organizationalUnits" type="rail:tOrganizationalUnits" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation>Container element for various company definitions regarding the railway service of this file</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/CO:organizationalUnits" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tOrganizationalUnits">
+    <xs:sequence>
+      <xs:element name="infrastructureManager" type="rail:tInfrastructureManager" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>de: Infrastrukturbetreiber</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:infrastructureManager" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="vehicleManufacturer" type="rail:tVehicleManufacturer" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>de: Fahrzeughersteller</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:vehicleManufacturer" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="vehicleOperator" type="rail:tVehicleOperator" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>Some kind of subcontractor (railway undertaking) that operates the vehicle, if different from the one that is responsible for the commercial service</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:vehicleOperator" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="customer" type="rail:tCustomer" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>The authority or enterprise that ordered the transportation service, i.e., an integrated transit system</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:customer" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="railwayUndertaking" type="rail:tRailwayUndertaking" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>The undertaking that is commercially responsible for the service</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:railwayUndertaking" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="operationalUndertaking" type="rail:tOperationalUndertaking" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>The unit that is responsible for the operational planning of this service</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:operationalUndertaking" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="concessionaire" type="rail:tConcessionaire" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>de: Konzessionsinhaber</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:concessionaire" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="contractor" type="rail:tContractor" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>Any unit or undertaking that has a binding not defined in a neighbouring element</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/CO:contractor" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="tInfrastructureManager">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName">
+        <xs:annotation>
+          <xs:documentation>use the separated infrastructureManagerCode list for the 'code' attribute</xs:documentation>
+        </xs:annotation>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tVehicleManufacturer">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tVehicleOperator">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tCustomer">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tRailwayUndertaking">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tOperationalUndertaking">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tConcessionaire">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tContractor">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName">
+        <xs:attribute name="role" type="rail:tGenericName">
+          <xs:annotation>
+            <xs:documentation>characterizes the kind of work that has to be fulfilled with the contract, e.g. catering, cleaning</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="subLevel" type="rail:tCounter">
+          <xs:annotation>
+            <xs:documentation>the level of sub-contract, if appropriate, starting with zero for direct contracts</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
 </xs:schema>
diff --git a/schema/railwayUnits.xsd b/schema/railwayUnits.xsd
index a5f199c..4918f7b 100644
--- a/schema/railwayUnits.xsd
+++ b/schema/railwayUnits.xsd
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of simple types, which represent railway specific units of measure and enumeration lists, used by all sub schemas</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of simple types, which represent railway specific units of measure and enumeration lists, used by all sub schemas</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="physicalUnits.xsd" />
@@ -63,6 +63,16 @@
     </xs:restriction>
   </xs:simpleType>
 
+  <xs:simpleType name="tStrictDirection">
+    <xs:annotation>
+      <xs:documentation>generic type for even more constrained direction statements as optional attributes</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="rail:tLaxDirection">
+      <xs:enumeration value="up" />
+      <xs:enumeration value="down" />
+    </xs:restriction>
+  </xs:simpleType>
+
   <xs:simpleType name="tFlowDirection">
     <xs:annotation>
       <xs:documentation>extensible generic type for flow statements</xs:documentation>
@@ -82,13 +92,33 @@
     </xs:union>
   </xs:simpleType>
 
+  <xs:simpleType name="tMileageDirection">
+    <xs:annotation>
+      <xs:documentation>generic type for mileage direction statements</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="raising" />
+      <xs:enumeration value="falling" />
+    </xs:restriction>
+  </xs:simpleType>
+
   <xs:simpleType name="tTrainCategory">
     <xs:annotation>
-      <xs:documentation>generic type for category names of trains; allowing digits, letters and whitespaces; length not limited</xs:documentation>
+      <xs:documentation>generic type for category names of trains; allowing digits, letters and white spaces; length not limited</xs:documentation>
     </xs:annotation>
     <xs:restriction base="xs:string" />
   </xs:simpleType>
 
+  <xs:simpleType name="tEtcsTrainCategory">
+    <xs:annotation>
+      <xs:documentation>the international train category number as specified on page 38 in ERA_ERTMS_040001 "Assignment of values to ETCS variables" v1.9 from 10/07/12</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:integer">
+      <xs:minInclusive value="0" />
+      <xs:maxInclusive value="15" />
+    </xs:restriction>
+  </xs:simpleType>
+
   <xs:simpleType name="tTrainAlignment">
     <xs:annotation>
       <xs:documentation>generic type for the alignment of a train relative to some objective in the used context</xs:documentation>
diff --git a/schema/rollingstock.xsd b/schema/rollingstock.xsd
index 45f172e..40d7368 100644
--- a/schema/rollingstock.xsd
+++ b/schema/rollingstock.xsd
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of elements (partially hidden as complex type) for rollingstock sub schema (RS), uses rollingstock types and attribute groups from "xs:include" path</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of elements (partially hidden as complex type) for rollingstock sub schema (RS), uses rollingstock types and attribute groups from "xs:include" path</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="rollingstockTypes.xsd" />
@@ -14,6 +14,7 @@
     <xs:complexType>
       <xs:annotation>
         <xs:documentation>container for rolling stock data of single vehicles and train formations</xs:documentation>
+        <xs:documentation source="https://wiki2.railml.org/wiki/RS:rollingstock" />
       </xs:annotation>
       <xs:complexContent>
         <xs:extension base="rail:tRollingstock">
@@ -21,11 +22,13 @@
             <xs:element name="vehicles" type="rail:eVehicles" minOccurs="0">
               <xs:annotation>
                 <xs:documentation>container for single vehicle data or vehicle family data</xs:documentation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicles" />
               </xs:annotation>
             </xs:element>
             <xs:element name="formations" type="rail:eFormations" minOccurs="0">
               <xs:annotation>
                 <xs:documentation>container for complete train formations or sets of vehicles</xs:documentation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/RS:formations" />
               </xs:annotation>
             </xs:element>
           </xs:sequence>
@@ -47,6 +50,10 @@
       <xs:selector xpath=".//rail:vehicles/rail:vehicle/rail:engine/rail:monitoring/rail:nationalSystem" />
       <xs:field xpath="@id" />
     </xs:key>
+    <xs:keyref name="nationalSystem-specificTransmissionModuleKeyref" refer="rail:nationalSystemKey">
+      <xs:selector xpath=".//rail:etcs/rail:specificTransmissionModule" />
+      <xs:field xpath="@nationalSystemRef" />
+    </xs:keyref>
 
     <xs:key name="trainRadioKey">
       <xs:selector xpath=".//rail:vehicles/rail:vehicle/rail:engine/rail:monitoring/rail:trainRadio" />
@@ -75,6 +82,7 @@
       <xs:element name="vehicle" type="rail:eVehicle" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>data related to single vehicle or vehicle family</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicle" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
@@ -87,31 +95,37 @@
           <xs:element name="classification" type="rail:eClassification" minOccurs="0">
             <xs:annotation>
               <xs:documentation>general management and classification data of vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:classification" />
             </xs:annotation>
           </xs:element>
           <xs:element name="engine" type="rail:eEngine" minOccurs="0">
             <xs:annotation>
               <xs:documentation>engine data about a motor car or locomotive</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:engine" />
             </xs:annotation>
           </xs:element>
           <xs:element name="wagon" type="rail:eWagon" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical and payload data about a (motor) car or locomotive</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:wagon" />
             </xs:annotation>
           </xs:element>
           <xs:element name="vehicleBrakes" type="rail:eVehicleBrakes" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data about brake systems independent from propulsion</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicleBrakes" />
             </xs:annotation>
           </xs:element>
           <xs:element name="loadLimitMatrix" type="rail:eLoadLimitMatrix" minOccurs="0">
             <xs:annotation>
               <xs:documentation>matrix of permissible speed, line classification and payload</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:loadLimitMatrix" />
             </xs:annotation>
           </xs:element>
           <xs:element name="curvingLimitation" type="rail:eCurvingLimitation" minOccurs="0">
             <xs:annotation>
               <xs:documentation>list of permissible curve radius in horizontal and vertical direction</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:curvingLimitation" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -124,11 +138,13 @@
       <xs:element name="manufacturer" type="rail:tManufacturer" minOccurs="0">
         <xs:annotation>
           <xs:documentation>manufacturer data related to the vehicle</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:manufacturer" />
         </xs:annotation>
       </xs:element>
       <xs:element name="operator" type="rail:tOperator" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>general operator specific vehicle data</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:operator" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
@@ -137,6 +153,7 @@
   <xs:complexType name="eEngine">
     <xs:annotation>
       <xs:documentation>engine data about a motor car or locomotive, may be used in conjunction with 'wagon'</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:engine" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tEngine">
@@ -144,21 +161,25 @@
           <xs:element name="propulsion" type="rail:ePropulsion" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>technical data about the propulsion system of a vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:propulsion" />
             </xs:annotation>
           </xs:element>
           <xs:element name="pantograph" type="rail:ePantograph" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>technical data about the installed pantographs of a vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:pantograph" />
             </xs:annotation>
           </xs:element>
           <xs:element name="energyStorage" type="rail:eStorage" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>technical data about the installed energy storage devices of a vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:energyStorage" />
             </xs:annotation>
           </xs:element>
           <xs:element name="monitoring" type="rail:eMonitoring" minOccurs="0">
             <xs:annotation>
               <xs:documentation>types of signalling systems fitted to the vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:monitoring" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -169,6 +190,7 @@
   <xs:complexType name="ePantograph">
     <xs:annotation>
       <xs:documentation>technical data about the installed pantographs of a vehicle</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:pantograph" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tPantograph">
@@ -176,6 +198,7 @@
           <xs:element name="dedicatedSupplySystem" type="rail:tElectrificationSystem" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>technical data of the supply system the pantograph is used for</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:dedicatedSupplySystem_pantograph" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -190,6 +213,7 @@
           <xs:element name="efficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>detailed efficiency of energy storage device</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:efficiency_energyStorage" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -200,6 +224,7 @@
   <xs:complexType name="ePropulsion">
     <xs:annotation>
       <xs:documentation>technical data about the propulsion system of a vehicle</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:propulsion" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tPropulsion">
@@ -207,86 +232,103 @@
           <xs:element name="transformer" type="rail:eTransformer" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical data of main transformer</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:transformer" />
             </xs:annotation>
           </xs:element>
           <xs:element name="fourQuadrantChopper" type="rail:eFourQuadrantChopper" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical data of inverter between OHL/transformer and link circuit</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:fourQuadrantChopper" />
             </xs:annotation>
           </xs:element>
           <xs:element name="link" type="rail:tLink" minOccurs="0">
             <xs:annotation>
               <xs:documentation>nominal values of link circuit between input inverter and motor inverter</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:link" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tractionInverter" type="rail:eTractionInverter" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical data of inverter between link circuit and motors</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tractionInverter" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tractionMotor" type="rail:eTractionMotor" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical data of traction motor</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tractionMotor" />
             </xs:annotation>
           </xs:element>
           <xs:element name="diesel" type="rail:tDieselEngine" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical data of diesel engine</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:diesel" />
             </xs:annotation>
           </xs:element>
           <xs:element name="gear" type="rail:eGear" minOccurs="0">
             <xs:annotation>
               <xs:documentation>technical data of transmission system between motor and wheel</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:gear" />
             </xs:annotation>
           </xs:element>
           <xs:element name="auxiliarySupply" type="rail:eAuxiliarySupply" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>technical data of auxiliary systems (supply and consumption)</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:auxiliarySupply" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tractiveEffort" type="rail:tEffortCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>mechanical tractive effort at wheel vs. speed by propulsion system</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tractiveEffort" />
             </xs:annotation>
           </xs:element>
           <xs:element name="brakeEffort" type="rail:tEffortCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>mechanical brake effort at wheel vs. speed by propulsion system</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:brakeEffort" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tractiveCurrent" type="rail:tCurrentCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>net current of the entire propulsion system as curve vs. speed for traction mode</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tractiveCurrent" />
             </xs:annotation>
           </xs:element>
           <xs:element name="brakeCurrent" type="rail:tCurrentCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>net current of the entire propulsion system as curve vs. speed for braking mode</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:brakeCurrent" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tractiveCurrentLimitation" type="rail:tCurrentLimitation" minOccurs="0">
             <xs:annotation>
               <xs:documentation>limitation curve of net current of the entire propulsion system vs. net voltage for traction mode</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tractiveCurrentLimitation" />
             </xs:annotation>
           </xs:element>
           <xs:element name="brakeCurrentLimitation" type="rail:tCurrentLimitation" minOccurs="0">
             <xs:annotation>
               <xs:documentation>limitation curve of net current of the entire propulsion system vs. net voltage for braking mode</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:brakeCurrentLimitation" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tractiveVehicleEfficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>efficiency of the entire propulsion system as curve vs. speed or effort for traction mode</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tractiveVehicleEfficiency" />
             </xs:annotation>
           </xs:element>
           <xs:element name="brakeVehicleEfficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>efficiency of the entire propulsion system as curve vs. speed or effort for braking mode</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:brakeVehicleEfficiency" />
             </xs:annotation>
           </xs:element>
           <xs:element name="rackTraction" type="rail:tRackTractionType" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data about rack traction equipment of the vehicle used for propulsion</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:rackTraction_propulsion" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -301,11 +343,13 @@
           <xs:element name="winding" type="rail:tWinding" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>nominal values of each transformer winding</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:winding" />
             </xs:annotation>
           </xs:element>
           <xs:element name="efficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>transformer efficiency vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:efficiency_transformer" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -320,11 +364,13 @@
           <xs:element name="efficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>four-quadrant-chopper efficiency vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:efficiency_fourQuadratChopper" />
             </xs:annotation>
           </xs:element>
           <xs:element name="phi" type="rail:tCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>phase angle of the real power to the apparent power as curve for the entire propulsion system</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:phi" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -339,11 +385,13 @@
           <xs:element name="efficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>traction inverter efficiency vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:efficiency_tractionInverter" />
             </xs:annotation>
           </xs:element>
           <xs:element name="pulsePattern" type="rail:ePulsePattern" minOccurs="0">
             <xs:annotation>
-              <xs:documentation>puls pattern of the traction inverter</xs:documentation>
+              <xs:documentation>pulse pattern of the traction inverter</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:pulsePattern" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -356,6 +404,7 @@
       <xs:element name="valueTable">
         <xs:annotation>
           <xs:documentation>table of values vs. arbitrary variable</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_pulsePattern" />
         </xs:annotation>
         <xs:complexType>
           <xs:complexContent>
@@ -373,11 +422,13 @@
           <xs:element name="efficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>traction motor efficiency vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:efficiency_tractionMotor" />
             </xs:annotation>
           </xs:element>
           <xs:element name="mechanicalLosses" type="rail:tLosses" minOccurs="0">
             <xs:annotation>
               <xs:documentation>traction motor mechanical losses vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:mechanicalLosses" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -392,6 +443,7 @@
           <xs:element name="efficiency" type="rail:tEfficiencyCurve" minOccurs="0">
             <xs:annotation>
               <xs:documentation>transmission efficiency vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:efficiency_gear" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -406,6 +458,7 @@
           <xs:element name="dedicatedSupplySystem" type="rail:tAuxiliarySupplySystem" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>list of available supply systems for auxiliaries</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:dedicatedSupplySystem_auxiliarySupply" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -420,21 +473,25 @@
           <xs:element name="etcs" type="rail:eETCS" minOccurs="0">
             <xs:annotation>
               <xs:documentation>capabilities with respect to European Train Control System</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:etcs" />
             </xs:annotation>
           </xs:element>
           <xs:element name="nationalSystem" type="rail:tNationalSystem" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>list of installed national train protection/control systems</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:nationalSystem" />
             </xs:annotation>
           </xs:element>
           <xs:element name="trainRadio" type="rail:eTrainRadio" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>list of installed train radio systems for communication</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:trainRadio" />
             </xs:annotation>
           </xs:element>
           <xs:element name="otherEquipment" type="rail:tOtherEquipment" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>list of other (non-safety) installed train equipment</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:otherEquipment" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -445,6 +502,7 @@
   <xs:complexType name="eETCS">
     <xs:annotation>
       <xs:documentation>data about installed ETCS system</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:etcs" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tETCS">
@@ -452,6 +510,7 @@
           <xs:element name="specificTransmissionModule" type="rail:tSpecificTransmissionModule" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data for special transmission modules of ETCS equipment</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:specificTransmissionModule" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -462,6 +521,7 @@
   <xs:complexType name="eTrainRadio">
     <xs:annotation>
       <xs:documentation>train radio</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:trainRadio" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tTrainRadio">
@@ -469,6 +529,7 @@
           <xs:element name="radioSystem" type="rail:tRadioSystem" minOccurs="0">
             <xs:annotation>
               <xs:documentation>list of available radio systems for communication like 'GSM-R'</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:radioSystem" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -479,6 +540,7 @@
   <xs:complexType name="eWagon">
     <xs:annotation>
       <xs:documentation>data about the car body of a vehicle and its payload</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:wagon" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tWagon">
@@ -486,31 +548,37 @@
           <xs:element name="passenger" type="rail:ePassenger" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data for passenger cars</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:passenger" />
             </xs:annotation>
           </xs:element>
           <xs:element name="goods" type="rail:eGoods" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data for freight cars</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:goods" />
             </xs:annotation>
           </xs:element>
           <xs:element name="auxiliarySupplySystem" type="rail:tElectrificationSystem" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>installed supply systems for auxiliaries in the vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:auxiliarySupplySystem" />
             </xs:annotation>
           </xs:element>
           <xs:element name="driversCab" type="rail:tDriversCabType" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>data about each drivers cab of the vehicle</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:driversCab" />
             </xs:annotation>
           </xs:element>
           <xs:element name="rackTraction" type="rail:tRackTractionType" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data about rack traction equipment of the vehicle used for braking only</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:rackTraction_wagon" />
             </xs:annotation>
           </xs:element>
           <xs:element name="couplers" type="rail:eCouplers" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data for couplers between wagons</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:couplers" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -525,16 +593,19 @@
           <xs:element name="gangway" type="rail:tGangway" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>description of gangway features between vehicles</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:gangway" />
             </xs:annotation>
           </xs:element>
           <xs:element name="doors" type="rail:tDoors" minOccurs="0">
             <xs:annotation>
               <xs:documentation>data about door dimensions</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:doors" />
             </xs:annotation>
           </xs:element>
           <xs:element name="tilting" type="rail:tTilting" minOccurs="0">
             <xs:annotation>
-              <xs:documentation>data about carbody tilting system</xs:documentation>
+              <xs:documentation>data about car body tilting system</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:tilting" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -549,6 +620,7 @@
           <xs:element name="service" type="rail:tService" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>description of any additional service provided per vehicle like car or truck ports</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:service_goods" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -561,16 +633,19 @@
       <xs:element name="mechanicalCoupler" type="rail:eMechanicalCoupler" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>container for available mechanical couplers between wagons</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:mechanicalCoupler" />
         </xs:annotation>
       </xs:element>
       <xs:element name="pneumaticCoupler" type="rail:ePneumaticCoupler" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>container for available pneumatic couplers between wagons</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:pneumaticCoupler" />
         </xs:annotation>
       </xs:element>
       <xs:element name="electricalCoupler" type="rail:eElectricalCoupler" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>container for available electrical couplers between wagons</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:electricalCoupler" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
@@ -578,40 +653,56 @@
 
   <xs:complexType name="eMechanicalCoupler">
     <xs:complexContent>
-      <xs:extension base="rail:tMechanicalWagonCouplerType" />
+      <xs:extension base="rail:tMechanicalWagonCouplerType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:mechanicalCoupler" />
+        </xs:annotation>
+      </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="ePneumaticCoupler">
     <xs:complexContent>
-      <xs:extension base="rail:tPneumaticWagonCouplerType" />
+      <xs:extension base="rail:tPneumaticWagonCouplerType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:pneumaticCoupler" />
+        </xs:annotation>
+      </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="eElectricalCoupler">
     <xs:complexContent>
-      <xs:extension base="rail:tElectricalWagonCouplerType" />
+      <xs:extension base="rail:tElectricalWagonCouplerType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:electricalCoupler" />
+        </xs:annotation>
+      </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="eVehicleBrakes">
     <xs:annotation>
       <xs:documentation>data about brake systems independent from propulsion</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicleBrakes" />
     </xs:annotation>
     <xs:sequence>
       <xs:element name="vehicleBrake" type="rail:eVehicleBrake" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>settings and characteristic of a particular brake type or brake application position</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicleBrake" />
         </xs:annotation>
       </xs:element>
       <xs:element name="mechanicalBrakeEffort" type="rail:tEffortCurve" minOccurs="0">
         <xs:annotation>
           <xs:documentation>mechanical brake effort at wheel vs. speed by brake systems without propulsion</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:mechanicalBrakeEffort" />
         </xs:annotation>
       </xs:element>
       <xs:element name="eddyCurrentBrake" type="rail:tEddyCurrentBrake" minOccurs="0">
         <xs:annotation>
           <xs:documentation>technical data of eddy current brake</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:eddyCurrentBrake" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
@@ -620,6 +711,9 @@
   <xs:complexType name="eVehicleBrake">
     <xs:complexContent>
       <xs:extension base="rail:tBasicBrakeType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicleBrake" />
+        </xs:annotation>
         <xs:attributeGroup ref="rail:aVehicleBrake" />
       </xs:extension>
     </xs:complexContent>
@@ -627,17 +721,25 @@
 
   <xs:complexType name="eCurvingLimitation">
     <xs:complexContent>
-      <xs:extension base="rail:tCurvingLimitationType" />
+      <xs:extension base="rail:tCurvingLimitationType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:curvingLimitation" />
+        </xs:annotation>
+      </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="eLoadLimitMatrix">
     <xs:complexContent>
       <xs:extension base="rail:tLoadLimitMatrixType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:loadLimitMatrix" />
+        </xs:annotation>
         <xs:sequence>
           <xs:element name="loadLimit" type="rail:eLoadLimit" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>container for possible load limits</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:loadLimit" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -648,15 +750,20 @@
   <xs:complexType name="eLoadLimit">
     <xs:complexContent>
       <xs:extension base="rail:tLoadLimitType">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:loadLimit" />
+        </xs:annotation>
         <xs:sequence>
           <xs:element name="railNetwork" type="rail:tRailNetwork" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>relation to particular rail networks the limit is applicable</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:railNetwork" />
             </xs:annotation>
           </xs:element>
           <xs:element name="lineClassification" type="rail:tLineClassification" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>load limit with respect to line classification (permissible axle load and meter load)</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:lineClassification" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -668,10 +775,12 @@
     <xs:sequence>
       <xs:annotation>
         <xs:documentation>contain formation data</xs:documentation>
+        <xs:documentation source="https://wiki2.railml.org/wiki/RS:formations" />
       </xs:annotation>
       <xs:element name="formation" type="rail:eFormation" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>data for train composition or vehicle formation</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:formation" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
@@ -680,6 +789,7 @@
   <xs:complexType name="eFormation">
     <xs:annotation>
       <xs:documentation>data for train composition or vehicle formation</xs:documentation>
+      <xs:documentation source="https://wiki2.railml.org/wiki/RS:formation" />
     </xs:annotation>
     <xs:complexContent>
       <xs:extension base="rail:tFormation">
@@ -690,26 +800,31 @@
           <xs:element name="trainOrder" type="rail:eTrainOrder" minOccurs="0">
             <xs:annotation>
               <xs:documentation>car order for a formation</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:trainOrder" />
             </xs:annotation>
           </xs:element>
           <xs:element name="categoryRef" type="rail:tElementWithReference" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>reference to train categories in TimeTable part, e.g. ltd. Express, the formation can run as in service</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:categoryRef" />
             </xs:annotation>
           </xs:element>
           <xs:element name="trainEngine" type="rail:tTrainEngine" minOccurs="0">
             <xs:annotation>
               <xs:documentation>acceleration value for whole formation</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:trainEngine" />
             </xs:annotation>
           </xs:element>
           <xs:element name="trainBrakes" type="rail:tBasicBrakeType" minOccurs="0">
             <xs:annotation>
               <xs:documentation>for whole formation deceleration</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:trainBrakes" />
             </xs:annotation>
           </xs:element>
           <xs:element name="trainResistance" type="rail:tTrainResistance" minOccurs="0">
             <xs:annotation>
               <xs:documentation>mechanical train resistance vs. speed</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/RS:trainResistance" />
             </xs:annotation>
           </xs:element>
         </xs:sequence>
@@ -722,6 +837,7 @@
       <xs:element name="vehicleRef" type="rail:tVehicleRef" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>references via ID-attribute to vehicle element</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:vehicleRef" />
         </xs:annotation>
       </xs:element>
     </xs:sequence>
diff --git a/schema/rollingstockTypes.xsd b/schema/rollingstockTypes.xsd
index 028d9aa..678af0e 100644
--- a/schema/rollingstockTypes.xsd
+++ b/schema/rollingstockTypes.xsd
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of attribute groups, simple and complex types, used by rollingstock sub schema (RS)</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of attribute groups, simple and complex types, used by rollingstock sub schema (RS)</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="railwayUnits.xsd" />
@@ -134,7 +134,7 @@
     </xs:attribute>
     <xs:attribute name="resistanceFactor" type="xs:decimal">
       <xs:annotation>
-        <xs:documentation>running resistance of vehicle in N/kN (to be used in conjungtion with 'trainResistance' element</xs:documentation>
+        <xs:documentation>running resistance of vehicle in N/kN (to be used in conjunction with 'trainResistance' element</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="onTrainHead" type="xs:boolean">
@@ -157,11 +157,16 @@
   </xs:complexType>
 
   <xs:attributeGroup name="aManufacturer">
-    <xs:attribute name="manufacturerName" type="rail:tGenericName" use="required">
+    <xs:attribute name="manufacturerName" type="rail:tGenericName">
       <xs:annotation>
-        <xs:documentation>name of manufacturer</xs:documentation>
+        <xs:documentation>DEPRECATED: name of manufacturer, use reference to manufacturer list instead</xs:documentation>
       </xs:annotation>
     </xs:attribute>
+    <xs:attribute name="vehicleManufacturerRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>reference to the vehicle manufacturer entry</xs:documentation>
+      </xs:annotation>
+		</xs:attribute>
     <xs:attribute name="manufacturerType" type="rail:tElementDescription" use="required">
       <xs:annotation>
         <xs:documentation>type description of manufacturer</xs:documentation>
@@ -183,11 +188,16 @@
   </xs:complexType>
 
   <xs:attributeGroup name="aOperator">
-    <xs:attribute name="operatorName" type="rail:tGenericName" use="required">
+    <xs:attribute name="operatorName" type="rail:tGenericName">
       <xs:annotation>
-        <xs:documentation>name of vehicle operator</xs:documentation>
+        <xs:documentation>DEPRECATED: name of vehicle operator, use reference to operator list instead</xs:documentation>
       </xs:annotation>
     </xs:attribute>
+    <xs:attribute name="vehicleOperatorRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>reference to the vehicle operator entry</xs:documentation>
+      </xs:annotation>
+		</xs:attribute>
     <xs:attribute name="operatorClass" type="xs:string" use="required">
       <xs:annotation>
         <xs:documentation>vehicle class description of operator or complete identifier number in case of particular vehicle</xs:documentation>
@@ -288,12 +298,12 @@
   <xs:attributeGroup name="aPropulsion">
     <xs:attribute name="power" type="rail:tPowerWatt" use="required">
       <xs:annotation>
-        <xs:documentation>installed power of propulsuion system per vehicle in Watt</xs:documentation>
+        <xs:documentation>installed power of propulsion system per vehicle in Watt</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="powerType" type="rail:tMotivePowerType" use="required">
       <xs:annotation>
-        <xs:documentation>type of power for propulsuion system in the vehicle</xs:documentation>
+        <xs:documentation>type of power for propulsion system in the vehicle</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="transmission" type="rail:tTransmission">
@@ -303,7 +313,7 @@
     </xs:attribute>
     <xs:attribute name="controlType" type="rail:tPropulsionControlType">
       <xs:annotation>
-        <xs:documentation>type of control for propulsuion system in the vehicle</xs:documentation>
+        <xs:documentation>type of control for propulsion system in the vehicle</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="maxTractEffort" type="rail:tEffortNewton">
@@ -363,7 +373,7 @@
     </xs:attribute>
     <xs:attribute name="tractionOffUndervoltageThreshold" type="rail:tVoltageVolt">
       <xs:annotation>
-        <xs:documentation>undervoltage threshold to switch off tration power in case net voltage out of limit</xs:documentation>
+        <xs:documentation>under voltage threshold to switch off traction power in case net voltage out of limit</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="zeroSpeedCurrentLimitation" type="rail:tCurrentAmpere">
@@ -497,34 +507,6 @@
     </xs:complexContent>
   </xs:complexType>
 
-  <xs:attributeGroup name="aETCS">
-    <xs:attribute name="srsVersion" type="rail:tVersionNumber">
-      <xs:annotation>
-        <xs:documentation>Version of ETCS language (SRS edition) installed</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="level_0" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>on-board unit supports level 0</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="level_1" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>on-board unit supports level 1</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="level_2" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>on-board unit supports level 2</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="level_3" type="xs:boolean">
-      <xs:annotation>
-        <xs:documentation>on-board unit supports level 3</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:attributeGroup>
-
   <xs:complexType name="tSpecificTransmissionModule">
     <xs:annotation>
       <xs:documentation>container for installed special transmission modules</xs:documentation>
@@ -963,9 +945,10 @@
   </xs:complexType>
 
   <xs:attributeGroup name="aMonitoringSystem">
-    <xs:attribute name="type" type="rail:tNationalSystemsType" use="required">
+    <xs:attribute name="type" type="xs:string" use="required">
       <xs:annotation>
         <xs:documentation>type of national system as enumeration</xs:documentation>
+        <xs:documentation>use value from the separate code definition file 'TrainProtectionSystems.xml'/trainProtectionSystemsOnVehicle</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="trainProtectionMedium" type="rail:tTrainProtectionMedium" use="required">
@@ -975,7 +958,7 @@
     </xs:attribute>
     <xs:attribute name="trainProtectionMonitoring" type="rail:tTrainProtectionMonitoring" use="required">
       <xs:annotation>
-        <xs:documentation>way of information transmission between lineside and trainborne equipment</xs:documentation>
+        <xs:documentation>way of information transmission between line-side and train-borne equipment</xs:documentation>
       </xs:annotation>
     </xs:attribute>
   </xs:attributeGroup>
@@ -1182,31 +1165,6 @@
     </xs:attribute>
   </xs:attributeGroup>
 
-  <xs:complexType name="tTilting">
-    <xs:annotation>
-      <xs:documentation>data for tilting mechanism of passenger cars</xs:documentation>
-    </xs:annotation>
-    <xs:attributeGroup ref="rail:aTilting" />
-  </xs:complexType>
-
-  <xs:attributeGroup name="aTilting">
-    <xs:attribute name="maxTiltingAngle" type="rail:tAngleDegQuadrant">
-      <xs:annotation>
-        <xs:documentation>maximum tilting angle in degrees</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="actuation" type="rail:tTiltingActuationType">
-      <xs:annotation>
-        <xs:documentation>way of actuating the carbody tilting (active/passive)</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-    <xs:attribute name="tiltingSpeed" type="rail:tSpeedDegreesPerSecond">
-      <xs:annotation>
-        <xs:documentation>speed of changing the tilting angle in degrees per second</xs:documentation>
-      </xs:annotation>
-    </xs:attribute>
-  </xs:attributeGroup>
-
   <xs:complexType name="tGoods">
     <xs:annotation>
       <xs:documentation>data for freight cars</xs:documentation>
@@ -1217,12 +1175,12 @@
   <xs:attributeGroup name="aGoods">
     <xs:attribute name="load" type="rail:tWeightTons">
       <xs:annotation>
-        <xs:documentation>maximum paylod per wagon in metric tons</xs:documentation>
+        <xs:documentation>maximum payload per wagon in metric tons</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="loadArea" type="rail:tAreaSquareMeter">
       <xs:annotation>
-        <xs:documentation>maximum area to be used for paylod per wagon in square metres</xs:documentation>
+        <xs:documentation>maximum area to be used for payload per wagon in square metres</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="volume" type="rail:tVolumeCubicMeter">
@@ -1264,7 +1222,7 @@
   <xs:attributeGroup name="aVehicleBrake">
     <xs:attribute name="loadSwitch" type="rail:tLoadSwitch">
       <xs:annotation>
-        <xs:documentation>for waggons with "full" / "empty" switch</xs:documentation>
+        <xs:documentation>for wagons with "full" / "empty" switch</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="autoBrakePercentage" type="rail:tBrakePercentage">
@@ -1274,7 +1232,7 @@
     </xs:attribute>
     <xs:attribute name="maxAutoBrakeMass" type="rail:tWeightTons">
       <xs:annotation>
-        <xs:documentation>maximum brake mass of autimatic brake</xs:documentation>
+        <xs:documentation>maximum brake mass of automatic brake</xs:documentation>
       </xs:annotation>
     </xs:attribute>
   </xs:attributeGroup>
@@ -1301,7 +1259,7 @@
     </xs:attribute>
     <xs:attribute name="maxEffort" type="rail:tEffortNewton" use="required">
       <xs:annotation>
-        <xs:documentation>maximal brakeing effort achived in Newton</xs:documentation>
+        <xs:documentation>maximal braking effort achieved in Newton</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="minSpeed" type="rail:tSpeedKmPerHour" use="required">
@@ -1345,7 +1303,7 @@
     </xs:attribute>
     <xs:attribute name="bruttoWeight" type="rail:tWeightTons">
       <xs:annotation>
-        <xs:documentation>brutto weight (vehicles plus payload) in metrical tons of the entire formation (shall be in accordance with the sum of single vehicles)</xs:documentation>
+        <xs:documentation>gross weight (vehicles plus payload) in metrical tons of the entire formation (shall be in accordance with the sum of single vehicles)</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="nettoWeight" type="rail:tWeightTons">
@@ -1355,7 +1313,7 @@
     </xs:attribute>
     <xs:attribute name="tareWeight" type="rail:tWeightTons">
       <xs:annotation>
-        <xs:documentation>tara weight (empty vehicles) in metrical tons of the entire formation (shall be in accordance with the sum of single vehicles)</xs:documentation>
+        <xs:documentation>tare weight (empty vehicles) in metrical tons of the entire formation (shall be in accordance with the sum of single vehicles)</xs:documentation>
       </xs:annotation>
     </xs:attribute>
   </xs:attributeGroup>
@@ -1495,6 +1453,24 @@
       <xs:element name="valueTable" minOccurs="0">
         <xs:annotation>
           <xs:documentation> table of values vs. arbitrary variable representing function y=f(x,z)</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_phi" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_trainResistance" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_mechanicalLosses" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_tractiveEffort" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_brakeEffort" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_mechanicalBrakeEffort" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_tractiveCurrent" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_brakeCurrent" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_tractiveCurrentLimitation" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_brakeCurrentLimitation" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_tractiveVehicleEfficiency" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_brakeVehicleEfficiency" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_efficiency_energyStorage" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_efficiency_transformer" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_efficiency_fourQuadrantChopper" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_efficiency_tractionInverter" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_efficiency_tractionMotor" />
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueTable_efficiency_gear" />
         </xs:annotation>
         <xs:complexType>
           <xs:complexContent>
@@ -1513,6 +1489,7 @@
       <xs:element name="columnHeader" minOccurs="0" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>List of Names to explain meaning of values</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:columnHeader" />
         </xs:annotation>
         <xs:complexType>
           <xs:attribute name="zValue" type="xs:decimal" use="required">
@@ -1525,12 +1502,14 @@
       <xs:element name="valueLine" maxOccurs="unbounded">
         <xs:annotation>
           <xs:documentation>set of values related to an x-value (one table line)</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/RS:valueLine" />
         </xs:annotation>
         <xs:complexType>
           <xs:sequence>
             <xs:element name="values" maxOccurs="unbounded">
               <xs:annotation>
                 <xs:documentation>the values related to an x-value themselves</xs:documentation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/RS:values" />
               </xs:annotation>
               <xs:complexType>
                 <xs:attribute name="yValue" type="xs:decimal" use="required">
@@ -1566,7 +1545,7 @@
     </xs:attribute>
     <xs:attribute name="yValueUnit" type="rail:tUnitName" use="required">
       <xs:annotation>
-        <xs:documentation>physical unit of the valuesin element "values"</xs:documentation>
+        <xs:documentation>physical unit of the values in element "values"</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="zValueName" type="rail:tElementDescription">
@@ -1755,20 +1734,11 @@
     </xs:attribute>
     <xs:attribute name="resilentCogWheel" type="xs:boolean" use="required">
       <xs:annotation>
-        <xs:documentation>flag, wheter the cog wheel(s) is(are) resilently suspended</xs:documentation>
+        <xs:documentation>flag, whether the cog wheel(s) is(are) resilently suspended</xs:documentation>
       </xs:annotation>
     </xs:attribute>
   </xs:attributeGroup>
 
-  <xs:simpleType name="tTiltingActuationType">
-    <xs:restriction base="xs:string">
-      <xs:enumeration value="none" />
-      <xs:enumeration value="active" />
-      <xs:enumeration value="passive" />
-      <xs:enumeration value="rollCompensation" />
-    </xs:restriction>
-  </xs:simpleType>
-
   <xs:simpleType name="tRackSystemType">
     <xs:union>
       <xs:simpleType>
@@ -1880,12 +1850,12 @@
     </xs:attribute>
     <xs:attribute name="verticalCrestRadius" type="rail:tLengthM">
       <xs:annotation>
-        <xs:documentation>maximum vertical radius of any crest (Kuppe) in metres allowed for the vehicle running</xs:documentation>
+        <xs:documentation>maximum vertical radius of any crest (de: Kuppe) in metres allowed for the vehicle running</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="verticalSagRadius" type="rail:tLengthM">
       <xs:annotation>
-        <xs:documentation>maximum vertical radius of any sag (Wanne) in metres allowed for the vehicle running</xs:documentation>
+        <xs:documentation>maximum vertical radius of any sag (de: Wanne) in metres allowed for the vehicle running</xs:documentation>
       </xs:annotation>
     </xs:attribute>
   </xs:attributeGroup>
@@ -2030,7 +2000,7 @@
     </xs:attribute>
     <xs:attribute name="designType" type="rail:tElectricalCouplerDesignType">
       <xs:annotation>
-        <xs:documentation>description of the design type of the elctrical coupler (mainly control lines)</xs:documentation>
+        <xs:documentation>description of the design type of the electrical coupler (mainly control lines)</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="positionOnMechanicalCoupler" type="rail:tRelatedPositionType">
diff --git a/schema/timetable.xsd b/schema/timetable.xsd
index 0ecb3f1..2a6c84d 100644
--- a/schema/timetable.xsd
+++ b/schema/timetable.xsd
@@ -1,28 +1,64 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of elements (partially hidden as complex type) for timetable sub schema (TT), uses timetable types and attribute groups from "xs:include" path</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of elements (partially hidden as complex type) for timetable sub schema (TT), uses timetable types and attribute groups from "xs:include" path</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="timetableTypes.xsd" />
 
   <xs:element name="timetable">
     <xs:complexType>
+      <xs:annotation>
+        <xs:documentation source="https://wiki2.railml.org/wiki/TT:timetable" />
+      </xs:annotation>
       <xs:complexContent>
         <xs:extension base="rail:tTimetable">
           <xs:sequence>
-            <xs:element name="timetablePeriods" type="rail:eTimetablePeriods" minOccurs="0" />
-            <xs:element name="operatingPeriods" type="rail:eOperatingPeriods" minOccurs="0" />
-            <xs:element name="categories" type="rail:eCategories" minOccurs="0" />
-            <xs:element name="trainParts" type="rail:eTrainParts" minOccurs="0" />
-            <xs:element name="trains" type="rail:eTrains" minOccurs="0" />
-            <xs:element name="trainGroups" type="rail:eTrainGroups" minOccurs="0" />
-            <xs:element name="rosterings" type="rail:eRosterings" minOccurs="0" />
+            <xs:element name="timetablePeriods" type="rail:eTimetablePeriods" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:timetablePeriods" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="operatingPeriods" type="rail:eOperatingPeriods" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:operatingPeriods" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="categories" type="rail:eCategories" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:categories" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="annotations" type="rail:eAnnotations" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:annotations" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="trainParts" type="rail:eTrainParts" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainParts" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="trains" type="rail:eTrains" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:trains" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="trainGroups" type="rail:eTrainGroups" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainGroups" />
+              </xs:annotation>
+            </xs:element>
+            <xs:element name="rosterings" type="rail:eRosterings" minOccurs="0">
+              <xs:annotation>
+                <xs:documentation source="https://wiki2.railml.org/wiki/TT:rosterings" />
+              </xs:annotation>
+            </xs:element>
           </xs:sequence>
         </xs:extension>
       </xs:complexContent>
@@ -41,40 +77,6 @@
       <xs:field xpath="@timetablePeriodRef" />
     </xs:keyref>
 
-    <xs:key name="operatingPeriodKey">
-      <xs:selector xpath=".//rail:operatingPeriods/rail:operatingPeriod" />
-      <xs:field xpath="@id" />
-    </xs:key>
-    <xs:keyref name="operatingPeriod-trainPartKeyref" refer="rail:operatingPeriodKey">
-      <xs:selector xpath=".//rail:trainParts/rail:trainPart/rail:operatingPeriodRef" />
-      <xs:field xpath="@ref" />
-    </xs:keyref>
-    <xs:keyref name="operatingPeriod-blockPartKeyref" refer="rail:operatingPeriodKey">
-      <xs:selector xpath=".//rail:blockParts/rail:blockPart" />
-      <xs:field xpath="@operatingPeriodRef" />
-    </xs:keyref>
-    <xs:keyref name="operatingPeriod-circulationKeyref" refer="rail:operatingPeriodKey">
-      <xs:selector xpath=".//rail:circulations/rail:circulation" />
-      <xs:field xpath="@operatingPeriodRef" />
-    </xs:keyref>
-    <xs:keyref name="nextOperatingPeriod-circulationKeyref" refer="rail:operatingPeriodKey">
-      <xs:selector xpath=".//rail:circulations/rail:circulation" />
-      <xs:field xpath="@nextOperatingPeriodRef" />
-    </xs:keyref>
-
-    <xs:key name="categoryKey">
-      <xs:selector xpath=".//rail:categories/rail:category" />
-      <xs:field xpath="@id" />
-    </xs:key>
-    <xs:keyref name="category-trainPartKeyref" refer="rail:categoryKey">
-      <xs:selector xpath=".//rail:trainParts/rail:trainPart" />
-      <xs:field xpath="@categoryRef" />
-    </xs:keyref>
-    <xs:keyref name="category-trainPartSequenceKeyref" refer="rail:categoryKey">
-      <xs:selector xpath=".//rail:trains/rail:train/rail:trainPartSequence" />
-      <xs:field xpath="@categoryRef" />
-    </xs:keyref>
-
     <xs:key name="trainPartKey">
       <xs:selector xpath=".//rail:trainParts/rail:trainPart" />
       <xs:field xpath="@id" />
@@ -87,6 +89,10 @@
       <xs:selector xpath=".//rail:blockParts/rail:blockPart" />
       <xs:field xpath="@trainPartRef" />
     </xs:keyref>
+    <xs:keyref name="trainPart-connectionKeyref" refer="rail:trainPartKey">
+      <xs:selector xpath=".//rail:connections/rail:connection" />
+      <xs:field xpath="@trainPartRef" />
+    </xs:keyref>
 
     <xs:key name="trainKey">
       <xs:selector xpath=".//rail:trains/rail:train" />
@@ -96,6 +102,10 @@
       <xs:selector xpath=".//rail:trainGroups/rail:trainGroup/rail:trainRef" />
       <xs:field xpath="@ref" />
     </xs:keyref>
+    <xs:keyref name="train-connectionKeyref" refer="rail:trainKey">
+      <xs:selector xpath=".//rail:connections/rail:connection" />
+      <xs:field xpath="@trainRef" />
+    </xs:keyref>
 
     <xs:key name="blockPartKey">
       <xs:selector xpath=".//rail:blockParts/rail:blockPart" />
@@ -118,16 +128,40 @@
       <xs:selector xpath=".//rail:circulations/rail:circulation" />
       <xs:field xpath="@blockRef" />
     </xs:keyref>
-    <xs:keyref name="nextBlock-circulationKeyref" refer="rail:blockKey">
+    <xs:keyref name="block-circulationNextKeyref" refer="rail:blockKey">
       <xs:selector xpath=".//rail:circulations/rail:circulation" />
       <xs:field xpath="@nextBlockRef" />
     </xs:keyref>
 
+    <!-- annotation identity in timetable subschema -->
+    <xs:key name="annotationKey">
+      <xs:selector xpath=".//rail:annotations/rail:annotation" />
+      <xs:field xpath="@id" />
+    </xs:key>
+
+    <!-- annotation reference in timetable subschema -->
+    <xs:keyref name="annotation-trainPartKeyref" refer="rail:annotationKey">
+      <xs:selector xpath=".//rail:trainParts/rail:trainPart/rail:annotationRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="annotation-stopDescriptionKeyref" refer="rail:annotationKey">
+      <xs:selector xpath=".//rail:ocpsTT/rail:ocpTT/rail:stopDescription/rail:annotationRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+    <xs:keyref name="annotation-connectionKeyref" refer="rail:annotationKey">
+      <xs:selector xpath=".//rail:ocpsTT/rail:ocpTT/rail:connections/rail:connection/rail:annotationRef" />
+      <xs:field xpath="@ref" />
+    </xs:keyref>
+
   </xs:element>
 
   <xs:complexType name="eOperatingPeriods">
     <xs:sequence>
-      <xs:element name="operatingPeriod" type="rail:eOperatingPeriod" maxOccurs="unbounded" />
+      <xs:element name="operatingPeriod" type="rail:eOperatingPeriod" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:operatingPeriod" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -135,8 +169,16 @@
     <xs:complexContent>
       <xs:extension base="rail:tOperatingPeriod">
         <xs:sequence>
-          <xs:element name="operatingDay" type="rail:eOperatingDay" minOccurs="0" maxOccurs="unbounded" />
-          <xs:element name="specialService" type="rail:tSpecialService" minOccurs="0" maxOccurs="unbounded" />
+          <xs:element name="operatingDay" type="rail:eOperatingDay" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:operatingDay" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="specialService" type="rail:tSpecialService" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:specialService_operatingPeriod" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -146,7 +188,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tOperatingDay">
         <xs:sequence>
-          <xs:element name="operatingDayDeviance" type="rail:tOperatingDayDeviance" minOccurs="0" maxOccurs="unbounded" />
+          <xs:element name="operatingDayDeviance" type="rail:tOperatingDayDeviance" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:operatingDayDeviance" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -154,7 +200,11 @@
 
   <xs:complexType name="eTimetablePeriods">
     <xs:sequence>
-      <xs:element name="timetablePeriod" type="rail:eTimetablePeriod" maxOccurs="unbounded" />
+      <xs:element name="timetablePeriod" type="rail:eTimetablePeriod" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:timetablePeriod" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -162,7 +212,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tTimetablePeriod">
         <xs:sequence>
-          <xs:element name="holidays" type="rail:eHolidays" minOccurs="0" />
+          <xs:element name="holidays" type="rail:eHolidays" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:holidays" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -170,7 +224,11 @@
 
   <xs:complexType name="eHolidays">
     <xs:sequence>
-      <xs:element name="holiday" type="rail:tHoliday" maxOccurs="unbounded" />
+      <xs:element name="holiday" type="rail:tHoliday" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:holiday" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -178,9 +236,21 @@
     <xs:complexContent>
       <xs:extension base="rail:tFormationTT">
         <xs:sequence>
-          <xs:element name="equipmentUsage" type="rail:eEquipmentUsage" minOccurs="0" />
-          <xs:element name="passengerUsage" type="rail:ePassengerFacility" minOccurs="0" />
-          <xs:element name="reservationInfo" type="rail:eReservationInfo" minOccurs="0" />
+          <xs:element name="equipmentUsage" type="rail:eEquipmentUsage" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:equipmentUsage_formationTT" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="passengerUsage" type="rail:ePassengerFacilityTT" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:passengerUsage" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="reservationInfo" type="rail:eReservationInfo" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:reservationInfo" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -188,19 +258,62 @@
 
   <xs:complexType name="eEquipmentUsage">
     <xs:sequence>
-      <xs:element name="equipment" type="rail:tEquipment" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="equipment" type="rail:eEquipment" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:equipment" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="eEquipment">
+    <xs:complexContent>
+      <xs:extension base="rail:tEquipment">
+        <xs:sequence>
+          <xs:element name="etcs" type="rail:tEtcsTT" minOccurs="0" maxOccurs="1">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:etcs" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="ePassengerFacilityTT">
+    <xs:sequence>
+      <xs:element name="places" type="rail:tPlacesTT" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>list of place capacity of the vehicle divided by particular categories</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:places" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="service" type="rail:tService" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>description of any additional service provided per vehicle</xs:documentation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:service" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eReservationInfo">
     <xs:sequence>
-      <xs:element name="booking" type="rail:tBooking" maxOccurs="unbounded" />
+      <xs:element name="booking" type="rail:tBooking" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:booking" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eCategories">
     <xs:sequence>
-      <xs:element name="category" type="rail:eCategory" maxOccurs="unbounded" />
+      <xs:element name="category" type="rail:eCategory" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:category" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -210,9 +323,44 @@
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="eAnnotations">
+    <xs:sequence>
+      <xs:element name="annotation" type="rail:eAnnotation" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:annotation" />
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="eAnnotation">
+    <xs:complexContent>
+      <xs:extension base="rail:tAnnotation">
+        <xs:sequence>
+          <xs:element name="text" type="rail:eAnnotationText" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>could be the instructions to drivers, used by an AVL (de:RBL) system, or the message on printouts</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:text_annotation" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="eAnnotationText">
+    <xs:complexContent>
+      <xs:extension base="rail:tAnnotationText" />
+    </xs:complexContent>
+  </xs:complexType>
+
   <xs:complexType name="eTrainParts">
     <xs:sequence>
-      <xs:element name="trainPart" type="rail:eTrainPart" maxOccurs="unbounded" />
+      <xs:element name="trainPart" type="rail:eTrainPart" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainPart" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -220,9 +368,32 @@
     <xs:complexContent>
       <xs:extension base="rail:tTrainPart">
         <xs:sequence>
-          <xs:element name="formationTT" type="rail:eFormationTT" minOccurs="0" />
-          <xs:element name="operatingPeriodRef" type="rail:eOperatingPeriodRef" minOccurs="0" />
-          <xs:element name="ocpsTT" type="rail:eOcpsTT" />
+          <xs:element name="formationTT" type="rail:eFormationTT" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:formationTT" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="operatingPeriodRef" type="rail:eOperatingPeriodRef" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:operatingPeriodRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="ocpsTT" type="rail:eOcpsTT">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:ocpsTT" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="organizationalUnitBinding" type="rail:eOrganizationalUnitBinding" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:organizationalUnitBinding" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="annotationRef" type="rail:tAnnotationRef">
+            <xs:annotation>
+              <xs:documentation>refers to the id attribute of an annotation element</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:annotationRef_trainPart" />
+            </xs:annotation>
+          </xs:element>
           <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded">
             <xs:annotation>
               <xs:documentation>Deprecated for next major release, use "generic any element" instead.</xs:documentation>
@@ -237,7 +408,12 @@
     <xs:complexContent>
       <xs:extension base="rail:tOperatingPeriodRef">
         <xs:sequence>
-          <xs:element name="specialService" type="rail:tSpecialService" minOccurs="0" maxOccurs="unbounded" />
+          <xs:element name="specialService" type="rail:tSpecialService" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>DEPRECATED: use reference to individual operating period instead.</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:specialService_operatingPeriodRef" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -245,7 +421,11 @@
 
   <xs:complexType name="eOcpsTT">
     <xs:sequence>
-      <xs:element name="ocpTT" type="rail:eOcpTT" maxOccurs="unbounded" />
+      <xs:element name="ocpTT" type="rail:eOcpTT" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:ocpTT" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -253,11 +433,31 @@
     <xs:complexContent>
       <xs:extension base="rail:tOcpTT">
         <xs:sequence>
-          <xs:element name="times" type="rail:eArrivalDepartureTimes" minOccurs="0" maxOccurs="unbounded" />
-          <xs:element name="connections" type="rail:eConnectionsTT" minOccurs="0" />
-          <xs:element name="statistics" type="rail:eStatistics" minOccurs="0" />
-          <xs:element name="sectionTT" type="rail:eSectionTT" minOccurs="0" />
-          <xs:element name="stopDescription" type="rail:eStopDescription" minOccurs="0" />
+          <xs:element name="times" type="rail:eArrivalDepartureTimes" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:times" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="connections" type="rail:eConnectionsTT" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:connections" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="statistics" type="rail:eStatistics" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:statistics" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="sectionTT" type="rail:eSectionTT" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:sectionTT" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="stopDescription" type="rail:eStopDescription" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:stopDescription" />
+            </xs:annotation>
+          </xs:element>
           <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
         </xs:sequence>
       </xs:extension>
@@ -272,13 +472,36 @@
 
   <xs:complexType name="eConnectionsTT">
     <xs:sequence>
-      <xs:element name="connection" type="rail:tConnectionTT" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="connection" type="rail:eConnectionTT" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:connection" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
+  <xs:complexType name="eConnectionTT">
+    <xs:complexContent>
+      <xs:extension base="rail:tConnectionTT">
+        <xs:sequence>
+          <xs:element name="annotationRef" type="rail:tAnnotationRef" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>refers to the id attribute of an annotation element</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:annotationRef_connection" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
   <xs:complexType name="eStatistics">
     <xs:sequence>
-      <xs:element name="statistic" type="rail:eStatistic" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="statistic" type="rail:eStatistic" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:statistic" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -286,10 +509,26 @@
     <xs:complexContent>
       <xs:extension base="rail:tStatistic">
         <xs:sequence>
-          <xs:element name="mean" type="rail:tStatisticTimes" minOccurs="0" />
-          <xs:element name="median" type="rail:tStatisticTimes" minOccurs="0" />
-          <xs:element name="standardDeviation" type="rail:tStandardDeviationTimes" minOccurs="0" />
-          <xs:element name="statisticAnalyses" type="rail:tStatisticAnalyses" minOccurs="0" maxOccurs="unbounded" />
+          <xs:element name="mean" type="rail:tStatisticTimes" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:mean" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="median" type="rail:tStatisticTimes" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:median" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="standardDeviation" type="rail:tStandardDeviationTimes" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:standardDeviation" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="statisticAnalyses" type="rail:tStatisticAnalyses" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:statisticAnalyses" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -299,8 +538,16 @@
     <xs:complexContent>
       <xs:extension base="rail:tSectionTT">
         <xs:sequence>
-          <xs:element minOccurs="0" maxOccurs="unbounded" name="trackRef" type="rail:tTrackRef" />
-          <xs:element minOccurs="0" name="runTimes" type="rail:tRunTimes" />
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="trackRef" type="rail:tTrackRef">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:trackRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element minOccurs="0" name="runTimes" type="rail:tRunTimes">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:runTimes" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -310,15 +557,77 @@
     <xs:complexContent>
       <xs:extension base="rail:tStopDescription">
         <xs:sequence>
-          <xs:element minOccurs="0" name="stopTimes" type="rail:tStopTimes" />
+          <xs:element minOccurs="0" name="stopTimes" type="rail:tStopTimes">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:stopTimes" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="platformEdgeRef" type="rail:tPlatformEdgeRef">
+            <xs:annotation>
+              <xs:documentation>refers to the id attribute of the associated platform edge element, redundant if stopPostRef is given</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:platformEdgeRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="serviceSectionRef" type="rail:tServiceSectionRef">
+            <xs:annotation>
+              <xs:documentation>refers to the id attribute of the associated service section element</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:serviceSectionRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element minOccurs="0" maxOccurs="unbounded" name="annotationRef" type="rail:tAnnotationRef">
+            <xs:annotation>
+              <xs:documentation>refers to the id attribute of an annotation element</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:annotationRef_stopDescription" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="eOrganizationalUnitBinding">
+    <xs:sequence>
+      <xs:element name="vehicleOperator" type="rail:tElementWithReference" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:vehicleOperator" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="customer" type="rail:tElementWithReference" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:customer" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="railwayUndertaking" type="rail:tElementWithReference" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:railwayUndertaking" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="operationalUndertaking" type="rail:tElementWithReference" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:operationalUndertaking" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="concessionaire" type="rail:tElementWithReference" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:concessionaire" />
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="contractor" type="rail:tElementWithReference" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:contractor" />
+        </xs:annotation>
+      </xs:element>
+      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+
   <xs:complexType name="eTrains">
     <xs:sequence>
-      <xs:element name="train" type="rail:eTrain" maxOccurs="unbounded" />
+      <xs:element name="train" type="rail:eTrain" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:train" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -326,7 +635,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tTrain">
         <xs:sequence>
-          <xs:element name="trainPartSequence" type="rail:eTrainPartSequence" maxOccurs="unbounded" />
+          <xs:element name="trainPartSequence" type="rail:eTrainPartSequence" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainPartSequence" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -336,9 +649,27 @@
     <xs:complexContent>
       <xs:extension base="rail:tTrainPartSequence">
         <xs:sequence>
-          <xs:element name="trainPartRef" type="rail:tTrainPartRef" maxOccurs="unbounded" />
-          <xs:element name="equipmentUsage" type="rail:eEquipmentUsage" minOccurs="0" />
-          <xs:element name="brakeUsage" type="rail:eBrakeUsage" minOccurs="0" />
+          <xs:element name="trainPartRef" type="rail:tTrainPartRef" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainPartRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="speedProfileRef" type="rail:tSpeedProfileRef" minOccurs="0" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>a reference to a speed profile; there could be several speed profiles to be considered</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:speedProfileRef" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="equipmentUsage" type="rail:eEquipmentUsage" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:equipmentUsage_trainPartSequence" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="brakeUsage" type="rail:eBrakeUsage" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:brakeUsage" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -354,7 +685,11 @@
 
   <xs:complexType name="eTrainGroups">
     <xs:sequence>
-      <xs:element name="trainGroup" type="rail:eTrainGroup" maxOccurs="unbounded" />
+      <xs:element name="trainGroup" type="rail:eTrainGroup" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainGroup" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -362,7 +697,12 @@
     <xs:complexContent>
       <xs:extension base="rail:tTrainGroup">
         <xs:sequence>
-          <xs:element name="trainRef" type="rail:tTrainRef" maxOccurs="unbounded" />
+          <xs:element name="trainRef" type="rail:tElementRefInGroup" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation>reference to the trains included in a trainGroup; the group members could be ordered by a sequence attribute</xs:documentation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:trainRef" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -370,7 +710,11 @@
 
   <xs:complexType name="eRosterings">
     <xs:sequence>
-      <xs:element name="rostering" type="rail:eRostering" maxOccurs="unbounded" />
+      <xs:element name="rostering" type="rail:eRostering" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:rostering" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -378,9 +722,21 @@
     <xs:complexContent>
       <xs:extension base="rail:tRostering">
         <xs:sequence>
-          <xs:element name="blockParts" type="rail:eBlockParts" />
-          <xs:element name="blocks" type="rail:eBlocks" />
-          <xs:element name="circulations" type="rail:eCirculations" />
+          <xs:element name="blockParts" type="rail:eBlockParts">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:blockParts" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="blocks" type="rail:eBlocks">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:blocks" />
+            </xs:annotation>
+          </xs:element>
+          <xs:element name="circulations" type="rail:eCirculations" minOccurs="0">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:circulations" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -388,7 +744,11 @@
 
   <xs:complexType name="eBlocks">
     <xs:sequence>
-      <xs:element name="block" type="rail:eBlock" maxOccurs="unbounded" />
+      <xs:element name="block" type="rail:eBlock" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:block" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
@@ -396,7 +756,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tBlock">
         <xs:sequence>
-          <xs:element name="blockPartSequence" type="rail:eBlockPartSequence" maxOccurs="unbounded" />
+          <xs:element name="blockPartSequence" type="rail:eBlockPartSequence" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:blockPartSequence" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -406,7 +770,11 @@
     <xs:complexContent>
       <xs:extension base="rail:tBlockPartSequence">
         <xs:sequence>
-          <xs:element name="blockPartRef" type="rail:tBlockPartRef" maxOccurs="unbounded" />
+          <xs:element name="blockPartRef" type="rail:tBlockPartRef" maxOccurs="unbounded">
+            <xs:annotation>
+              <xs:documentation source="https://wiki2.railml.org/wiki/TT:blockPartRef" />
+            </xs:annotation>
+          </xs:element>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
@@ -414,14 +782,22 @@
 
   <xs:complexType name="eBlockParts">
     <xs:sequence>
-      <xs:element name="blockPart" type="rail:tBlockPart" maxOccurs="unbounded" />
+      <xs:element name="blockPart" type="rail:tBlockPart" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:blockPart" />
+        </xs:annotation>
+      </xs:element>
       <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:complexType>
 
   <xs:complexType name="eCirculations">
     <xs:sequence>
-      <xs:element name="circulation" type="rail:tCirculation" maxOccurs="unbounded" />
+      <xs:element name="circulation" type="rail:tCirculation" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="https://wiki2.railml.org/wiki/TT:circulation" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
 
diff --git a/schema/timetableTypes.xsd b/schema/timetableTypes.xsd
index cd71051..a5781b0 100644
--- a/schema/timetableTypes.xsd
+++ b/schema/timetableTypes.xsd
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
   <!-- $Id$ -->
-<xs:schema xmlns:rail="https://www.railml.org/schemas/2011" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2011" elementFormDefault="qualified" version="2.1">
+<xs:schema xmlns:rail="https://www.railml.org/schemas/2013" xmlns:xs="https://www.w3.org/2001/XMLSchema" xmlns:xml="https://www.w3.org/XML/1998/namespace" targetNamespace="https://www.railml.org/schemas/2013" elementFormDefault="qualified" version="2.2">
 
   <xs:annotation>
     <xs:documentation>Copyright (c) railML.org; All Rights Reserved.</xs:documentation>
-    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://creativecommons.org/licenses/by/2.0/</xs:documentation>
+    <xs:documentation>This work is licensed under a Creative Commons Attribution 2.0 License. https://www.railml.org/index.php/license.html</xs:documentation>
     <xs:documentation>For further information see: https://www.railml.org/</xs:documentation>
-    <xs:documentation>Content of this file: XML Schema for railML(R) 2.0 Definition of attribute groups, simple and complex types, used by timetable sub schema (TT)</xs:documentation>
+    <xs:documentation>Content of this file: XML Schema for railML(R) 2.2 Definition of attribute groups, simple and complex types, used by timetable sub schema (TT)</xs:documentation>
   </xs:annotation>
 
   <xs:include schemaLocation="railwayUnits.xsd" />
@@ -42,7 +42,11 @@
 
   <xs:attributeGroup name="aServicePeriod">
     <xs:attributeGroup ref="rail:aTimePeriod" />
-    <xs:attribute name="bitMask" type="rail:tBitMask" />
+    <xs:attribute name="bitMask" type="rail:tBitMask">
+      <xs:annotation>
+        <xs:documentation>a sequence of 1 and 0 for every day of the timetable period, indicating that the train runs or runs not on this specific date</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:attributeGroup>
 
   <xs:complexType name="tSpecialService">
@@ -107,40 +111,81 @@
   </xs:complexType>
 
   <xs:attributeGroup name="aFormationTT">
-    <xs:attribute name="formationRef" type="rail:tGenericRef" />
-    <xs:attribute name="weight" type="rail:tWeightTons" />
+    <xs:attribute name="formationRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>refers to the id attribute of the associated formation element</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="weight" type="rail:tWeightTons">
+      <xs:annotation>
+        <xs:documentation>real weight of the formation while in use</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="load" type="rail:tWeightTons">
       <xs:annotation>
         <xs:documentation>weight without engine</xs:documentation>
       </xs:annotation>
     </xs:attribute>
-    <xs:attribute name="length" type="rail:tLengthM" />
-    <xs:attribute name="speed" type="rail:tSpeedKmPerHour" />
+    <xs:attribute name="length" type="rail:tLengthM">
+      <xs:annotation>
+        <xs:documentation>the real length of the formation while in use</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="speed" type="rail:tSpeedKmPerHour">
+      <xs:annotation>
+        <xs:documentation>the real maximum speed of the formation while in use</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="timetableLoad" type="rail:tWeightTons">
       <xs:annotation>
         <xs:documentation>assumed load (without engine) for timetable planning</xs:documentation>
       </xs:annotation>
     </xs:attribute>
+    <xs:attribute name="orientationReversed" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>indicates, that the formation is not as referenced but in the reversed order</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attributeGroup ref="rail:anyAttribute" />
   </xs:attributeGroup>
 
+  <xs:complexType name="tPlacesTT">
+    <xs:annotation>
+      <xs:documentation>description of any places of the passenger car(part)</xs:documentation>
+    </xs:annotation>
+    <xs:attributeGroup ref="rail:aPlaces" />
+    <xs:attribute name="reservation" type="rail:tPlaceReservation">
+      <xs:annotation>
+        <xs:documentation>is needed to define a mandatory reservation for "places" in general and for bicycles in special</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:complexType>
+
   <xs:complexType name="tEquipment">
     <xs:attributeGroup ref="rail:aEquipment" />
   </xs:complexType>
 
   <xs:attributeGroup name="aEquipment">
-    <xs:attribute name="type" type="rail:tNationalSystemsType" />
+    <xs:attribute name="type" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>use value from the separate code definition file 'TrainProtectionSystems.xml'/trainProtectionSystemsOnVehicle</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="uses" type="xs:boolean" />
     <xs:attribute name="description" type="xs:string" />
     <xs:attributeGroup ref="rail:anyAttribute" />
   </xs:attributeGroup>
 
-  <xs:complexType name="tBrakeUsage">
-    <xs:attributeGroup ref="rail:aBrakeUsage" />
+  <xs:complexType name="tEtcsTT">
+    <xs:attributeGroup ref="rail:aETCS" />
   </xs:complexType>
 
   <xs:attributeGroup name="aBrakeUsage">
-    <xs:attribute name="brakePercentage" type="rail:tBrakePercentage" />
+    <xs:attribute name="brakePercentage" type="rail:tBrakePercentage">
+      <xs:annotation>
+        <xs:documentation>DEPRECATED: so far used uncertain value, specific values should now be used instead"</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="regularBrakePercentage" type="rail:tBrakePercentage">
       <xs:annotation>
         <xs:documentation>to be used instead of the uncertain "brakePercentage" as specific value for the regular case"</xs:documentation>
@@ -182,6 +227,16 @@
     <xs:attribute name="categoryPriority" type="xs:string" />
   </xs:attributeGroup>
 
+  <xs:complexType name="tAnnotation">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithIDAndName">
+        <xs:attributeGroup ref="rail:aAnnotation" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:attributeGroup name="aAnnotation" />
+
   <xs:complexType name="tTrainPart">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithIDAndName">
@@ -225,6 +280,11 @@
     <xs:attribute name="additionalTrainNumber" type="xs:string" />
     <xs:attribute name="scope" type="rail:tTrainScope" />
     <xs:attribute name="processStatus" type="rail:tProcessStatus" />
+    <xs:attribute name="remarks" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>a free attribute for further descriptions</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:attributeGroup>
 
   <xs:complexType name="tTrainGroup">
@@ -241,18 +301,6 @@
     <xs:attribute name="processStatus" type="rail:tProcessStatus" />
   </xs:attributeGroup>
 
-  <xs:complexType name="tTrainRef">
-    <xs:complexContent>
-      <xs:extension base="rail:tElementWithReference">
-        <xs:attributeGroup ref="rail:aTrainRef" />
-      </xs:extension>
-    </xs:complexContent>
-  </xs:complexType>
-
-  <xs:attributeGroup name="aTrainRef">
-    <xs:attribute name="sequence" type="rail:tPositiveCounter" use="required" />
-  </xs:attributeGroup>
-
   <xs:complexType name="tTrainPartSequence">
     <xs:attributeGroup ref="rail:aTrainPartSequence" />
   </xs:complexType>
@@ -280,10 +328,23 @@
     <xs:attribute name="position" type="rail:tPositiveCounter" />
   </xs:attributeGroup>
 
+  <xs:complexType name="tSpeedProfileRef">
+    <xs:annotation>
+      <xs:documentation>a reference to one of several speed profiles.</xs:documentation>
+    </xs:annotation>
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithReference" />
+    </xs:complexContent>
+  </xs:complexType>
+
   <xs:complexType name="tOperatingPeriodRef">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithReference">
-        <xs:attributeGroup ref="rail:aOperatingPeriodRef" />
+        <xs:attributeGroup ref="rail:aOperatingPeriodRef">
+          <xs:annotation>
+            <xs:documentation>DEPRECATED: use restricted operating period instead.</xs:documentation>
+          </xs:annotation>
+        </xs:attributeGroup>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
@@ -297,28 +358,74 @@
   </xs:complexType>
 
   <xs:attributeGroup name="aOcpTT">
-    <xs:attribute name="ocpRef" type="rail:tGenericRef" use="required" />
-    <xs:attribute name="trackRef" type="rail:tGenericRef" />
-    <xs:attribute name="trackInfo" type="xs:string" />
-    <xs:attribute name="ocpType" type="rail:tOcpTTType" />
-    <xs:attribute name="remarks" type="xs:string" />
-    <xs:attribute name="trainReverse" type="xs:boolean" />
-    <xs:attribute name="alignment" type="rail:tTrainAlignment" />
-    <xs:attribute name="offset" type="rail:tLengthM" />
-    <xs:attribute name="shuntingTime" type="xs:duration" />
+    <xs:attribute name="sequence" type="rail:tPositiveCounter">
+      <xs:annotation>
+        <xs:documentation>defines explicitly the order of the ocpTTs which are supposed to be in chronological order along the train path</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="ocpRef" type="rail:tGenericRef" use="required">
+      <xs:annotation>
+        <xs:documentation>refers to the id attribute of the associated ocp element</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="trackRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>refers to the id attribute of the associated track element</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="trackInfo" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>is a description of the station track, often used for the platform number</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="ocpType" type="rail:tOcpTTType">
+      <xs:annotation>
+        <xs:documentation>describes if the train is going to stop/pass</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="remarks" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>a free attribute for further descriptions</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="trainReverse" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>is true if the train changes its direction of travel at this station. After this station the rollingstock which is referenced in formationTT changes its order</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="alignment" type="rail:tTrainAlignment">
+      <xs:annotation>
+        <xs:documentation>describes the alignment of the arriving train in relation to the point on a track referenced by ocpRef</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="offset" type="rail:tLengthM">
+      <xs:annotation>
+        <xs:documentation>describes the offset of the stopping point in relation to the point on a track referenced by ocpRef</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="shuntingTime" type="xs:duration">
+      <xs:annotation>
+        <xs:documentation>is the driving time used inside a station</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attributeGroup ref="rail:anyAttribute" />
   </xs:attributeGroup>
 
   <xs:complexType name="tArrivalDepartureTimes">
     <xs:attributeGroup ref="rail:aTimesScope" />
     <xs:attributeGroup ref="rail:aArrivalDepartureTimes" />
+    <xs:attributeGroup ref="rail:anyAttribute">
+      <xs:annotation>
+        <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+      </xs:annotation>
+    </xs:attributeGroup>
   </xs:complexType>
 
   <xs:attributeGroup name="aArrivalDepartureTimes">
     <xs:attribute name="arrival" type="xs:time" />
-    <xs:attribute name="arrivalDay" type="xs:integer" />
+    <xs:attribute name="arrivalDay" type="xs:integer" default="0" />
     <xs:attribute name="departure" type="xs:time" />
-    <xs:attribute name="departureDay" type="xs:integer" />
+    <xs:attribute name="departureDay" type="xs:integer" default="0" />
   </xs:attributeGroup>
 
   <xs:attributeGroup name="aTimesScope">
@@ -346,13 +453,48 @@
     <xs:attribute name="minConnTime" type="xs:duration" />
     <xs:attribute name="maxConnTime" type="xs:duration" />
     <xs:attribute name="connOperation" type="rail:tConnOperation" />
+    <xs:attribute name="connType" type="rail:tConnType">
+      <xs:annotation>
+        <xs:documentation>the reason for the connection (de: fahrplantechnische Bindung)</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="ocpRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>refers to an ocp element, in case the referenced train is located on a different ocp nearby</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="trainPartRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>refers to a trainPart element, which is more specific than the trainRef</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attributeGroup ref="rail:anyAttribute" />
   </xs:attributeGroup>
 
+  <xs:complexType name="tAnnotationText">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute ref="xml:lang">
+          <xs:annotation>
+            <xs:documentation>natural language identification according to https://www.w3.org/TR/xml/#sec-lang-tag</xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attributeGroup ref="rail:anyAttribute">
+          <xs:annotation>
+            <xs:documentation>provide an extension point for non-railML attributes in foreign namespace</xs:documentation>
+          </xs:annotation>
+        </xs:attributeGroup>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  
   <xs:complexType name="tStatistic">
     <xs:attributeGroup ref="rail:aStatistic" />
   </xs:complexType>
 
-  <xs:attributeGroup name="aStatistic" />
+  <xs:attributeGroup name="aStatistic">
+    <xs:attributeGroup ref="rail:anyAttribute" />
+  </xs:attributeGroup>
 
   <xs:complexType name="tStatisticTimes">
     <xs:attributeGroup ref="rail:aArrivalDepartureTimes" />
@@ -392,12 +534,13 @@
     <xs:attribute name="remarks" type="xs:string" />
     <xs:attribute name="percentageSupplement" type="xs:decimal" />
     <xs:attribute name="distance" type="rail:tLengthM" />
+    <xs:attributeGroup ref="rail:anyAttribute" />
   </xs:attributeGroup>
 
   <xs:complexType name="tTrackRef">
     <xs:complexContent>
       <xs:extension base="rail:tElementWithReference">
-        <xs:attribute name="dir" type="rail:tLaxDirection">
+        <xs:attribute name="dir" type="rail:tStrictDirection">
           <xs:annotation>
             <xs:documentation>driving direction in relation to track definition direction</xs:documentation>
           </xs:annotation>
@@ -406,6 +549,34 @@
     </xs:complexContent>
   </xs:complexType>
 
+  <xs:complexType name="tPlatformEdgeRef">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithReference" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tServiceSectionRef">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithReference" />
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="tAnnotationRef">
+    <xs:complexContent>
+      <xs:extension base="rail:tElementWithReference">
+        <xs:attributeGroup ref="rail:aAnnotationRef" />
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:attributeGroup name="aAnnotationRef">
+    <xs:attribute name="operatingPeriodRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>references a reduction of the operating days of the annotation, must be a subset of the parents operating days</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+  </xs:attributeGroup>
+
   <xs:complexType name="tRunTimes">
     <xs:attributeGroup ref="rail:aRunTimes" />
   </xs:complexType>
@@ -422,11 +593,46 @@
   </xs:complexType>
 
   <xs:attributeGroup name="aStopDescription">
-    <xs:attribute name="commercial" type="xs:boolean" />
-    <xs:attribute name="stopOnRequest" type="xs:boolean" />
-    <xs:attribute name="onOff" type="rail:tOnOff" />
-    <xs:attribute name="purpose" type="xs:string" />
-    <xs:attribute name="operatingPeriodRef" type="rail:tGenericRef" />
+    <xs:attribute name="commercial" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>characterizes the stop as either commercial or operational stop</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="stopOnRequest" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>a commercial stop, depending on a certain demand</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="onOff" type="rail:tOnOff">
+      <xs:annotation>
+        <xs:documentation>describes, if passengers/goods are not supposed to enter or leave the train</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="purpose" type="xs:string">
+      <xs:annotation>
+        <xs:documentation>describes the reason for the stop in a detailed but not predefined way</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="guaranteedPass" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>indicates a forbidden stop for heavy goods trains</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="operationalStopOrdered" type="xs:boolean">
+      <xs:annotation>
+        <xs:documentation>the stop is requested by the infrastructure manager</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="operatingPeriodRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>references a reduction of the operating days of the stop compared to the operating days of the train part</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="stopPostRef" type="rail:tGenericRef">
+      <xs:annotation>
+        <xs:documentation>refers to the id attribute of the associated stop post element</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:attributeGroup>
 
   <xs:complexType name="tRostering">
@@ -455,12 +661,12 @@
     </xs:attribute>
     <xs:attribute name="defaultPreProcessingTime" type="xs:duration">
       <xs:annotation>
-        <xs:documentation>default duration from the beginning of blocking of the ressource until start of blockPart</xs:documentation>
+        <xs:documentation>default duration from the beginning of blocking of the resource until start of blockPart</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="defaultPostProcessingTime" type="xs:duration">
       <xs:annotation>
-        <xs:documentation>default duration from the end of blockPart until the end of blocking of the ressource</xs:documentation>
+        <xs:documentation>default duration from the end of blockPart until the end of blocking of the resource</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="scope" type="rail:tRosteringScope">
@@ -489,19 +695,19 @@
 
   <xs:attributeGroup name="aBlockPartSequence">
     <xs:attribute name="sequence" type="rail:tPositiveCounter" use="required" />
-    <xs:attribute name="dayOffset" type="rail:tCounter">
+    <xs:attribute name="dayOffset" type="rail:tCounter" default="0">
       <xs:annotation>
         <xs:documentation>defines the day the blockPart starts if the block runs over midnight (even if it is not longer than 24 hours); first day and default value is 0</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="preProcessingTime" type="xs:duration">
       <xs:annotation>
-        <xs:documentation>duration from the beginning of blocking of the ressource until start of blockPart</xs:documentation>
+        <xs:documentation>duration from the beginning of blocking of the resource until start of blockPart</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="postProcessingTime" type="xs:duration">
       <xs:annotation>
-        <xs:documentation>duration from the end of blockPart until the end of blocking of the ressource</xs:documentation>
+        <xs:documentation>duration from the end of blockPart until the end of blocking of the resource</xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name="basicBlockRef" type="rail:tGenericRef" />
@@ -524,9 +730,9 @@
 
   <xs:attributeGroup name="aBlockPart">
     <xs:attribute name="begin" type="xs:time" />
-    <xs:attribute name="beginDay" type="xs:integer" />
+    <xs:attribute name="beginDay" type="xs:integer" default="0" />
     <xs:attribute name="end" type="xs:time" />
-    <xs:attribute name="endDay" type="xs:integer" />
+    <xs:attribute name="endDay" type="xs:integer" default="0" />
     <xs:attribute name="startOcpRef" type="rail:tGenericRef" />
     <xs:attribute name="endOcpRef" type="rail:tGenericRef" />
     <xs:attribute name="trainPartRef" type="rail:tGenericRef" />
@@ -564,10 +770,20 @@
         <xs:documentation>for abstract circulations without start/endDate</xs:documentation>
       </xs:annotation>
     </xs:attribute>
+    <xs:attribute name="vehicleCounter" type="rail:tCounter">
+      <xs:annotation>
+        <xs:documentation>indicating the right vehicle number (de: Fahrzeugnummer) within the circulations</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="vehicleGroupCounter" type="rail:tCounter">
+      <xs:annotation>
+        <xs:documentation>indicating the right vehicle group number (de: Gruppennummer) within the circulations</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
     <xs:attribute name="nextBlockRef" type="rail:tGenericRef" />
     <xs:attribute name="nextOperatingPeriodRef" type="rail:tGenericRef">
       <xs:annotation>
-        <xs:documentation>there has to be an information to which operation day of the next block the current block should be linked to. A vehicle can make a standstill for serveral days but the defined next block inside of the cirulation may run every day</xs:documentation>
+        <xs:documentation>there has to be an information to which operation day of the next block the current block should be linked to. A vehicle can make a standstill for several days but the defined next block inside of the circulation may run every day</xs:documentation>
       </xs:annotation>
     </xs:attribute>
   </xs:attributeGroup>
@@ -717,6 +933,20 @@
     </xs:restriction>
   </xs:simpleType>
 
+  <xs:simpleType name="tConnType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="commercial" />
+          <xs:enumeration value="operational" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
   <xs:simpleType name="tTrainType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="operational" />
@@ -726,16 +956,24 @@
 
   <xs:simpleType name="tOcpTTType">
     <xs:restriction base="xs:string">
-      <xs:enumeration value="stop" />
-      <xs:enumeration value="pass" />
+      <xs:enumeration value="stop">
+        <xs:annotation>
+          <xs:documentation>indicates that the train is going to stop at this ocp</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="pass">
+        <xs:annotation>
+          <xs:documentation>indicates that the train is NOT going to stop at this ocp</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
       <xs:enumeration value="begin">
         <xs:annotation>
-          <xs:documentation>possible for the first ocp, if train part begins at this ocp and is not part of a longer train path</xs:documentation>
+          <xs:documentation>DEPRECATED: possible for the first ocp, if train part begins at this ocp and is not part of a longer train path</xs:documentation>
         </xs:annotation>
       </xs:enumeration>
       <xs:enumeration value="end">
         <xs:annotation>
-          <xs:documentation>possible for the last ocp, if train part ends at this ocp and is not part of a longer train path</xs:documentation>
+          <xs:documentation>DEPRECATED: possible for the last ocp, if train part ends at this ocp and is not part of a longer train path</xs:documentation>
         </xs:annotation>
       </xs:enumeration>
     </xs:restriction>
@@ -800,4 +1038,21 @@
       </xs:simpleType>
     </xs:union>
   </xs:simpleType>
+
+  <xs:simpleType name="tPlaceReservation">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="notPossible" />
+          <xs:enumeration value="possible" />
+          <xs:enumeration value="recommended" />
+          <xs:enumeration value="compulsory" />
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="rail:tOtherEnumerationValue" />
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
 </xs:schema>