<?xml version="1.0"?>
<!-- $Id: ws-addr-core.xml,v 1.102 2005/07/12 18:46:50 mhadley Exp $ -->
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.1//EN" "xmlspec.dtd" [
<!ENTITY prefix "ws-addr-core">
<!ENTITY % entities SYSTEM "entities.dtd" >
%entities;
<!ENTITY status SYSTEM "status.xml">
<!ENTITY document.status "Editors' copy $Date: 2005/07/12 18:46:50 $">
<!ENTITY wsa-title "&wsa-core.title;">
<!ENTITY prevloc "http://www.w3.org/TR/2005/WD-ws-addr-core-20050215">
]>
<?xml-stylesheet type='text/xsl' href='xmlspec-addressing.xsl'?>
<spec w3c-doctype="wd" role="&document.role;">
    <header>
        <title>&wsa-core.title;</title>
        <w3c-designation>&w3c-designation-wsa-core;</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-core;">&w3c-designation-wsa-core;</loc>
        </publoc> &altlocs; <prevlocs>
            <loc href="&prevloc;">&prevloc;</loc>
        </prevlocs>
        <latestloc>
            <loc href="&wsa-core.latest;">&wsa-core.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-core.title; (this document) defines a set of abstract
                properties and an XML Infoset [<bibref ref="XMLInfoSet"/>] representation thereof to
                reference Web services and to facilitate end-to-end addressing of endpoints in
                messages. This specification enables messaging systems to support message
                transmission through networks that include processing nodes such as endpoint
                managers, firewalls, and gateways in a transport-neutral manner.</p>
        </abstract> &status; <langusage>
            <language id="en-US">English</language>
        </langusage>
        <revisiondesc>
            <p>Last Modified: $Date: 2005/07/12 18:46:50 $</p>
        </revisiondesc>
    </header>
    <body>
        <div1 id="tocRange">
            <head>Introduction</head>
            <p>&wsa-core.title; (WS-Addressing) defines two constructs, message addressing
                properties and endpoint references, that normalize the information typically
                provided by transport protocols and messaging systems in a way that is independent
                of any particular transport or messaging system.</p>
            <p>A Web service endpoint is a (referenceable) entity, processor, or resource to which
                Web service messages can be addressed. Endpoint references convey the information
                needed to address a Web service endpoint.</p>
            <p>This specification defines a family of message addressing properties that convey
                end-to-end message characteristics including references for source and destination
                endpoints and message identity that allows uniform addressing of messages
                independent of the underlying transport.</p>
            <p>Both of these constructs are designed to be extensible and re-usable so that other
                specifications can build on and leverage endpoint references and message addressing
                properties.</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 (see &wsa-soap.title;[<bibref
                    ref="WSADDR-SOAP"/>] for more information on the use of WS-Addressing in SOAP):</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 header blocks. Specifically,
                    line (02) 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 the 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 Information Item'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 XML 1.0 serialization). In addition, where
                    pseudo-schemas are provided for a component, they use BNF-style conventions for
                    attributes and elements: "?" denotes optionality (i.e. zero or one occurrences),
                    "*" denotes zero or more occurrences, "+" one or more occurrences, "[" and "]"
                    are used to form groups, and "|" represents choice. Attributes are
                    conventionally assigned a value which corresponds to their type, as defined in
                    the normative schema. Elements with simple content are conventionally assigned a
                    value which corresponds to the type of their content, as defined in the
                    normative schema.</p>
                <p>When defining the cardinality of endpoint reference properties and message
                    addressing properties, this specification uses the following notation:
                        (<i>n</i>..<i>m</i>), where <i>n</i> is the minimum allowed number of
                    ocurrances of the property and <i>m</i> is the maximum allowed number of
                    occurances. When <i>n</i> has the same value as <i>m</i> then exactly that
                    number of ocurrances of the property must be present in the associated endpoint
                    reference or message.</p>
            </div2>
            <div2 id="namespaces">
                <head>Namespaces</head>
                <p> This specification uses a number of namespace prefixes throughout; they are
                    listed in <specref ref="nsprefix"/>. Note that the choice of any namespace
                    prefix is arbitrary and not semantically significant (see [<bibref ref="XMLNS"
                    />]).</p>
                <table summary="Namespace prefixes usage in this specification" id="nsprefix"
                    border="1">
                    <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>wsa</td>
                            <td>&nsuri;</td>
                        </tr>
                        <tr>
                            <td>xs</td>
                            <td>http://www.w3.org/2001/XMLSchema</td>
                        </tr>
                    </tbody>
                </table>
                <p>WS-Addressing may be used with SOAP [<bibref ref="SOAP12-PART1"/>, <bibref
                        ref="SOAP11"/>] as described in &wsa-soap.title;[<bibref
                        ref="WSADDR-SOAP"/>]. WS-Addressing may be used with WSDL [<bibref
                        ref="WSDL20"/>, <bibref ref="WSDL11"/>] described services as described in
                        &wsa-wsdl.title;[<bibref ref="WSADDR-WSDL"/>]. 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="eprs">
            <head>Endpoint References</head>
            <p>This section defines the information model and syntax of an endpoint reference.</p>
            <p> This specification introduces the endpoint reference, a construct designed to
                support the following usage scenarios:</p>
            <ulist>
                <item>
                    <p> Dynamic generation and customization of service endpoint descriptions.</p>
                </item>
            </ulist>
            <ulist>
                <item>
                    <p> Referencing and description of specific service instances that are created
                        as the result of stateful interactions.</p>
                </item>
            </ulist>
            <ulist>
                <item>
                    <p> Flexible and dynamic exchange of endpoint information in tightly coupled
                        environments where communicating parties share a set of common assumptions
                        about specific policies or protocols that are used during the
                    interaction.</p>
                </item>
            </ulist>
            <div2 id="eprinfomodel">
                <head>Information Model for Endpoint References</head>
                <p>An endpoint reference consists of the following abstract properties:</p>
                <glist>
                    <gitem>
                        <label> [address] : IRI (1..1)</label>
                        <def>
                            <p>An absolute IRI representing the address of the endpoint. This
                                specification introduces two predefined [address] values as shown in
                                    <specref ref="predefaddr"/>.</p>
                            <table id="predefaddr" border="1" summary="Predefined [address] values">
                                <caption>Predefined [address] values</caption>
                                <tbody>
                                    <tr>
                                        <th align="left">URI</th>
                                        <th align="left">Description </th>
                                    </tr>
                                    <tr>
                                        <td>
                                            <attval>&nsuri;/anonymous</attval>
                                        </td>
                                        <td>Due to the range of network technologies currently in
                                            wide-spread use (e.g., NAT, DHCP, firewalls), many
                                            deployments cannot assign a meaningful global IRI to a
                                            given endpoint. This URI is used to allow such endpoints
                                            to send and receive messages. Messages sent to EPRs
                                            whose [address] is this value MUST rely on some out-of-band
                                            mechanism for delivery (e.g.
                                            using a pre-existing transport
                                        connection) from a prior interaction.</td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <attval>&nsuri;/none</attval>
                                        </td>
                                        <td>Messages sent to EPRs whose [address] is this
                                            value
                                             MUST be discarded (i.e. not sent). This URI
                                            is
                                            typically used in EPRs that designate a reply or fault
                                        endpoint (see section <specref ref="abstractmaps"/>) to
                                            indicate
                                            that no reply or fault message should be
                                            sent.</td>
                                    </tr>
                                </tbody>
                            </table>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [reference parameters] : {any} (xs:any
			for an XML 1.0 serialization) (0..unbounded).</label>
                        <def>
                            <p>A reference may contain a number of individual parameters that are
                                associated with the endpoint to facilitate a particular interaction.
                                Reference parameters are namespace-qualified element information
                                items that are required to properly interact with the endpoint.
                                Reference parameters are provided by the issuer of the endpoint
                                reference and are assumed to be opaque to other users of an endpoint
                                refernce. The binding of reference parameters to messages depends
                                upon the protocol binding used to interact with the endpoint -
                                    &wsa-soap.title;[<bibref ref="WSADDR-SOAP"/>] describes the
                                default binding for the SOAP protocol. </p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [metadata] : {any} (xs:any for an XML
			1.0 serialization) (0..unbounded)</label>
                        <def>
                            <p>A reference may contain metadata that describes the behavior,
                                policies and capabilities of the endpoint. Metadata may be included
                                in an endpoint reference to facilitate easier processing by a user
                                of an endpoint reference, or because the metadata was dynamically
                                generated.</p>
                            <p>The metadata embedded in an EPR is not necessarily a complete
                                statement of the metadata pertaining to the endpoint. Moreover,
                                while embedded metadata is necessarily valid at the time the EPR is
                                initially created it may become stale at a later point in time.</p>
                            <p>To deal with conflicts between the embedded metadata of two EPRs that
                                have the same [address], or between embedded metadata and metadata
                                obtained from a different source, or to ascertain the current
                                validity of embedded metadata, mechanisms that are outside of the
                                scope of this specification, such as EPR life cycle information (see
                                    <specref ref="eprlifecycle"/>) or retrieval of metadata from an
                                authoritative source, SHOULD be used.</p>
                        </def>
                    </gitem>
                </glist>
            </div2>
            <div2 id="eprinfoset">
                <head>Endpoint Reference XML Infoset Representation</head>
                <p>This section defines an XML Infoset-based representation for an endpoint
                    reference as both an XML element
                    (&lt;wsa:EndpointReference&gt;) and as an XML type
		    (wsa:EndpointReferenceType) for XML 1.0
		    serialization which MAY be used wherever a Web service endpoint is
                    referenced in an XML 1.0 document. For brevity simple XML terms are used,
                    e.g. 'element' instead of 'element information item' - this is not intended to
                    constrain use of the constructs defined in this section to textual XML
                    representations.</p>
                <eg xml:space="preserve">&lt;<b>wsa:EndpointReference</b>&gt;
    &lt;wsa:Address&gt;<i>IRI</i>&lt;/wsa:Address&gt;
    &lt;wsa:ReferenceParameters&gt;<i>{any}</i>*&lt;/wsa:ReferenceParameters&gt; ?
    &lt;wsa:Metadata&gt;<i>{any}</i>*&lt;/wsa:Metadata&gt;?
&lt;/<b>wsa:EndpointReference</b>&gt;</eg>
                <p>The following describes the attributes and elements listed in the schema overview
                    above:</p>
                <glist>
                    <gitem>
                        <label> /wsa:EndpointReference</label>
                        <def>
                            <p>This represents an Endpoint
                            Reference. This example uses the
                            predefined &lt;wsa:EndpointReference&gt;
                            element, but any element of the same type
                            (of the wsa:EndpointReferenceType for an
                            XML 1.0 serialization) may be used.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:Address</label>
                        <def>
                            <p>This REQUIRED element, whose content is
			    an IRI (of type xs:anyURI for an XML 1.0 serialization), specifies
                                the [address] property of the endpoint reference.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:Address/@{any}</label>
                        <def>
                            <p>This is an extensibility mechanism to allow additional attributes to
                                be specified.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:ReferenceParameters</label>
                        <def>
                            <p>This OPTIONAL element may contain elements from any namespace. Such
                                elements form the [reference parameters] of the reference.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:ReferenceParameters/@{any}</label>
                        <def>
                            <p>This is an extensibility mechanism to allow additional attributes to
                                be specified.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:ReferenceParameters/{any}</label>
                        <def>
                            <p>Each element information item found in [reference parameters]
                                (including all of that elements [children], [attributes] and
                                [in-scope namespaces]) is represented as is.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:Metadata</label>
                        <def>
                            <p>This OPTIONAL element may contain elements from any namespace. Such
                                elements form the metadata that is relevant to the interaction with
                                the endpoint.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:Metadata/{any}</label>
                        <def>
                            <p>Each child element of Metadata represents an individual piece of
                                metadata.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/wsa:Metadata/{@any}</label>
                        <def>
                            <p>This is an extensibility mechanism to allow additional attributes to
                                be specified. Some examples in this specification show use of this
                                extensibility point to include a wsdlLocation[<bibref ref="WSDL20"
                                />] attribute to provide a hint for the location of a WSDL
                                description of the service deployed at the endpoint.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/{any}</label>
                        <def>
                            <p>This is an extensibility mechanism to allow additional elements to be
                                specified.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:EndpointReference/@{any}</label>
                        <def>
                            <p>This is an extensibility mechanism to allow additional attributes to
                                be specified.</p>
                        </def>
                    </gitem>
                </glist>
                <p>The following shows an example endpoint reference. This element references the
                    the endpoint at the URI "http://example.com/fabrikam/acct".</p>
                <example>
                    <head>Example endpoint reference.</head>
                    <eg xml:space="preserve">
&lt;wsa:EndpointReference xmlns:wsa="&nsuri;"&gt;
   &lt;wsa:Address&gt;http://example.com/fabrikam/acct&lt;/wsa:Address&gt;
&lt;/wsa:EndpointReference&gt;
      </eg>
                </example>
            </div2>
            <div2 id="eprcomp">
                <head>Endpoint Reference Comparison</head>
                <p>This specification provides no concept of endpoint identity and therefore does
                    not provide any mechanism to determine equality or inequality of EPRs and does
                    not specify the consequences of their equality or inequality. However, note that
                    it is possible for other specifications to provide a comparison function that is
                    applicable within a limited scope.</p>
            </div2>
            <div2 id="eprlifecycle">
                <head>Endpoint Reference Lifecycle</head>
                <p>This specification does not define a lifecycle model for endpoint references and
                    does not address the question of time-to-live for endpoint references. Other
                    specifications that build on or use WS-Addressing may define a lifecycle model
                    for endpoint references created according to that specification.</p>
            </div2>
            <div2 id="eprextensibility">
                <head>Endpoint Reference Extensibility</head>
                <p>As noted in <specref ref="eprinfoset"/> endpoint references are extensible. When
                    extension attributes or elements appear as part of an endpoint reference, the
                    processing model for such extensions is defined by the specification for those
                    extensions. Software that processes endpoint references can safely ignore any
                    such extensions that it does not recognise or understand.</p>
                <p>Extension elements and attributes MAY add additional properties to an endpoint
                    reference in addition to those specified in <specref ref="eprinfomodel"/>.
                    Endpoint reference extensions MAY modify the value of one or more existing
                    properties of an endpoint reference. Extensions MAY modify the rules for binding
                    endpoint reference properties to message addressing properties, or otherwise
                    indicate that a different binding be used. </p>
                <p>Note that this ability to modify existing properties and binding behavior, when
                    coupled with the fact that software can ignore unknown or unrecognised
                    extensions, may result in a difference in behaviour depending on whether such an
                    extended endpoint reference is processed by software that understands the
                    extension(s). When designing endpoint reference extensions designers should
                    consider whether they desire standard processing per this specification in cases
                    where their extension is not recognized or understood.</p>
            </div2>
        </div1>
        <div1 id="msgaddrprops">
            <head>Message Addressing Properties</head>
            <p>This section defines the information model and syntax of message addressing
                properties.</p>
            <note>
                <p> The Working Group requests feedback regarding the mechanism for and description
                    of Message Addressing Property extensibility beyond the MEPs currently described
                    in the WSDL specifications, along with use cases that illustrate how referencing
                    specifications and other users of Addressing intend to extend them. Although the
                    Working Group has resolved upon a <loc
                        href="http://www.w3.org/2002/ws/addr/wd-issues/#i054">particular
                    design</loc>, some participants believe it is not adequately specified. Such
                    feedback will help the Working Group determine whether it needs to re-examine
                    this issue. </p>
            </note>
            <p> Message addressing properties provide references for the endpoints involved in an
                interaction. The use of these properties to support specific interactions is in
                general defined by both the semantics of the properties themselves and the implicit
                or explicit contract that governs the message exchange. If explicitly available,
                this contract can take different forms including but not being limited to WSDL MEPs
                and interfaces; business processes and e-commerce specifications, among others, can
                also be used to define explicit contracts between the parties.</p>
            <p> The basic interaction pattern from which all others are composed is "one-way". In
                this pattern a source sends a message to a destination without any further
                definition of the interaction. "Request-response" is a common interaction pattern
                that consists of an initial message sent by a source endpoint (the request) and a
                subsequent message sent from the destination of the request back to the source (the
                response). A response in this case can be either an application message, a fault, or
                any other message. Note, however, that reply messages may be sent as part of other
                message exchanges as well, and are not restricted to the usual single Request,
                single Response pattern, or to a particular WSDL transmission primitive or MEP. The
                contract between the interacting parties may specify that multiple or even a
                variable number of replies be delivered. </p>
            <p> The set of message addressing properties defined in this specification is sufficient
                for many simple variations of one-way and request-response MEPs. More advanced MEPs
                may require additional message addressing properties to augment the facilities
                provided here. </p>
            <div2 id="abstractmaps">
                <head>Abstract Property Definitions</head>
                <p>Message addressing properties collectively augment a message with the following
                    abstract properties to support one-way, request-response, and other interaction
                    patterns:</p>
                <glist>
                    <gitem>
                        <label> [destination] : IRI (1..1)</label>
                        <def>
                            <p>An absolute IRI representing the address of the intended receiver of
                                this message.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [source endpoint] : endpoint reference (0..1)</label>
                        <def>
                            <p>Reference to the endpoint from which the message originated.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [reply endpoint] : endpoint reference (0..1)</label>
                        <def>
                            <p>An endpoint reference for the intended receiver for replies to this
                                message.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [fault endpoint] : endpoint reference (0..1)</label>
                        <def>
                            <p>An endpoint reference for the intended receiver for faults related to
                                this message.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [action] : IRI (1..1)</label>
                        <def>
                            <p>An absolute IRI that uniquely identifies the semantics implied by
                                this message.</p>
                            <p>It is RECOMMENDED that the value of the [action] property is an IRI
                                identifying an input, output, or fault message within a WSDL
                                interface or port type. An action may be explicitly or implicitly
                                associated with the corresponding WSDL definition.
                                    &wsa-wsdl.title;[<bibref ref="WSADDR-WSDL"/>] describes the
                                mechanisms of association.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [message id] : IRI (0..1)</label>
                        <def>
                            <p>An absolute IRI that uniquely identifies the message. When present,
                                it is the responsibility of the sender to ensure that each message
                                is uniquely identified. The behavior of a receiver when receiving a
                                message that contains the same [message id] as a previously received
                                message is unconstrained by this specification.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [relationship] : (IRI, IRI) (0..unbounded)</label>
                        <def>
                            <p>A pair of values that indicate how this message relates to another
                                message. The type of the relationship is identified by an absolute
                                IRI. The related message is identified by an absolute IRI that
                                corresponds to the related message's [message id] property. The
                                message identifier IRI may refer to a specific message, or be the
                                following pre-defined URI that means "unspecified message":
                                    <attval>&nsuri;/unspecified</attval>
                            </p>
                            <p>This specification has one predefined relationship type as shown in
                                    <specref ref="predefrels"/>.</p>
                            <table id="predefrels" border="1" summary="Predefined [relationship]
                                type values">
                                <caption>Predefined [relationship] values</caption>
                                <tbody>
                                    <tr>
                                        <th align="left">URI</th>
                                        <th align="left">Description </th>
                                    </tr>
                                    <tr>
                                        <td>
                                            <attval>&nsuri;/reply</attval>
                                        </td>
                                        <td>Indicates that this is a reply to the message identified
                                            by the [message id] IRI.</td>
                                    </tr>
                                </tbody>
                            </table>
                        </def>
                    </gitem>
                    <gitem>
                        <label> [reference parameters] : {any} (xs:any
			for an XML 1.0 serialization) (0..unbounded).</label>
                        <def>
                            <p>Corresponds to the value of the [reference parameters] property of
                                the endpoint reference to which the message is addressed.</p>
                        </def>
                    </gitem>
                </glist>
                <p>The [destination] and [action] properties indicate the target processing location
                    and the verb or intent of the message respectively. The values of these
                    properties can be used to facilitate the dispatch of messages.</p>
                <p>A binding of WS_Addressing message addressing properties MUST reflect the
                    property cardinality shown above. &wsa-soap.title;[<bibref ref="WSADDR-SOAP"
                    />] defines such a binding for the SOAP [<bibref ref="SOAP12-PART1"/>, <bibref
                        ref="SOAP11"/>] protocol.</p>
            </div2>
            <div2 id="msgaddrpropsinfoset">
                <head>XML Infoset Representation of Message Addressing Properties</head>
                <p>The following shows the XML Infoset representation of the message addressing
                    properties defined in <specref ref="abstractmaps"/>:</p>
                <eg xml:space="preserve">
&lt;<b>wsa:To</b>&gt;<i>IRI</i>&lt;/<b>wsa:To</b>&gt;
&lt;<b>wsa:From</b>&gt;<i>Endpoint Reference</i>&lt;/<b>wsa:From</b>&gt;
&lt;<b>wsa:ReplyTo</b>&gt;<i>Endpoint Reference</i>&lt;/<b>wsa:ReplyTo</b>&gt;
&lt;<b>wsa:FaultTo</b>&gt;<i>Endpoint Reference</i>&lt;/<b>wsa:FaultTo</b>&gt;
&lt;<b>wsa:Action</b>&gt;<i>IRI</i>&lt;/<b>wsa:Action</b>&gt;
&lt;<b>wsa:MessageID</b>&gt;<i>IRI</i>&lt;/<b>wsa:MessageID</b>&gt;
&lt;<b>wsa:RelatesTo</b> RelationshipType="<i>IRI</i>"?&gt;<i>IRI</i>&lt;/<b>wsa:RelatesTo</b>&gt;
&lt;<b>wsa:ReferenceParameters</b>&gt;<i>{any}</i>*&lt;/<b>wsa:ReferenceParameters</b>&gt;
                    </eg>
                <p>The following describes the attributes and elements listed in the schema overview
                    above:</p>
                <glist>
                    <gitem>
                        <label> /wsa:To</label>
                        <def>
                            <p>This OPTIONAL element, whose content is
			    an IRI (of type xs:anyURI for an XML 1.0 serialization), provides
                                the value for the [destination] property. If this element is NOT
                                present then the value of the [destination] property is
                                    <attval>&nsuri;/anonymous</attval>.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:From</label>
                        <def>
                            <p>This OPTIONAL element, an Endpoint
			    Reference as defined in <specref
			    ref="eprinfoset"/> (of type
			    wsa:EndpointReferenceType for an XML 1.0 serialization), provides
                                the value for the [source endpoint] property.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:ReplyTo</label>
                        <def>
                            <p>This OPTIONAL element, an Endpoint
			    Reference as defined in <specref
			    ref="eprinfoset"/> (of type
			    wsa:EndpointReferenceType for an XML 1.0 serialization), provides
                                the value for the [reply endpoint] property. If this element is NOT
                                present then the value of the [address] property of the [reply
                                endpoint] EPR is <attval>&nsuri;/anonymous</attval>.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:FaultTo</label>
                        <def>
                            <p>This OPTIONAL element, an Endpoint
			    Reference as defined in <specref
			    ref="eprinfoset"/> (of type
			    wsa:EndpointReferenceType for an XML 1.0 serialization), provides
                                the value for the [fault endpoint] property.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:Action</label>
                        <def>
                            <p>This REQUIRED element, whose content is
			    an IRI (of type xs:anyURI for an XML 1.0 serialization), conveys
                                the value of the [action] property.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:MessageID</label>
                        <def>
                            <p>This OPTIONAL element, whose content is
			    an IRI (of type xs:anyURI for an XML 1.0 serialization), conveys
                                the [message id] property.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:RelatesTo</label>
                        <def>
                            <p>This OPTIONAL (repeating) element information item contributes one
                                abstract [relationship] property value, in the form of an (IRI, IRI)
                                pair. The content of this element (of
				type xs:anyURI for an XML 1.0 serialization) conveys the
                                [message id] of the related message.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /wsa:RelatesTo/@RelationshipType</label>
                        <def>
                            <p>This OPTIONAL attribute, whose content
			    is an IRI (of type xs:anyURI for an XML 1.0 serialization), conveys the relationship
                                type. When absent, the implied value of this attribute is
                                    <attval>&nsuri;/reply</attval>.</p>
                        </def>
                    </gitem>
                    <gitem>
                        <label> /[reference parameters]*</label>
                        <def>
                            <p>Each element information item found in [reference parameters]
                                (including all of that elements [children], [attributes] and
                                [in-scope namespaces]) is represented as is.</p>
                        </def>
                    </gitem>
                </glist>
                <p>Note that each of the element information items described above allows attribute
                    wildcards for future extensibility. A message processor may safely ignore any
                    extension attribute it does not recognize.</p>
                <div3 id="compiri">
                    <head>Comparing IRIs</head>
                    <p>The values of the Message Addressing Properties [action], [message id], and
                        [relationship] are absolute IRIs. The purpose of these IRIs is primarily
                        identification, rather than resource retrieval. As such, simple string
                        comparison, as indicated in Internationalized Resource Identifiers <bibref
                            ref="RFC3987"/> section 5.3.1, is sufficient to determine equivalence of
                        these IRIs.</p>
                    <p>Comparison of [destination] property values is out of scope, other than using
                        simple string comparison to detect whether the value is anonymous, that is,
                        where [destination] has the value "&nsuri;/anonymous".</p>
                </div3>
            </div2>
            <div2 id="formreplymsg">
                <head>Formulating a Reply Message</head>
                <p>This section specifies the WS-Addressing-specific rules for creating a reply or
                    fault message related to another message.</p>
                <olist>
                    <item>
                        <p>Select the appropriate EPR:</p>
                        <ulist>
                            <item>
                                <p>If the reply is a normal message, select the EPR from the related
                                    message's [reply endpoint] message addressing property. If none
                                    is present, the processor MUST fault. </p>
                                <note><p>When using the XML Infoset representation, in the absence
                                    of a wsa:ReplyTo element the value of the
                                [reply endpoint] message addressing property defaults to an EPR with
                                an [address] property of <attval>&nsuri;/anonymous</attval> - see
                                    section <specref ref="msgaddrpropsinfoset"/>.</p></note>
                            </item>
                            <item>
                                <p>Otherwise, if the reply is a fault message and the related
                                    message's [fault endpoint] message addressing property is not
                                    empty, select the EPR from that property. If the [fault
                                    endpoint] property is empty, select the EPR from the related
                                    message's [reply endpoint] message addressing property.
                                    Otherwise, if the [reply endpoint] property is empty, the
                                    behavior of the recipient of the related message is
                                    unconstrained by this specification.</p>
                            </item>
                            <item>
                                <p>In either of the above cases, if the related message lacks a
                                    [message id] property, the processor MUST fault.</p>
                            </item>
                        </ulist>
                    </item>
                    <item>
                        <p>If the selected EPR's [address] property is
                            <attval>&nsuri;/none</attval> the reply message is discarded, if not
                            then populate the reply message's message addressing properties:</p>
                        <ulist>
                            <item>
                                <p>[destination]: this property takes the value of the selected
                                    EPR's [address] property.</p>
                            </item>
                            <item>
                                <p>[relationship]: this property MUST include a pair of IRIs as
                                    follows; the relationship type is the predefined reply URI
                                        <attval>&nsuri;/reply</attval> and the related message's
                                    identifier is the [message id] property value from the message
                                    being replied to; other relationships MAY be expressed in this
                                    property</p>
                            </item>
                            <item>
                                <p>[reference parameters]: this property takes the value of the
                                    selected EPR's [reference parameters] property</p>
                            </item>
                        </ulist>
                    </item>
                </olist>
                <p>The following example illustrates a message containing message addressing
                    properties serialized as header blocks in a SOAP 1.2 message:</p>
                <example>
                    <head>Example message.</head>
                    <eg xml:space="preserve">
&lt;S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"
  xmlns:wsa="&nsuri;"&gt;
  &lt;S:Header&gt; 
  &lt;wsa:MessageID&gt;http://example.com/someuniquestring&lt;/wsa:MessageID&gt;
    &lt;wsa:ReplyTo&gt;
      &lt;wsa:Address&gt;http://example.com/business/client1&lt;/wsa:Address&gt;
    &lt;/wsa:ReplyTo&gt;
    &lt;wsa:To&gt;mailto:fabrikam@example.com&lt;/wsa:To&gt;
    &lt;wsa:Action&gt;http://example.com/fabrikam/mail/Delete&lt;/wsa:Action&gt;
  &lt;/S:Header&gt;
  &lt;S:Body&gt;
    &lt;f:Delete xmlns:f="http://example.com/fabrikam"&gt;     
       &lt;maxCount&gt;42&lt;/maxCount&gt;
    &lt;/f:Delete&gt;
  &lt;/S:Body&gt;
&lt;/S:Envelope&gt;
      </eg>
                </example>
                <p>This message would have the following property values:</p>
                <ulist>
                    <item>
                        <p> [destination]: <attval>mailto:fabrikam@example.com</attval>
                        </p>
                    </item>
                    <item>
                        <p> [reply endpoint]: The endpoint with [address]
                                <attval>http://example.com/business/client1</attval>
                        </p>
                    </item>
                    <item>
                        <p> [action]: <attval>http://example.com/fabrikam/mail/Delete</attval>
                        </p>
                    </item>
                    <item>
                        <p> [message id]: <attval>http://example.com/someuniquestring</attval>
                        </p>
                    </item>
                </ulist>
                <p>The following example illustrates a reply to the above message:</p>
                <example>
                    <head>Example reply message.</head>
                    <eg xml:space="preserve">
&lt;S:Envelope
  xmlns:S="http://www.w3.org/2003/05/soap-envelope" 
  xmlns:wsa="&nsuri;"&gt;
  &lt;S:Header&gt;
    &lt;wsa:MessageID&gt;http://example.com/someotheruniquestring&lt;/wsa:MessageID&gt;
    &lt;wsa:RelatesTo&gt;http://example.com/someuniquestring&lt;/wsa:RelatesTo&gt;
    &lt;wsa:To&gt;http://example.com/business/client1&lt;/wsa:To&gt;
    &lt;wsa:Action&gt;http://example.com/fabrikam/mail/DeleteAck&lt;/wsa:Action&gt;
  &lt;/S:Header&gt;
  &lt;S:Body&gt;
    &lt;f:DeleteAck xmlns:f="http://example.com/fabrikam"/&gt;
  &lt;/S:Body&gt;
&lt;/S:Envelope&gt;
      </eg>
                </example>
                <p>This message would have the following property values:</p>
                <ulist>
                    <item>
                        <p> [destination]: <attval>http://example.com/business/client1</attval>
                        </p>
                    </item>
                    <item>
                        <p> [action]: <attval>http://example.com/fabrikam/mail/DeleteAck</attval>
                        </p>
                    </item>
                    <item>
                        <p> [message id]: <attval>http://example.com/someotheruniquestring</attval>
                        </p>
                    </item>
                    <item>
                        <p> [relationship]: (<attval>&nsuri;/reply</attval>,
                                <attval>http://example.com/someuniquestring</attval>)</p>
                    </item>
                </ulist>
            </div2>
        </div1>
        <div1 id="securityconsiderations">
            <head>Security Considerations</head>
            <p>Users of WS-Addressing and EPRs (i.e., entities creating and receiving Message
                Addressing Properties and EPRs) SHOULD only use EPRs from sources they trust. For
                example, such users might rely on the presence of a verifiable signature by a
                trusted party over the EPR, or an out-of-band means of establishing trust, to
                determine whether they should use a particular EPR.</p>
            <p>EPRs and message addressing properties SHOULD be integrity-protected to prevent
                tampering. Such optional integrity protection might be provided by the transport, a
                message level signature, or use of an XML digital signature within EPRs.</p>
            <p>To prevent information disclosure, EPR issuers SHOULD NOT put sensitive information
                into the [address] or [reference parameters] properties.</p>
            <p>Some processors may use message identifiers ([message id]) as part of a uniqueness
                metric in order to detect replays of messages. In this case, care should be taken to
                ensure that for purposes of replay detection, the message identifier is combined
                with other data, such as a timestamp, so that a legitimate retransmission of the
                message is not confused with a replay attack. It is also advisable to use message
                identifiers that are not predictable, to prevent attackers from constructing and
                sending an unsolicited reply to a message without having to see the actual message.</p>
            <p>When [reply endpoint] and/or [fault endpoint] do not contain the anonymous URI, the
                processor of such an EPR should take care to avoid a denial of service attack caused
                by opening an excessive number network connections, which are typically a scarce
                resource.</p>
            <p>Care should be taken to avoid participating in a denial of service attack in which an
                attacker sends messages to many receivers and includes a [reply endpoint] or [fault
                endpoint] for the target of the attack.</p>
        </div1>
        <div1 id="references">
            <head>References</head>
            <blist>
                <bibl key="WS-Addressing-SOAP" id="WSADDR-SOAP"
                    href="&w3c-designation-wsa-soap;">
                    <titleref>&wsa-soap.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="http://www.w3.org/TR/2004/WD-wsdl20-20040803">
                    <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. 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="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="WSDL11" key="WSDL 1.1" href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315"
                    >E. Christensen, et al, <titleref>Web Services Description Language (WSDL)
                    1.1</titleref>, March 2001.</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-core.xml:20050401:20060101">Placeholder for auto change log
                    generation.</p>
            </div2>
            <div2>
                <head>Changes Since Second Working Draft</head>
                <p role="ws-addr-core.xml:20050211:20050330">Placeholder for auto change log
                    generation.</p>
            </div2>
            <div2>
                <head>Changes Since First Working Draft</head>
                <p role="ws-addr-core.xml:20041206:20050210">Placeholder for auto change log
                    generation.</p>
            </div2>
            <div2>
                <head>Changes Since Submission</head>
                <p role="ws-addr-core.xml:20041001:20041205">Placeholder for auto change log
                    generation.</p>
            </div2>
        </inform-div1>
    </back>
</spec>

