diff --git a/schema/infrastructure.xsd b/schema/infrastructure.xsd
index 3a5a225122b959a459d104095c5ade31421be62d..008231a4b9464246569be2e2a7bfe7c9fbb8032b 100644
--- a/schema/infrastructure.xsd
+++ b/schema/infrastructure.xsd
@@ -140,6 +140,20 @@
   	  <xs:field xpath="@baliseGroupRef" />
   	</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:trainProtectionElementGroups/rail:trainProtectionElementGroup" />
+  	  <xs:field xpath="@id" />
+  	</xs:key>
+  	
   	<xs:key name="controllerKey">
   		<xs:selector xpath=".//rail:controllers/rail:controller" />
   		<xs:field xpath="@id" />
@@ -939,6 +953,11 @@
           <xs:documentation source="http://www.wiki.railml.org/index.php?title=IS:trainProtectionElement"/>
         </xs:annotation>
       </xs:element>
+      <xs:element name="trainProtectionElementGroup" type="rail:tTrainProtectionElementGroup" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation source="http://www.wiki.railml.org/index.php?title=IS:trainProtectionElementGroup" />
+        </xs:annotation>
+      </xs:element>
     </xs:sequence>
   </xs:complexType>
   
diff --git a/schema/infrastructureTypes.xsd b/schema/infrastructureTypes.xsd
index 7ec1cc89d4c3197844b99fb11e573281ae873131..7eb9d6a061a7f2c4c67b5423052236c90f6cbf44 100644
--- a/schema/infrastructureTypes.xsd
+++ b/schema/infrastructureTypes.xsd
@@ -694,6 +694,20 @@
       </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="http://www.wiki.railml.org/index.php?title=IS:trainProtectionElementRef" />
+            </xs:annotation>
+          </xs:element>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
 
   <xs:complexType name="tElectrification">
     <xs:attributeGroup ref="rail:aElectrification" />