<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mcpttloc="urn:3gpp:ns:mcpttLocationInfo:1.0" targetNamespace="urn:3gpp:ns:mcpttLocationInfo:1.0" elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">

	<xs:import namespace="http://www.w3.org/2001/04/xmlenc#"/>

	<xs:element name="location-info" id="loc">
		<xs:annotation>
			<xs:documentation>Root element, contains all information related to location configuration, location request and location reporting for the MCPTT service</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:choice>
				<xs:element name="Configuration" type="mcpttloc:tConfigurationType"/>
				<xs:element name="Request" type="mcpttloc:tRequestType"/>
				<xs:element name="Report" type="mcpttloc:tReportType"/>
				<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
			</xs:choice>
			<xs:anyAttribute namespace="##any" processContents="lax"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="tConfigurationType">
		<xs:sequence>
			<xs:element name="NonEmergencyLocationInformation" type="mcpttloc:tRequestedLocationType" minOccurs="0"/>
			<xs:element name="EmergencyLocationInformation" type="mcpttloc:tRequestedLocationType" minOccurs="0"/>
			<xs:element name="TriggeringCriteria" type="mcpttloc:TriggeringCriteriaType"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ConfigScope">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="Full"/>
					<xs:enumeration value="Update"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tRequestType">
		<xs:complexContent>
			<xs:extension base="mcpttloc:tEmptyType">
				<xs:attribute name="RequestId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="tReportType">
		<xs:sequence>
			<xs:element name="TriggerId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="CurrentLocation" type="mcpttloc:tCurrentLocationType"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ReportID" type="xs:string" use="optional"/>
		<xs:attribute name="ReportType" use="required">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="Emergency"/>
					<xs:enumeration value="NonEmergency"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="TriggeringCriteriaType">
		<xs:sequence>
			<xs:element name="CellChange" type="mcpttloc:tCellChange" minOccurs="0"/>
			<xs:element name="TrackingAreaChange" type="mcpttloc:tTrackingAreaChangeType" minOccurs="0"/>
			<xs:element name="PlmnChange" type="mcpttloc:tPlmnChangeType" minOccurs="0"/>
			<xs:element name="MbmsSaChange" type="mcpttloc:tMbmsSaChangeType" minOccurs="0"/>
			<xs:element name="MbsfnAreaChange" type="mcpttloc:tMbsfnAreaChangeType" minOccurs="0"/>
			<xs:element name="PeriodicReport" type="mcpttloc:tIntegerAttributeType" minOccurs="0"/>
			<xs:element name="TravelledDistance" type="mcpttloc:tIntegerAttributeType" minOccurs="0"/>
			<xs:element name="McpttSignallingEvent" type="mcpttloc:tSignallingEventType" minOccurs="0"/>
			<xs:element name="GeographicalAreaChange" type="mcpttloc:tGeographicalAreaChange"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tCellChange">
		<xs:sequence>
			<xs:element name="AnyCellChange" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="EnterSpecificCell" type="mcpttloc:tSpecificCellType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="ExitSpecificCell" type="mcpttloc:tSpecificCellType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tEmptyType"/>
	<xs:simpleType name="tEcgi">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{3}\d{3}[0-1]{28}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="tSpecificCellType">
		<xs:simpleContent>
			<xs:extension base="mcpttloc:tEcgi">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="tEmptyTypeAttribute">
		<xs:complexContent>
			<xs:extension base="mcpttloc:tEmptyType">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="tTrackingAreaChangeType">
		<xs:sequence>
			<xs:element name="AnyTrackingAreaChange" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="EnterSpecificTrackingArea" type="mcpttloc:tTrackingAreaIdentity" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="ExitSpecificTrackingArea" type="mcpttloc:tTrackingAreaIdentity" minOccurs="0" maxOccurs="unbounded"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:simpleType name="tTrackingAreaIdentityFormat">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{3}\d{3}[0-1]{16}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="tTrackingAreaIdentity">
		<xs:simpleContent>
			<xs:extension base="mcpttloc:tTrackingAreaIdentityFormat">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="tPlmnChangeType">
		<xs:sequence>
			<xs:element name="AnyPlmnChange" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="EnterSpecificPlmn" type="mcpttloc:tPlmnIdentity" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="ExitSpecificPlmn" type="mcpttloc:tPlmnIdentity" minOccurs="0" maxOccurs="unbounded"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:simpleType name="tPlmnIdentityFormat">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{3}\d{3}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="tPlmnIdentity">
		<xs:simpleContent>
			<xs:extension base="mcpttloc:tPlmnIdentityFormat">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="tMbmsSaChangeType">
		<xs:sequence>
			<xs:element name="AnyMbmsSaChange" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="EnterSpecificMbmsSa" type="mcpttloc:tMbmsSaIdentity" minOccurs="0"/>
			<xs:element name="ExitSpecificMbmsSa" type="mcpttloc:tMbmsSaIdentity" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:simpleType name="tMbmsSaIdentityFormat">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="65535"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="tMbmsSaIdentity">
		<xs:simpleContent>
			<xs:extension base="mcpttloc:tMbmsSaIdentityFormat">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="tMbsfnAreaChangeType">
		<xs:sequence>
			<xs:element name="EnterSpecificMbsfnArea" type="mcpttloc:tMbsfnAreaIdentity" minOccurs="0"/>
			<xs:element name="ExitSpecificMbsfnArea" type="mcpttloc:tMbsfnAreaIdentity" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:simpleType name="tMbsfnAreaIdentityFormat">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="255"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="tMbsfnAreaIdentity">
		<xs:simpleContent>
			<xs:extension base="mcpttloc:tMbsfnAreaIdentityFormat">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="tIntegerAttributeType">
		<xs:simpleContent>
			<xs:extension base="xs:integer">
				<xs:attribute name="TriggerId" type="xs:string" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="tTravelledDistanceType">
		<xs:sequence>
			<xs:element name="TravelledDistance" type="xs:positiveInteger"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tSignallingEventType">
		<xs:sequence>
			<xs:element name="InitialLogOn" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="GroupCallNonEmergency" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="PrivateCallNonEmergency" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="LocationConfigurationReceived" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type=" mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tEmergencyEventType">
		<xs:sequence>
			<xs:element name="GroupCallEmergency" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="GroupCallImminentPeril" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="PrivateCallEmergency" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="InitiateEmergencyAlert" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tRequestedLocationType">
		<xs:sequence>
			<xs:element name="ServingEcgi" type="mcpttloc:tEmptyType" minOccurs="0"/>
			<xs:element name="NeighbouringEcgi" type="mcpttloc:tEmptyType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="MbmsSaId" type="mcpttloc:tEmptyType" minOccurs="0"/>
			<xs:element name="MbsfnArea" type="mcpttloc:tEmptyType" minOccurs="0"/>
			<xs:element name="GeographicalCoordinate" type="mcpttloc:tEmptyType" minOccurs="0"/>
			<xs:element name="minimumIntervalLength" type="xs:positiveInteger"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>

	<xs:complexType name="tCurrentLocationType">
		<xs:sequence>
			<xs:element name="CurrentServingEcgi" type="mcpttloc:tLocationType" minOccurs="0"/>
			<xs:element name="NeighbouringEcgi" type="mcpttloc:tLocationType" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="MbmsSaId" type="mcpttloc:tLocationType" minOccurs="0"/>
			<xs:element name="MbsfnArea" type="mcpttloc:tLocationType" minOccurs="0"/>
			<xs:element name="CurrentCoordinate" type="mcpttloc:tPointCoordinate" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>

	<xs:simpleType name="protectionType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Normal"/>
			<xs:enumeration value="Encrypted"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="tLocationType">
		<xs:choice minOccurs="1" maxOccurs="1">
			<xs:element name="Ecgi" type="mcpttloc:tEcgi" minOccurs="0"/>
			<xs:element name="SaId" type="mcpttloc:tMbmsSaIdentity" minOccurs="0"/>
			<xs:element name="MbsfnAreaId" type="mcpttloc:tMbsfnAreaIdentity" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax"/>
			<xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0"/>
		</xs:choice>
		<xs:attribute name="type" type="protectionType"/>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>

	<xs:complexType name="tGeographicalAreaChange">
		<xs:sequence>
			<xs:element name="AnyAreaChange" type="mcpttloc:tEmptyTypeAttribute" minOccurs="0"/>
			<xs:element name="EnterSpecificAreaType" type="mcpttloc:tSpecificAreaType" minOccurs="0"/>
			<xs:element name="ExitSpecificAreaType" type="mcpttloc:tSpecificAreaType" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tSpecificAreaType">
		<xs:sequence>
			<xs:element name="GeographicalArea" type="mcpttloc:tGeographicalAreaDef"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="TriggerId" type="xs:string" use="required"/>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>

	<xs:complexType name="tPointCoordinate">
		<xs:sequence>
			<xs:element name="longitude" type="mcpttloc:tCoordinate"/>
			<xs:element name="latitude" type="mcpttloc:tCoordinate"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>

	<xs:complexType name="tCoordinateType">
		<xs:choice minOccurs="1" maxOccurs="1">
			<xs:element name="threebytes" type="mcpttloc:tThreeByteType" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax"/>
			<xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0"/>
		</xs:choice>
		<xs:attribute name="type" type="protectionType"/>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>

	<xs:simpleType name="tThreeByteType">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="16777215"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="tGeographicalAreaDef">
		<xs:sequence>
			<xs:element name="PolygonArea" type="mcpttloc:tPolygonAreaType" minOccurs="0"/>
			<xs:element name="EllipsoidArcArea" type="mcpttloc:tEllipsoidArcType" minOccurs="0"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tPolygonAreaType">
		<xs:sequence>
			<xs:element name="Corner" type="mcpttloc:tPointCoordinate" minOccurs="3" maxOccurs="15"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="tEllipsoidArcType">
		<xs:sequence>
			<xs:element name="Center" type="mcpttloc:tPointCoordinate"/>
			<xs:element name="Radius" type="xs:nonNegativeInteger"/>
			<xs:element name="OffsetAngle" type="xs:unsignedByte"/>
			<xs:element name="IncludedAngle" type="xs:unsignedByte"/>
			<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="anyExt" type="mcpttloc:anyExtType" minOccurs="0"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<xs:complexType name="anyExtType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>

