<?xml version='1.0' encoding='UTF-8'?>

<xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    targetNamespace='urn:xmpp:jingle:transports:s5b:1'
    xmlns='urn:xmpp:jingle:transports:s5b:1'
    elementFormDefault='qualified'>

  <xs:annotation>
    <xs:documentation>
      The protocol documented by this schema is defined in
      XEP-0260: http://www.xmpp.org/extensions/xep-0260.html
    </xs:documentation>
  </xs:annotation>

  <xs:element name='transport'>
    <xs:complexType>
      <xs:choice>
        <xs:element ref='activated' 
                    minOccurs='0' maxOccurs='1'/>
        <xs:element ref='candidate' 
                    minOccurs='0' maxOccurs='unbounded'/>
        <xs:element name='candidate-error' 
                    minOccurs='0' maxOccurs='1' type='empty'/>
        <xs:element ref='candidate-used' 
                    minOccurs='0' maxOccurs='1'/>
        <xs:element name='proxy-error' 
                    minOccurs='0' maxOccurs='1' type='empty'/>
      </xs:choice>
      <xs:attribute name='dstaddr' use='optional' type='xs:string'/> 
      <xs:attribute name='mode' use='optional' default='tcp'>
        <xs:simpleType>
          <xs:restriction base='xs:NCName'>
            <xs:enumeration value='tcp'/>
            <xs:enumeration value='udp'/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name='sid' type='xs:string' use='optional'/>
    </xs:complexType>
  </xs:element>

  <xs:element name='candidate'>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base='empty'>
          <xs:attribute name='cid' 
                        type='xs:string' use='required'/>
          <xs:attribute name='host' 
                        type='xs:string' use='required'/>
          <xs:attribute name='jid' 
                        type='xs:string' use='required'/>
          <xs:attribute name='port' 
                        type='xs:positiveInteger' use='optional'/>
          <xs:attribute name='priority' 
                        type='xs:positiveInteger' use='required'/>
          <xs:attribute name='type' 
                        use='optional' default='direct'>
            <xs:simpleType>
              <xs:restriction base='xs:NCName'>
                <xs:enumeration value='assisted'/>
                <xs:enumeration value='direct'/>
                <xs:enumeration value='proxy'/>
                <xs:enumeration value='tunnel'/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name='candidate-used'>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base='empty'>
          <xs:attribute name='cid' type='xs:string' use='required'/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:element name='activated'>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base='empty'>
          <xs:attribute name='cid' type='xs:string' use='required'/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name='empty'>
    <xs:restriction base='xs:string'>
      <xs:enumeration value=''/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>

