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

  <xs:import namespace="http://www.w3.org/2001/04/xmlenc#"/>
  <xs:import namespace="urn:3gpp:ns:mcpttGKTP:1.0"/>

  <!-- root XML element -->
  <xs:element name="mpcttinfo" type="mcpttinfo:mcpttinfo-Type" id="info"/>

  <xs:complexType name="mcpttinfo-Type">
    <xs:sequence>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="anyExt" type="mcpttinfo:anyExtType" minOccurs="0"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType> 

  <xs:element name="mcptt-Params" type="mcpttinfo:mcptt-ParamsType"/>

  <xs:complexType name="mcptt-ParamsType">
    <xs:sequence>
      <xs:element name="mcptt-access-token" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="session-type" type="xs:string" minOccurs="0"/>
      <xs:element name="mcptt-request-uri" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="mcptt-calling-user-id" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="mcptt-called-party-id" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="mcptt-calling-group-id" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="required" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="emergency-ind" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="alert-ind" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="imminentperil-ind" type="xs:boolean" minOccurs="0"/>
      <xs:element name="broadcast-ind" type="xs:boolean" minOccurs="0"/>
      <xs:element name="mc-org" type="xs:string" minOccurs="0"/>
      <xs:element name="floor-state" type="xs:string" minOccurs="0"/>
      <xs:element name="associated-group-id" type="xs:string" minOccurs="0"/>
      <xs:element name="originated-by" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:element name="MKFC-GKTPs" type="mgktp:singleTypeGKTPType" minOccurs="0"/>
      <xs:element name="mcptt-client-id" type="mcpttinfo:contentType" minOccurs="0"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="anyExt" type="mcpttinfo: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="contentType">
    <xs:choice>
      <xs:element name="mcpttURI" type="xs:anyURI"/>
      <xs:element name="mcpttString" type="xs:string"/>
      <xs:element name="mcpttBoolean" type="xs:boolean"/>
      <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="anyExtType">
    <xs:sequence>
      <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>