Structure d'un message SOAP

Un message SOAP est codé en tant que document XML, composé d'un<Envelope>, qui contient un élément facultatif<Header>Un élément et un élément obligatoire<Body>. Le<Fault>élément, contenu dans<Body>, est utilisé pour signaler les erreurs.

L'enveloppe SOAP
<Envelope>Est l'élément racine de chaque message SOAP et contient deux éléments enfant, un élément facultatif<Header>Un élément et un élément obligatoire<Body>.
En-tête SOAP
<Header>Est un sous-élément facultatif de l'enveloppe SOAP et est utilisé pour transmettre les informations relatives à l'application qui doivent être traitées par les noeuds SOAP le long du chemin de message ; voir En-tête SOAP.
Le corps SOAP
<Body>Est un sous-élément obligatoire de l'enveloppe SOAP, qui contient les informations destinées au destinataire final du message ; voir Le corps SOAP.
La faute SOAP
<Fault>Est un sous-élément du corps SOAP, qui est utilisé pour signaler les erreurs ; voir La faute SOAP.

Eléments XML dans<Header>et<Body>Sont définis par les applications qui les utilisent, bien que la spécification SOAP impose certaines contraintes à leur structure. Le diagramme suivant illustre la structure d'un message SOAP.

Le diagramme illustre l'enveloppe SOAP comme conteneur pour l'en-tête SOAP et le corps SOAP.

Le code suivant est un exemple de message SOAP qui contient des blocs d'en-tête (<m:reservation>et<n:passenger>) et un corps (contenant le<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>