6 Appendix A: application/msrtc-reporterror+xml Schema

Following is the XML schema of the application/msrtc-reporterror+xml error report document.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema
    targetNamespace="http://schemas.microsoft.com/2006/09/sip/error-reporting"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"   
    xmlns="http://schemas.microsoft.com/2006/09/sip/error-reporting"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="ProgressReportType">
        <xs:sequence>
            <xs:element name="diagHeader" type="xs:string" 
                        minOccurs="1" maxOccurs="1">
            </xs:element>
            <xs:any namespace="##other" processContents="lax"
                    minOccurs="0" maxOccurs="unbounded">
            </xs:any>
        </xs:sequence>
        <xs:anyAttribute namespace="##other" processContents="lax">
        </xs:anyAttribute>
  </xs:complexType>
  <xs:complexType name="ProgressReportsType">
      <xs:sequence>
          <xs:element name="progressReport" type="ProgressReportType"
                      minOccurs="0" maxOccurs="unbounded">
          </xs:element>
          <xs:any namespace="##other" processContents="lax"
                  minOccurs="0" maxOccurs="unbounded">
          </xs:any>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax">
      </xs:anyAttribute>
  </xs:complexType>
  <xs:complexType name="ErrorType">
      <xs:sequence>
          <xs:element name="diagHeader" type="xs:string"
                      minOccurs="0" maxOccurs="unbounded">
          </xs:element>
          <xs:element name="progressReports" type="ProgressReportsType" 
                      minOccurs="1" maxOccurs="1">
          </xs:element>
          <xs:any namespace="##other" processContents="lax"
                  minOccurs="0" maxOccurs="unbounded">
          </xs:any>
      </xs:sequence>
   <xs:attribute name="fromUri" type="xs:string" use="optional"> 
      </xs:attribute>
      <xs:attribute name="toUri" type="xs:string" use="optional">
      </xs:attribute>
      <xs:attribute name="callId" type="xs:string" use="required">
      </xs:attribute>
      <xs:attribute name="fromTag" type="xs:string" use="optional">
      </xs:attribute>
      <xs:attribute name="toTag" type="xs:string" use="optional">
      </xs:attribute>
      <xs:attribute name="requestType" type="xs:string" use="required">
      </xs:attribute>
      <xs:attribute name="responseCode" type="xs:unsignedInt" 
                    use="required">
      </xs:attribute>
      <xs:attribute name="contentType" type="xs:string" use="optional">
      </xs:attribute>
      <xs:anyAttribute namespace="##other" processContents="lax">
      </xs:anyAttribute>
  </xs:complexType>
  <xs:complexType name="ReportErrorType">
      <xs:sequence>
          <xs:element name="error" type="ErrorType"
                      minOccurs="1"  maxOccurs="1">
          </xs:element>
          <xs:any namespace="##other" processContents="lax"
                  minOccurs="0" maxOccurs="unbounded">
          </xs:any>
      </xs:sequence>
      <xs:anyAttribute namespace="##other" processContents="lax">
      </xs:anyAttribute>
  </xs:complexType>
  <xs:element name="reportError" type="ReportErrorType">
  </xs:element>
</xs:schema>