<?xml version="1.0"?>
<!-- $Id: ws-addr-soap.xml,v 1.81 2005/06/21 17:12:25 mhadley Exp $ -->
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.1//EN" "xmlspec.dtd" [
<!ENTITY prefix "ws-addr-soap">
<!ENTITY % entities SYSTEM "entities.dtd" >
%entities;
<!ENTITY status SYSTEM "status.xml">
<!ENTITY document.status "Editors' copy $Date: 2005/06/21 17:12:25 $">
<!ENTITY wsa-title "&wsa-soap.title;">
<!ENTITY prevloc "http://www.w3.org/TR/2005/WD-ws-addr-soap-20050215">
]>
<?xml-stylesheet type='text/xsl' href='xmlspec-addressing.xsl'?>
<spec w3c-doctype="wd" role="&document.role;">
  <header>
    <title>&wsa-soap.title;</title>
    <w3c-designation>&w3c-designation-wsa-soap;</w3c-designation>
    <w3c-doctype>&document.status;</w3c-doctype>
    <pubdate>
      <day>&draft.day;</day>
      <month>&draft.month;</month>
      <year>&draft.year;</year>
    </pubdate>
    <publoc>
      <loc href="&w3c-designation-wsa-soap;">&w3c-designation-wsa-soap;</loc>
    </publoc> &altlocs; <prevlocs>
      <loc href="&prevloc;">&prevloc;</loc>
    </prevlocs>
    <latestloc>
      <loc href="&wsa-soap.latest;">&wsa-soap.latest;</loc>
    </latestloc>
    <authlist>
      <author>
        <name>Martin Gudgin</name>
        <affiliation>Microsoft Corp</affiliation>
      </author>
      <author>
        <name>Marc Hadley</name>
        <affiliation>Sun Microsystems, Inc</affiliation>
      </author>
    </authlist>
    <abstract>
      <p>Web Services Addressing provides transport-neutral mechanisms to address Web services and
        messages. &wsa-soap.title; (this document) defines the binding of the abstract
        properties defined in &wsa-core.title; to SOAP Messages.</p>
    </abstract> &status; <langusage>
      <language id="en-US">English</language>
    </langusage>
    <revisiondesc>
      <p>Last Modified: $Date: 2005/06/21 17:12:25 $</p>
    </revisiondesc>
  </header>
  <body>
    <div1 id="intro">
      <head> Introduction</head>
      <p>&wsa-core.title;[<bibref ref="WSADDR-CORE"/>] defines a set of abstract properties and
        an XML Infoset [<bibref ref="XMLInfoSet"/>] representation thereof to reference Web service
        endpoints and to facilitate end-to-end addressing of endpoints in messages.
        &wsa-soap.title; (this document) defines the binding of the abstract properties defined
        in &wsa-core.title; to SOAP Messages.</p>
      <p>The following example illustrates the use of these mechanisms in a SOAP 1.2 message being
        sent from http://example.com/business/client1 to http://example.com/fabrikam/Purchasing:</p>
      <example>
        <head>Use of message addressing properties in a SOAP 1.2 message.</head>
        <eg xml:space="preserve">
(01) &lt;S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"      
                xmlns:wsa="&nsuri;"&gt;
(02)   &lt;S:Header&gt;
(03)    &lt;wsa:MessageID&gt;http://example.com/6B29FC40-CA47-1067-B31D-00DD010662DA&lt;/wsa:MessageID&gt;
(04)    &lt;wsa:ReplyTo&gt;
(05)      &lt;wsa:Address&gt;http://example.com/business/client1&lt;/wsa:Address&gt;
(06)    &lt;/wsa:ReplyTo&gt;
(07)    &lt;wsa:To&gt;http://example.com/fabrikam/Purchasing&lt;/wsa:To&gt;
(08)    &lt;wsa:Action&gt;http://example.com/fabrikam/SubmitPO&lt;/wsa:Action&gt;
(09)   &lt;/S:Header&gt;
(10)   &lt;S:Body&gt;
(11)     ...
(12)   &lt;/S:Body&gt;
(13) &lt;/S:Envelope&gt;
</eg>
        <p>Lines (02) to (09) represent the header of the SOAP message where the mechanisms defined
          in the specification are used. The body is represented by lines (10) to (12).</p>
        <p>Lines (03) to (08) contain the message addressing properties serialized as SOAP header
          blocks. Specifically, line (03) specifies the identifier for this message and lines (04)
          to (06) specify the endpoint to which replies to this message should be sent as an
          Endpoint Reference. Line (07) specifies the address URI of the ultimate receiver of this
          message. Line (08) specifies an action URI identifying expected semantics.</p>
      </example>
      <div2 id="notation">
        <head> Notational Conventions</head>
        <p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
          NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
          described in RFC 2119 [<bibref ref="RFC2119"/>].</p>
        <p>When describing abstract data models, this specification uses the notational convention
          used by XML Infoset [<bibref ref="XMLInfoSet"/>]. Specifically, abstract property names
          always appear in square brackets (e.g., [some property]).</p>
        <p>When describing concrete XML information items, this specification uses the notational convention of WS-Security
            [<bibref ref="WS-Security"/>]. Specifically, each member of an element's [children] or
          [attributes] property is described using an XPath-like notation (e.g.,
          /x:MyHeader/x:SomeProperty/@value1). The use of {any} indicates the presence of an element
          wildcard (&lt;xs:any/&gt; in XML Schema 1.0 for XML 1.0 serialization). The use of @{any} indicates the presence of an
          attribute wildcard (&lt;xs:anyAttribute/&gt; in XML Schema
	1.0 for an XML 1.0 serialization).</p>
      </div2>
      <div2 id="namespaces">
        <head> Namespaces</head>
        <p> This specification uses a number of namespace prefixes throughout; they are listed in
            <specref ref="nsrefs"/>. Note that the choice of any namespace prefix is arbitrary and
          not semantically significant (see [<bibref ref="XMLNS"/>]).</p>
        <table id="nsrefs" border="1" summary="Namespace prefixes usage in this specification">
          <caption>Prefixes and Namespaces used in this specification</caption>
          <tbody>
            <tr>
              <th align="left">Prefix</th>
              <th align="left">Namespace</th>
            </tr>
            <tr>
              <td>S</td>
              <td>http://www.w3.org/2003/05/soap-envelope</td>
            </tr>
            <tr>
              <td>S11</td>
              <td>http://schemas.xmlsoap.org/soap/envelope</td>
            </tr>
            <tr>
              <td>wsa</td>
              <td> &nsuri; </td>
            </tr>
            <tr>
              <td>wsaw</td>
              <td> &nsuri;/wsdl </td>
            </tr>
            <tr>
              <td>xs</td>
              <td>http://www.w3.org/2001/XMLSchema</td>
            </tr>
          </tbody>
        </table>
        <p>WS-Addressing is defined in terms of the XML Information Set [<bibref ref="XMLInfoSet"
          />]. WS-Addressing is conformant to the SOAP 1.2 [<bibref ref="SOAP12-PART1"/>] processing
          model and is also compatible with SOAP 1.1[<bibref ref="SOAP11"/>] for backwards
          compatibility. WS-Addressing may be used with WSDL [<bibref ref="WSDL20"/>] described
          services as described in &wsa-wsdl.title;[<bibref ref="WSADDR-WSDL"/>]. The examples
          in this specification use an XML 1.0 [<bibref ref="XML10"/>] representation but this is
          not a requirement.</p>
        <p>All information items defined by this specification are identified by the XML namespace
          URI [<bibref ref="XMLNS"/>] <xspecref href="&nsuri;">&nsuri;</xspecref>. A
          normative XML Schema [<bibref ref="XMLSchemaP1"/>, <bibref ref="XMLSchemaP2"/>] document
          for XML 1.0 serialization can be obtained by dereferencing the XML namespace URI.</p>
      </div2>
    </div1>
    <div1 id="s12feature">
      <head>SOAP 1.2 Addressing 1.0 Feature</head>
      <p>This section defines the SOAP 1.2 Addressing 1.0 Feature.</p>
      <div2 id="s12featurename">
        <head>Feature Name</head>
        <p>The SOAP 1.2 Addressing 1.0 Feature is named using the following URI:</p>
        <ulist>
          <item>
            <p>&nsuri;/feature</p>
          </item>
        </ulist>
      </div2>
      <div2 id="s12featuredesc">
        <head>Description</head>
        <p>The SOAP 1.2 Addressing 1.0 Feature provides a SOAP-specific expression of the abstract
          message addressing properties defined by &wsa-core.title;[<bibref ref="WSADDR-CORE"
          />].</p>
        <p>This feature may be used with any SOAP MEP. A binding that supports this feature MUST
          provide a means to transmit the properties listed below with a message and to reconstitute
          their values on receipt of a message.</p>
      </div2>
      <div2 id="s12featureprops">
        <head>Properties</head>
        <p>The SOAP 1.2 Addressing 1.0 Feature defines the following properties:</p>
        <glist>
          <gitem>
            <label>&nsuri;/feature/Destination</label>
            <def>
              <p>Corresponds to the abstract [destination] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/SourceEndpoint</label>
            <def>
              <p>Corresponds to the abstract [source endpoint] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/ReplyEndpoint</label>
            <def>
              <p>Corresponds to the abstract [reply endpoint] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/FaultEndpoint</label>
            <def>
              <p>Corresponds to the abstract [fault endpoint] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/Action</label>
            <def>
              <p>Corresponds to the abstract [action] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/MessageID</label>
            <def>
              <p>Corresponds to the abstract [message id] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/Relationship</label>
            <def>
              <p>Corresponds to the abstract [relationship] property.</p>
            </def>
          </gitem>
          <gitem>
            <label>&nsuri;/feature/ReferenceParameters</label>
            <def>
              <p>Corresponds to the abstract [reference parameters] property.</p>
            </def>
          </gitem>
        </glist>
      </div2>
      <div2 id="s12featureinteractions">
        <head>Interactions with Other SOAP Features</head>
        <p>If the http://www.w3.org/2003/05/soap/features/action/Action property of the SOAP Action
            feature[<bibref ref="SOAP12-PART2"/>] has a value, then the value of the
          &nsuri;/feature/Action property of the SOAP 1.2 Addressing 1.0 feature MUST be
          identical to it. Failure to have an identical value results in an Invalid Addressing
          Header fault (see <specref ref="invalidmapfault"/>.</p>
      </div2>
    </div1>
    <div1 id="s12module">
      <head>SOAP 1.2 Addressing 1.0 Module</head>
      <p>The SOAP 1.2 Addressing 1.0 Module defines a set of SOAP header blocks to support the SOAP
        1.2 Addressing 1.0 Feature described in <specref ref="s12feature"/>.</p>
      <div2 id="s12modulename">
        <head>Module Name</head>
        <p>The SOAP 1.2 Addressing 1.0 Module is identified using the following URI:</p>
        <ulist>
          <item>
            <p>&nsuri;/module</p>
          </item>
        </ulist>
      </div2>
      <div2 id="s12moduledesc">
        <head>Description</head>
        <p>The SOAP 1.2 Addressing 1.0 Feature (see <specref ref="s12feature"/>) defines a set of
          SOAP properties and their correspondence to the abstract message addressing properties
          defined by &wsa-core.title;[<bibref ref="WSADDR-CORE"/>]. The SOAP 1.2 Addressing 1.0
          Module defines SOAP headers corresponding to the XML Infoset representation of the
          abstract message addressing properties defined in &wsa-core.title;.</p>
        <p>When sending a message each property is represented using the appropriate element
          information item as a SOAP header block. By default, the resulting header blocks are
          targeted at the ultimate recipient in the SOAP message path (note that extensions to
          WS-Addressing could be written to specify different targetting). <specref ref="bindrefp"/>
          describes additional processing required when binding message addressing properties to
          SOAP header blocks.</p>
        <p>When receiving a message, the abstract properties are populated from their corresponding
          element information items in the message. A message MUST NOT contain more than one wsa:To,
          wsa:ReplyTo, wsa:FaultTo, wsa:Action, or wsa:MessageID header targeted at a recipient. A
          recipient MUST generate a wsa:InvalidAddressingHeader (see <specref ref="invalidmapfault"
          />) fault if such a message is received.</p>
        <note>
          <p>The SOAP processing model dictates that message addressing properties targeted at an
            intermediary do not normally get relayed as message addressing properties when the
            message is forwarded along the message path. The specification for a SOAP header used as
            a reference property or use of the soap:relay attribute can override this default
            behaviour.</p>
        </note>
      </div2>
      <div2 id="additionalinfoset">
        <head>Additional Infoset Items</head>
        <p>The SOAP 1.2 Addressing 1.0 Module defines the following additional XML Infoset items:</p>
        <glist>
          <gitem>
            <label>/[reference parameters]/@wsa:IsReferenceParameter</label>
            <def>
              <p>This REQUIRED attribute (of type xs:boolean) signifies whether the message
                addressing header is a reference parameter, see section <specref ref="bindrefp"/>
                for more details on its use.</p>
            </def>
          </gitem>
        </glist>
      </div2>
      <div2 id="bindrefp">
        <head>Binding Message Addressing Properties</head>
        <p>When a message is to be addressed to an endpoint, the XML Infoset representation of each
          message addressing property that has been assigned a value is inserted into the message as
          a SOAP header block subject to the following additional constraints:</p>
        <ulist>
          <item>
            <p>The value, if any, of the [reference parameters] property is added to the SOAP
              message header: the element information item of each of the [reference parameters]
              (including all of its [children], [attributes] and [in-scope namespaces]) is added as
              a SOAP header block in the new message.</p>
            <note>
              <p>The insertion of SOAP headers into a message implies particular semantics. Since
                the reference parameter mechanism does not restrict the content of the generated
                headers, EPR suppliers should exercise appropriate caution to ensure their reference
                parameters do not cause unintended or erroneous semantics in the resultant SOAP
                message. For example, using a reference parameter to send a WS-Security[<bibref
                  ref="WS-Security"/>] header would be ill-advised (since other parts of the SOAP
                infrastructure will often control this header, and there must be at most one of them
                per message).</p>
            </note>
          </item>
          <item>
            <p>Each header block added as a result of the above rule is annotated with a
              wsa:IsReferenceParameter attribute (see <specref ref="additionalinfoset"/>) whose
              value is a valid xs:boolean representaion of <attval>true</attval>. Any existing
              wsa:IsReferenceParameter attribute on the header block is replaced.</p>
            <note>
              <p>Integrity validation of [reference parameters] needs to take into account the
                addition of wsa:IsReferenceParameter attributes and the corresponding introduction
                of the WS-Addressing namespace to the [in-scope namespaces]</p>
            </note>
          </item>
          <item>
            <p>The value of each message addressing property that is of type IRI MUST be serialized
              as an absolute IRI in the corresponding SOAP header block. No additional %-escaping is
              performed.</p>
          </item>
          <item>
            <p>Each optional element or attribute that has a value equal to the defined default
              value for that element or attribute MAY be omitted.</p>
          </item>
        </ulist>
        <p>The following example shows how the SOAP 1.2 Addressing 1.0 Module is used to construct a
          message addressed to the endpoint:</p>
        <example>
          <head>Example endpoint reference.</head>
          <eg xml:space="preserve">
&lt;wsa:EndpointReference
     xmlns:wsa="&nsuri;"
     xmlns:wsaw="&nsuri;/wsdl"
     xmlns:fabrikam="http://example.com/fabrikam"
     xmlns:wsdli="http://www.w3.org/2004/08/wsdl-instance"
     wsdli:wsdlLocation="http://example.com/fabrikam
       http://example.com/fabrikam/fabrikam.wsdl"&gt;
   &lt;wsa:Address&gt;http://example.com/fabrikam/acct&lt;/wsa:Address&gt;
   &lt;wsa:Metadata&gt;
       &lt;wsaw:InterfaceName&gt;fabrikam:Inventory&lt;/wsaw:InterfaceName&gt;
   &lt;/wsa:Metadata&gt;
   &lt;wsa:ReferenceParameters&gt;
       &lt;fabrikam:CustomerKey&gt;123456789&lt;/fabrikam:CustomerKey&gt;
       &lt;fabrikam:ShoppingCart&gt;ABCDEFG&lt;/fabrikam:ShoppingCart&gt;
   &lt;/wsa:ReferenceParameters&gt;
&lt;/wsa:EndpointReference&gt;</eg>
        </example>
        <p>The address value is copied in the "To" header block and the "CustomerKey" and
          "ShoppingCart" elements are copied literally as a header blocks in a SOAP message
          addressed to this endpoint. The resulting SOAP message would look as follows:</p>
        <example>
          <head>Example endpoint reference mapped to SOAP message header blocks.</head>
          <eg xml:space="preserve">
&lt;S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"
         xmlns:wsa="&nsuri;"
         xmlns:fabrikam="http://example.com/fabrikam"&gt;
   &lt;S:Header&gt;
     ...
    &lt;wsa:To&gt;http://example.com/fabrikam/acct&lt;/wsa:To&gt;
    &lt;wsa:Action&gt;...&lt;/wsa:Action&gt;
    &lt;fabrikam:CustomerKey wsa:IsReferenceParameter='true'&gt;123456789&lt;/fabrikam:CustomerKey&gt;
    &lt;fabrikam:ShoppingCart wsa:IsReferenceParameter='true'&gt;ABCDEFG&lt;/fabrikam:ShoppingCart&gt;
     ...
   &lt;/S:Header&gt;
   &lt;S:Body&gt;
     ...
   &lt;/S:Body&gt;
&lt;/S:Envelope&gt;</eg>
        </example>
      </div2>
    </div1>
    <div1 id="s11ext">
      <head>SOAP 1.1 Addressing 1.0 Extension</head>
      <p>The SOAP 1.1 Addressing 1.0 Extension defines a set of SOAP header blocks to support the
        SOAP 1.2 Addressing 1.0 Feature described in <specref ref="s12feature"/>. This SOAP 1.1
        extension is provided for backwards compatibility only.</p>
      <div2 id="s11extname">
        <head>Extension Name</head>
        <p>The SOAP 1.1 Addressing 1.0 Extension is identified using the following URI:</p>
        <ulist>
          <item>
            <p>&nsuri;/module</p>
          </item>
        </ulist>
      </div2>
      <div2 id="s11extdesc">
        <head>Description</head>
        <p>The SOAP 1.2 Addressing 1.0 Feature (see <specref ref="s12feature"/>) defines a set of
          SOAP properties and their correspondence to the abstract message addressing properties
          defined by &wsa-core.title;[<bibref ref="WSADDR-CORE"/>]. The SOAP 1.1 Addressing 1.0
          Extension uses the XML Infoset representation of the abstract message addressing
          properties defined in &wsa-core.title; and binds each element information item to a
          SOAP header block. The SOAP 1.1 Addressing 1.0 Extension operates as described in <specref
            ref="s12module"/> with the following exceptions:</p>
        <glist>
          <gitem>
            <label>SOAP Action</label>
            <def>
              <p>Use of the SOAPAction HTTP header is required when using the SOAP 1.1 HTTP binding.
                The value of the SOAPAction HTTP header MUST either be identical to the value of the
                wsa:Action header, or be empty. The latter case supports the ability to obscure the
                wsa:Action header through SOAP-level security mechanisms, without requiring
                otherwise unnecessary transport-level security. Failure to have an identical value,
                or an empty value for SOAPAction, results in an Invalid Message Addressing Property
                fault (see <specref ref="invalidmapfault"/>.</p>
            </def>
          </gitem>
        </glist>
      </div2>
    </div1>
    <div1 id="faults">
      <head>Faults</head>
      <p>The faults defined in this section are generated if the condition stated in the preamble in
        each subsection is met.</p>
      <p>Endpoints compliant with this specification MUST include the required message addressing
        properties serialized as SOAP headers in generated fault messages. Fault messages are
        correlated as replies using the [relationship] property as defined in
          &wsa-core.title;[<bibref ref="WSADDR-CORE"/>]. Note that omission of the [message id]
        property in an input message may impact the ability of a fault message receiver to correlate
        the fault message to the message that caused the fault message to be generated. Omission of
        the [fault endpoint] or [reply endpoint] properties in input messages may impact the
        delivery of a generated fault message</p>
      <p>The [action] property below designates WS-Addressing fault messages:</p>
      <eg xml:space="preserve">
&nsuri;/fault
</eg>
      <p>Each of the predefined faults listed below is defined by specifying values 
        for the following abstract properties:</p>
      <p> [Code] The fault code, use of the specified fault code is REQUIRED.</p>
      <p> [Subcode] The fault subcode, use of the specified fault subcode is REQUIRED.</p>
      <p> [Reason] The English language reason element, use of the specified fault code is
        RECOMMENDED but alternate text MAY be used.</p>
      <p> [Detail] The detail element, use of the specified detail element is REQUIRED. If absent, no detail element is defined for the fault.</p>
      <div2>
        <head>SOAP 1.2 Fault Binding</head>
        <p>The fault properties bind to a SOAP 1.2 fault as follows:</p>
        <glist>
          <gitem>
            <label>[Code]</label>
            <def>
              <p>The value of the [Code] property is bound as the value of the SOAP faults
                S:Fault/S:Code/S:Value element information item.</p>
            </def>
          </gitem>
          <gitem>
            <label>[Subcode]</label>
            <def>
              <p>The value of the [Subcode] property is bound as the value of the SOAP faults
                S:Fault/S:Code/S:Subcode/S:Value element information item.</p>
            </def>
          </gitem>
          <gitem>
            <label>[Reason]</label>
            <def>
              <p>The value of the [Reason] property is bound as the value of the SOAP faults
                S:Fault/S:Reason/S:Text element information item.</p>
            </def>
          </gitem>
          <gitem>
            <label>[Detail]</label>
            <def>
              <p>The value of the [Detail] property is bound as child of the SOAP faults
                S:Fault/S:Detail element information item.</p>
            </def>
          </gitem>
        </glist>
        <example>
          <head>Binding of fault properties to SOAP 1.2 messages.</head>
          <eg xml:space="preserve">
&lt;S:Envelope&gt;
  &lt;S:Header&gt;
    &lt;wsa:Action&gt;&nsuri;/fault&lt;/wsa:Action&gt;
    &lt;!-- Headers elided for brevity.  --&gt;
  &lt;/S:Header&gt;
  &lt;S:Body&gt;
    &lt;S:Fault&gt;
      &lt;S:Code&gt;
        &lt;S:Value&gt;[Code]&lt;/S:Value&gt;
        &lt;S:Subcode&gt;
          &lt;S:Value&gt;[Subcode]&lt;/S:Value&gt;
        &lt;/S:Subcode&gt;
      &lt;/S:Code&gt;
      &lt;S:Reason&gt;
        &lt;S:Text xml:lang="en"&gt;[Reason]&lt;/S:Text&gt;
      &lt;/S:Reason&gt;
      &lt;S:Detail&gt;
        [Detail]
      &lt;/S:Detail&gt;   
    &lt;/S:Fault&gt;
  &lt;/S:Body&gt;
&lt;/S:Envelope&gt;
      </eg>
        </example>
      </div2>
      <div2>
        <head>SOAP 1.1 Fault Binding</head>
        <p>The SOAP 1.1 fault is slightly less expressive than the SOAP 1.2 fault and maps only [Subcode], [Reason] and
          [Detail]. These the properties bind to a SOAP 1.1 fault as follows:</p>
        <glist>
          <gitem>
            <label>[Subcode]</label>
            <def>
              <p>The value of the [Subcode] property is bound as the value of the SOAP faults
                S11:Fault/faultcode element.</p>
            </def>
          </gitem>
          <gitem>
            <label>[Reason]</label>
            <def>
              <p>The value of the [Reason] property is bound as the value of the SOAP faults
                S11:Fault/faultstring element.</p>
            </def>
          </gitem>
          <gitem>
            <label>[Detail]</label>
            <def>
              <p>The SOAP 1.1 fault detail is only for use with faults related to the body of a
                message and is therefore not used for SOAP 1.1 faults related to processing of
                addressing headers. Instead the value of the [Detail] property is bound as the value
                of a new wsa:FaultDetail SOAP header block. The following describes the
                wsa:FaultDetail element:</p>
              <glist>
                <gitem>
                  <label>/wsa:FaultDetail</label>
                  <def>
                    <p>One of wsa:ActionNotSupported, wsa:InvalidAddressingHeader,
                      wsa:MessageAddressingHeaderRequired,
		    wsa:RetryAfter or {any} (xs:any for an XML 1.0 serialization).</p>
                  </def>
                </gitem>
                <gitem>
                  <label>/wsa:FaultDetail/@{any}</label>
                  <def>
                    <p>Optional extensibility attributes including SOAP role and mustUnderstand.</p>
                  </def>
                </gitem>
              </glist>
            </def>
          </gitem>
        </glist>
        <example>
          <head>Binding of fault properties to SOAP 1.1 messages.</head>
          <eg xml:space="preserve">
&lt;S11:Envelope&gt;
  &lt;S11:Header&gt;
    &lt;wsa:Action&gt;&nsuri;/fault&lt;/wsa:Action&gt;
    &lt;wsa:FaultDetail&gt;[Detail]&lt;/wsa:FaultDetail&gt;
    &lt;!-- Other headers elided for brevity.  --&gt;
  &lt;/S11:Header&gt;
  &lt;S11:Body&gt;
    &lt;S11:Fault&gt;
      &lt;faultcode&gt;[Subcode]&lt;/faultcode&gt;
      &lt;faultstring xml:lang="en"&gt;[Reason]&lt;/faultstring&gt;
    &lt;/S11:Fault&gt;
  &lt;/S11:Body&gt;
&lt;/S11:Envelope&gt;
      </eg>
        </example>
      </div2>
      <div2 id="invalidmapfault">
        <head> Invalid Addressing Header</head>
        <p>A header representing a WS-Addressing 1.0 Message Addressing Property is invalid and
          cannot be processed. The validity failure can be either structural or semantic, e.g. a
          [destination] that is not an IRI or a [relationship] to a [message id] that was never
          issued.</p>
        <p> [Code] a QName representing the value S:Sender</p>
        <p> [Subcode] a QName representing the value wsa:InvalidAddressingHeader</p>
        <p> [Reason] the string: "A header representing a Message Addressing Property is not valid
          and the message cannot be processed" </p>
        <p> [Detail] a &lt;wsa:InvalidAddressingHeader&gt; element</p>
        <p> The following describes the &lt;wsa:InvalidAddressingHeader&gt; element:</p>
        <glist>
          <gitem>
            <label>/wsa:InvalidAddressingHeader</label>
            <def>
              <p>A QName representing the name of the root element of the invalid header block</p>
            </def>
          </gitem>
          <gitem>
            <label>/wsa:InvalidAddressingHeader/@{any}</label>
            <def>
              <p>Optional extensibility attributes that do not affect processing.</p>
            </def>
          </gitem>
        </glist>
      </div2>
      <div2 id="missingmapfault">
        <head> Message Addressing Header Required</head>
        <p>A required header representing a Message Addressing Property is absent.</p>
        <p> [Code] a QName representing the value S:Sender</p>
        <p> [Subcode] a QName representing the value wsa:MessageAddressingHeaderRequired</p>
        <p> [Reason] the string: "A required header representing a Message Addressing Property is
          not present"</p>
        <p> [Detail] a &lt;wsa:MessageAddressingHeaderRequired&gt; element</p>
        <p> The following describes the &lt;wsa:MessageAddressingHeaderRequired&gt; element:</p>
        <glist>
          <gitem>
            <label>/wsa:MessageAddressingHeaderRequired</label>
            <def>
              <p>A QName representing the name of the missing header element</p>
            </def>
          </gitem>
          <gitem>
            <label>/wsa:MessageAddressingHeaderRequired/@{any}</label>
            <def>
              <p>Optional extensibility attributes that do not affect processing.</p>
            </def>
          </gitem>
        </glist>
      </div2>
      <div2 id="destinationfault">
        <head> Destination Unreachable</head>
        <p>The endpoint identified by the value of [destination] property cannot be reached.</p>
        <p> [Code] a QName representing the value S:Sender</p>
        <p> [Subcode] a QName representing the value wsa:DestinationUnreachable</p>
        <p> [Reason] the string: "No route can be determined to reach [destination]"</p>
        <p> [Detail] (empty)</p>
      </div2>
      <div2 id="actionfault">
        <head> Action Not Supported</head>
        <p>The [action] property in the message is not supported at this endpoint.</p>
        <p> [Code] a QName representing the value S:Sender</p>
        <p> [Subcode] a QName representing the value wsa:ActionNotSupported</p>
        <p> [Reason] the string: "The [action] cannot be processed at the receiver"</p>
        <p> [Detail] a &lt;wsa:ActionNotSupported&gt; element</p>
        <p> The following describes the &lt;wsa:ActionNotSupported&gt; element:</p>
        <glist>
          <gitem>
            <label>/wsa:ActionNotSupported</label>
            <def>
              <p>The value of the wsa:Action header block</p>
            </def>
          </gitem>
          <gitem>
            <label>/wsa:ActionNotSupported/@{any}</label>
            <def>
              <p>Optional extensibility attributes that do not affect processing.</p>
            </def>
          </gitem>
        </glist>
      </div2>
      <div2 id="unavailablefault">
        <head> Endpoint Unavailable</head>
        <p>The endpoint is unable to process the message at this time either due to some transient
          issue or a permanent failure. </p>
        <p>The endpoint may optionally include a RetryAfter parameter in the detail. The source
          SHOULD NOT retransmit the message until this duration has passed.</p>
        <p> [Code] a QName representing the value S:Receiver</p>
        <p> [Subcode] a QName representing the value wsa:EndpointUnavailable</p>
        <p> [Reason] the string "The endpoint is unable to process the message at this time"</p>
        <p> [Detail] a &lt;wsa:RetryAfter&gt; element</p>
        <p> The following describes the &lt;wsa:RetryAfter&gt; element:</p>
        <glist>
          <gitem>
            <label>/wsa:RetryAfter</label>
            <def>
              <p>This element (whose content is of type xs:unsignedLong) is a suggested minimum
                duration in milliseconds to wait before retransmitting the message. Omission of this
                element indicates that a retry is never likely to succeed.</p>
            </def>
          </gitem>
          <gitem>
            <label>/wsa:RetryAfter/@{any}</label>
            <def>
              <p>Optional extensibility attributes that do not affect processing.</p>
            </def>
          </gitem>
        </glist>
      </div2>
    </div1>
    <div1 id="securityconsiderations">
      <head>Security Considerations</head>
      <p>WS-Addressing message addressing properties serialized as SOAP headers (wsa:To, wsa:Action
        et al.) including those headers present as a result of the [reference parameters] property
        SHOULD be integrity protected as explained in &wsa-core.title;[<bibref ref="WSADDR-CORE"
        />].</p>
      <p>When receiving a SOAP message, certain SOAP headers may be resulting from the serialization
        of an EPR's [reference parameters] property. The SOAP message receiver can perform
        additional security and sanity checks to prevent unintended actions.</p>
      <div2 id="intseccons">
        <head>Additional Considerations for SOAP Intermediaries</head>
        <p>To avoid breaking signatures, intermediaries MUST NOT change the XML representation of
          WS-Addressing headers when relaying those headers. Specifically, intermediaries MUST NOT
          remove XML content that explicitly indicates otherwise-implied content, and intermediaries
          MUST NOT insert XML content to make implied values explicit. For instance, if a
          RelationshipType attribute is present with a value of <attval>&nsuri;/reply</attval>,
          an intermediary MUST NOT remove it; similarly, if there is no RelationshipType attribute,
          an intermediary MUST NOT add one. </p>
      </div2>
    </div1>
    <div1 id="conformance">
      <head>Conformance</head>
      <p>A SOAP 1.2 message conforms to the SOAP 1.2 Addressing 1.0 Module when it contains headers
        from the wsa namespace, and follows all the constraints on message addressing properties
        defined by &wsa-core.title;[<bibref ref="WSADDR-CORE"/>] and by the SOAP 1.2 Addressing
        1.0 Module.</p>
      <p>A SOAP 1.1 message conforms to the SOAP 1.1 Addressing 1.0 Extension when it contains
        headers from the wsa namespace, and follows all the constraints on message addressing
        properties defined by &wsa-core.title;[<bibref ref="WSADDR-CORE"/>] and by the SOAP 1.1
        Addressing 1.0 Extension.</p>
      <p>An endpoint which conforms to this specification understands and accepts SOAP messages
        containing headers in the wsa namespace targeted to it, generates reply or fault messages it
        may send in response according to the rules outlined in this specification and in
          &wsa-core.title;[<bibref ref="WSADDR-CORE"/>].</p>
      <note>
        <p>&wsa-wsdl.title;[<bibref ref="WSADDR-WSDL"/>] defines additional conformance
          requirements for the description of an endpoint.</p>
      </note>
      <note>
        <p>Endpoints MAY accept and respond to messages which contain no WSA headers.</p>
      </note>
    </div1>
    <div1 id="references">
      <head> References</head>
      <blist>
        <bibl key="WS-Addressing-Core" id="WSADDR-CORE" href="&w3c-designation-wsa-core;">
          <titleref>&wsa-core.title;</titleref>, M. Gudgin, M. Hadley, Editors.</bibl>
        <!--
                <bibl key="WS-Addressing-WSDL" id="WSADDR-WSDL"
                    href="&w3c-designation-wsa-wsdl;">
                    <titleref>&wsa-wsdl.title;</titleref>, M. Gudgin, M. Hadley, Editors.</bibl>
*** For LC drafts ONLY ***
-->
        <bibl key="WS-Addressing-WSDL" id="WSADDR-WSDL"
          href="http://www.w3.org/TR/2005/WD-ws-addr-wsdl-20050215">
          <titleref>&wsa-wsdl.title;</titleref>, M. Gudgin, M. Hadley, Editors.</bibl>
        <bibl key="WSDL 2.0" id="WSDL20" href="">
          <titleref>Web Services Description Language 2.0</titleref>, R. Chinnici, M. Gudgin, J. J.
          Moreau, J. Schlimmer, S. Weerawarana, Editors. World Wide Web Consortium, 3 August 2004.
          This version of the WSDL 2.0 specification is
          http://www.w3.org/TR/2005/WD-wsdl20-20050510. The <loc href="http://www.w3.org/TR/wsdl20"
            >latest version of WSDL 2.0</loc> is available at http://www.w3.org/TR/wsdl20.</bibl>
        <bibl key="IETF RFC 2119" href="http://www.ietf.org/rfc/rfc2119.txt" id="RFC2119">
          <titleref>Key words for use in RFCs to Indicate Requirement Levels</titleref>, S. Bradner,
          Author. Internet Engineering Task Force, June 1999. Available at
          http://www.ietf.org/rfc/rfc2119.txt. </bibl>
        <bibl id="RFC3987" key="IETF RFC 3987" href="http://www.ietf.org/rfc/rfc3987.txt">
          <titleref>Internationalized Resource Identifiers (IRIs)</titleref> M. Duerst, M. Suignard,
          January 2005. Available at http://www.ietf.org/rfc/rfc3987.txt.</bibl>
        <bibl id="XML10" key="XML 1.0" href="http://www.w3.org/TR/2004/REC-xml-20040204">
          <titleref>Extensible Markup Language (XML) 1.0 (Third Edition)</titleref>, T. Bray, J.
          Paoli, C. M. Sperberg-McQueen, and E. Maler, Editors. World Wide Web Consortium, 4
          February 2004. This version of the XML 1.0 Recommendation is
          http://www.w3.org/TR/2004/REC-xml-20040204. The <loc href="http://www.w3.org/TR/REC-xml"
            >latest version of XML 1.0</loc> is available at http://www.w3.org/TR/REC-xml. </bibl>
        <bibl id="XMLNS" key="XML Namespaces"
          href="http://www.w3.org/TR/1999/REC-xml-names-19990114">
          <titleref>Namespaces in XML</titleref>, T. Bray, D. Hollander, and A. Layman, Editors.
          World Wide Web Consortium, 14 January 1999. This version of the XML Information Set
          Recommendation is http://www.w3.org/TR/1999/REC-xml-names-19990114. The <loc
            href="http://www.w3.org/TR/REC-xml-names">latest version of Namespaces in XML</loc> is
          available at http://www.w3.org/TR/REC-xml-names. </bibl>
        <bibl id="XMLInfoSet" key="XML Information Set"
          href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024">
          <titleref>XML Information Set</titleref>, J. Cowan and R. Tobin, Editors. World Wide Web
          Consortium, 24 October 2001. This version of the XML Information Set Recommendation is
          http://www.w3.org/TR/2001/REC-xml-infoset-20011024. The <loc
            href="http://www.w3.org/TR/xml-infoset">latest version of XML Information Set</loc> is
          available at http://www.w3.org/TR/xml-infoset. </bibl>
        <bibl id="XMLSchemaP1" key="XML Schema Structures"
          href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
          <titleref>XML Schema Part 1: Structures Second Edition</titleref>, H. Thompson, D. Beech,
          M. Maloney, and N. Mendelsohn, Editors. World Wide Web Consortium, 28 October 2004. This
          version of the XML Schema Part 1 Recommendation is
          http://www.w3.org/TR/2004/REC-xmlschema-1-20041028. The <loc
            href="http://www.w3.org/TR/xmlschema-1/">latest version of XML Schema Part 1</loc> is
          available at http://www.w3.org/TR/xmlschema-1. </bibl>
        <bibl key="XML Schema Datatypes" id="XMLSchemaP2"
          href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
          <titleref>XML Schema Part 2: Datatypes Second Edition</titleref>, P. Byron and A.
          Malhotra, Editors. World Wide Web Consortium, 28 October 2004. This version of the XML
          Schema Part 2 Recommendation is http://www.w3.org/TR/2004/REC-xmlschema-2-20041028. The
            <loc href="http://www.w3.org/TR/xmlschema-2/">latest version of XML Schema Part 2</loc>
          is available at http://www.w3.org/TR/xmlschema-2. </bibl>
        <bibl id="SOAP12-PART1" key="SOAP 1.2 Part 1: Messaging Framework"
          href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/">
          <titleref>SOAP Version 1.2 Part 1: Messaging Framework</titleref>, M. Gudgin, M. Hadley,
          N. Mendelsohn, J-J. Moreau, H. Frystyk Nielsen, Editors. World Wide Web Consortium, 24
          June 2003. This version of the "SOAP Version 1.2 Part 1: Messaging Framework"
          Recommendation is http://www.w3.org/TR/2003/REC-soap12-part1-20030624/. The <loc
            href="http://www.w3.org/TR/soap12-part1/">latest version of "SOAP Version 1.2 Part 1:
            Messaging Framework"</loc> is available at http://www.w3.org/TR/soap12-part1/. </bibl>
        <bibl id="SOAP12-PART2" key="SOAP 1.2 Part 2: Adjuncts"
          href="http://www.w3.org/TR/2003/REC-soap12-part2-20030624/">
          <titleref>SOAP Version 1.2 Part 2: Adjuncts</titleref>, M. Gudgin, M. Hadley, N.
          Mendelsohn, J-J. Moreau, H. Frystyk Nielsen, Editors. World Wide Web Consortium, 24 June
          2003. This version of the "SOAP Version 1.2 Part 2: Adjuncts" Recommendation is
          http://www.w3.org/TR/2003/REC-soap12-part2-20030624/. The <loc
            href="http://www.w3.org/TR/soap12-part1/">latest version of "SOAP Version 1.2 Part 2:
            Adjuncts"</loc> is available at http://www.w3.org/TR/soap12-part2/. </bibl>
        <bibl id="SOAP11" key="SOAP 1.1" href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">Don
          Box, et al, <titleref>Simple Object Access Protocol (SOAP) 1.1</titleref>, May 2000.</bibl>
        <bibl id="WS-Security" key="WS-Security"
          href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf"
          > OASIS, <titleref>Web Services Security: SOAP Message Security</titleref>, March
        2004.</bibl>
      </blist>
    </div1>
  </body>
  <back> &acknowledgements; <inform-div1 id="changelog">
      <head>Change Log</head>
      <div2>
        <head>Changes Since Last Call Working Draft</head>
        <p role="ws-addr-soap.xml:20050401:20060101">Placeholder for auto change log generation.</p>
      </div2>
      <div2>
        <head>Changes Since Second Working Draft</head>
        <p role="ws-addr-soap.xml:20050211:20050330">Placeholder for auto change log generation.</p>
      </div2>
      <div2>
        <head>Changes Since First Working Draft</head>
        <p role="ws-addr-soap.xml:20041206:20050210">Placeholder for auto change log generation.</p>
      </div2>
      <div2>
        <head>Changes Since Submission</head>
        <p role="ws-addr-soap.xml:20041001:20041205">Placeholder for auto change log generation.</p>
      </div2>
    </inform-div1>
  </back>
</spec>

