La estructura de un mensaje SOAP

Un mensaje SOAP se codifica como un documento XML, que consta de un<Envelope>, que contiene un elemento opcional<Header>y un elemento obligatorio<Body>. El<Fault>elemento, contenido en<Body>, se utiliza para notificar errores.

El sobre SOAP
<Envelope>es el elemento raíz en cada mensaje SOAP y contiene dos elementos hijo, un valor opcional<Header>y un elemento obligatorio<Body>.
La cabecera SOAP
<Header>es un subelemento opcional del sobre SOAP y se utiliza para pasar información relacionada con la aplicación que debe procesar los nodos SOAP a lo largo de la vía de acceso del mensaje; consulte La cabecera SOAP.
El cuerpo SOAP
<Body>es un subelemento obligatorio del sobre SOAP, que contiene información destinada al destinatario final del mensaje; consulte El cuerpo SOAP.
El error SOAP
<Fault>es un subelemento del cuerpo SOAP, que se utiliza para notificar errores; consulte El error SOAP.

Elementos XML en<Header>y<Body>son definidas por las aplicaciones que hacen uso de ellas, aunque la especificación SOAP impone algunas restricciones en su estructura. En el siguiente diagrama se muestra la estructura de un mensaje SOAP.

El diagrama muestra el sobre SOAP como un contenedor para la cabecera SOAP y el cuerpo SOAP.

El código siguiente es un ejemplo de un mensaje SOAP que contiene bloques de cabecera (el<m:reservation>y<n:passenger>elementos) y un cuerpo (que contenga la<p:itinterary>).

<?xml version='1.0' Encoding='UTF-8' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
 <env:Header>
  <m:reservation xmlns:m="http://travelcompany.example.org/reservation" 
		env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
   <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
   <m:dateAndTime>2007-11-29T13:20:00.000-05:00</m:dateAndTime>
  </m:reservation>
  <n:passenger xmlns:n="http://mycompany.example.com/employees" 
		env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
   <n:name>Fred Bloggs</n:name>
  </n:passenger>
 </env:Header>
 <env:Body>
  <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel">
   <p:departure>
     <p:departing>New York</p:departing>
     <p:arriving>Los Angeles</p:arriving>
     <p:departureDate>2007-12-14</p:departureDate>
     <p:departureTime>late afternoon</p:departureTime>
     <p:seatPreference>aisle</p:seatPreference>
   </p:departure>
   <p:return>
     <p:departing>Los Angeles</p:departing>
     <p:arriving>New York</p:arriving>
     <p:departureDate>2007-12-20</p:departureDate>
     <p:departureTime>mid-morning</p:departureTime>
     <p:seatPreference></p:seatPreference>
   </p:return>
  </p:itinerary>
 </env:Body>
</env:Envelope>