<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.2+WSDL//EN" "xmlspec.dtd">
<!--
/*
 * Copyright © 2007 World Wide Web Consortium,
 *
 * (Massachusetts Institute of Technology, European Research Consortium for
 * Informatics and Mathematics, Keio University). All Rights Reserved. This
 * work is distributed under the W3C® Document License [1] in the hope that
 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
 */
    -->
<!-- $Id: wsdl20-adjuncts.xml,v 1.2 2007/05/18 21:27:53 plehegar Exp $ -->
<?xml-stylesheet type='text/xsl' href='xmlspec-wsdl.xsl'?><spec xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:z="http://www.w3.org/2004/zml" w3c-doctype="pr" role="public" xml:space="default">
  <header xml:space="default">
    <title xml:space="default">Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts</title>
    <w3c-designation xml:space="default">http://www.w3.org/TR/2007/PR-wsdl20-adjuncts-20070523</w3c-designation>
    <w3c-doctype xml:space="default">W3C Proposed Recommendation</w3c-doctype>
    <pubdate xml:space="default">
      <day xml:space="default">23</day>
      <month xml:space="default">May</month>
      <year xml:space="default">2007</year>
    </pubdate>
    <publoc xml:space="default">
      <loc href="http://www.w3.org/TR/2007/PR-wsdl20-adjuncts-20070523" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2007/PR-wsdl20-adjuncts-20070523</loc>
    </publoc>
    <altlocs xml:space="default">
	<loc role="pdf" href="wsdl20-adjuncts.pdf" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PDF</loc>
	<loc role="postscript" href="wsdl20-adjuncts.ps" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">PostScript</loc>
	<loc role="xml" href="wsdl20-adjuncts.xml" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">XML</loc>
	<loc role="plain" href="wsdl20-adjuncts.txt" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">plain text</loc>
    </altlocs>
    <prevlocs xml:space="default">
      <loc href="http://www.w3.org/TR/2007/WD-wsdl20-adjuncts-20070326" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/2007/WD-wsdl20-adjuncts-20070326</loc>
    </prevlocs>
    <latestloc xml:space="default">
      <loc href="http://www.w3.org/TR/wsdl20-adjuncts" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/TR/wsdl20-adjuncts</loc>
    </latestloc>
    <authlist xml:space="default">
      <author xml:space="default">
	<name xml:space="default">Roberto Chinnici</name>
	<affiliation xml:space="default">Sun Microsystems</affiliation>
      </author>
      <author xml:space="default">
        <name xml:space="default">Hugo Haas</name>
        <affiliation xml:space="default">W3C</affiliation>
      </author>
      <author xml:space="default">
	<name xml:space="default">Amelia A. Lewis</name>
	<affiliation xml:space="default">TIBCO Software</affiliation>
      </author>
      <author xml:space="default">
	<name xml:space="default">Jean-Jacques Moreau</name>
        <affiliation xml:space="default">Canon</affiliation>
      </author>
      <author xml:space="default">
        <name xml:space="default">David Orchard</name>
        <affiliation xml:space="default">BEA Systems</affiliation>
      </author>
      <author xml:space="default">
        <name xml:space="default">Sanjiva Weerawarana</name>
        <affiliation xml:space="default">WSO2</affiliation>
      </author>
    </authlist>
    <abstract xml:space="default">
      <p xml:space="default">
    WSDL 2.0 is the Web Services Description Language, an XML language for describing Web
	services. This document, <attval xml:space="default">Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts</attval>,
	specifies predefined extensions for use in WSDL 2.0:

      </p>
      <ulist xml:space="default">
	<item xml:space="default"><p xml:space="default">Message exchange patterns</p></item>
	<item xml:space="default"><p xml:space="default">Operation safety</p></item>
	<item xml:space="default"><p xml:space="default">Operation styles</p></item>
	<item xml:space="default"><p xml:space="default">Binding extensions for SOAP and HTTP</p></item>
      </ulist>
    </abstract>
    
<status id="Status" xml:space="default">

  <p xml:space="default">
    <emph xml:space="default">This section describes the status of this document at the time
    of its publication. Other documents may supersede this document. A
    list of current W3C publications and the latest revision of this
    technical report can be found in the <loc href="http://www.w3.org/TR/" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C technical reports index</loc> at
    http://www.w3.org/TR/.</emph>
  </p>

   <p xml:space="default">This is the <loc href="http://www.w3.org/2005/10/Process-20051014/tr.html#RecsPR" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C
   Proposed Recommendation</loc> of Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts for review by W3C Members and
   other interested parties. It has been produced by the <loc href="http://www.w3.org/2002/ws/desc/" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Web Services Description
   Working Group</loc>, which is part of the <loc href="http://www.w3.org/2002/ws/Activity" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Web Services
   Activity</loc>.</p>

   <p xml:space="default">W3C Advisory Committee Representatives should consult their <loc href="http://www.w3.org/2002/09/wbs/myQuestionnaires" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">WBS
   questionnaires</loc>. Reviews are expected <b>until 20 June 2007</b>.</p>
  
  <p xml:space="default">Individuals are invited to send
    feedback on this document to the public <loc href="mailto:public-ws-desc-comments@w3.org" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public-ws-desc-comments@w3.org</loc>
    mailing list (<loc href="http://lists.w3.org/Archives/Public/public-ws-desc-comments/" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public
    archive</loc>).
  </p>

   <p xml:space="default">
     The Working Group released a test suite along with an <loc href="http://www.w3.org/2002/ws/desc/5/impl-report/" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">implementation
     report</loc>.
   </p>
    <p xml:space="default">
      Issues about this document are recorded in the <loc href="http://www.w3.org/Bugs/Public/buglist.cgi?query_format=specific&amp;product=WSDL" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">issues
      list</loc> maintained by the Working Group. A <loc href="wsdl20-adjuncts-diff.html" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">diff-marked version against the
      previous version of this document</loc> is available.
    </p>


    <!-- Boilerplate -->

    <p xml:space="default">
      Publication as a Proposed Recommendation does not imply
      endorsement by the W3C Membership. This is a draft document and
      may be updated, replaced or obsoleted by other documents at any
      time. It is inappropriate to cite this document as other than
      work in progress.
    </p>

    <p xml:space="default">
      This document is governed by the <loc href="http://www.w3.org/TR/2002/NOTE-patent-practice-20020124" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">24
      January 2002 CPP</loc> as amended by the <loc href="http://www.w3.org/2004/02/05-pp-transition" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">W3C Patent
      Policy Transition Procedure</loc>. W3C maintains a <loc href="http://www.w3.org/2002/ws/desc/2/04/24-IPR-statements.html" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">public
      list of any patent disclosures</loc> made in connection with the
      deliverables of the group; that page also includes instructions
      for disclosing a patent. An individual who has actual knowledge
      of a patent which the individual believes contains <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">Essential
      Claim(s)</loc> must disclose the information in accordance with
      <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">section
      6 of the W3C Patent Policy</loc>.
    </p>

</status>


    <langusage xml:space="default">
      <language id="en" xml:space="default">English</language>
    </langusage>
    <revisiondesc xml:space="default">
      <p xml:space="default">Last Modified: $Date: 2007/05/18 21:27:53 $ CET</p>
    </revisiondesc>
  </header>
  <body xml:space="preserve">

    <!-- *************************************************************** -->

    <div1 id="intro" xml:space="default">
      <head xml:space="default">Introduction</head>
      <p xml:space="default">The Web Services Description Language Version 2.0 (WSDL 2.0)
      <bibref ref="WSDL-PART1" xml:space="default"/> provides a model and an XML format for
      describing Web services. WSDL 2.0 enables one to separate the description of
      the abstract functionality offered by a service from concrete details of
      a service description such as "how" and "where" that functionality is offered.</p>
      
      <p xml:space="default">This document, <attval xml:space="default">Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts</attval>, specifies predefined extensions for
      use in WSDL 2.0:</p>
      <ulist xml:space="default">
	<item xml:space="default"><p xml:space="default">Message exchange patterns: <specref ref="meps" xml:space="default"/></p></item>
	<item xml:space="default"><p xml:space="default">Operation safety declaration: <specref ref="ext" xml:space="default"/></p></item>
	<item xml:space="default"><p xml:space="default">Operation styles: <specref ref="styles" xml:space="default"/></p></item>
	<item xml:space="default"><p xml:space="default">Binding extensions:</p>
	<ulist xml:space="default">
	  <item xml:space="default"><p xml:space="default">A SOAP 1.2 <bibref ref="SOAP12-PART1" xml:space="default"/> binding extension:
	  <specref ref="soap-binding" xml:space="default"/></p></item>
	  <item xml:space="default"><p xml:space="default">An HTTP/1.1 <bibref ref="RFC2616" xml:space="default"/> binding extension:
	  <specref ref="http-binding" xml:space="default"/></p></item>
	</ulist>
	</item>
      </ulist>

      <p xml:space="default">
	This document depends on WSDL Version 2.0 <bibref ref="WSDL-PART1" xml:space="default"/>.
      </p>

      <!-- +++++++++ -->
      <div2 id="notcon" xml:space="default">
        <head xml:space="default">Notational Conventions</head>
        <p xml:space="default">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 RFC2119 <bibref ref="RFC2119" xml:space="default"/>.</p>
        <p xml:space="default">This specification uses a number of namespace prefixes throughout;
they are listed in <specref ref="tabprefns" xml:space="default"/>. Note that the choice of
any namespace prefix is arbitrary and not semantically significant
(see <bibref ref="XMLInfoSet" xml:space="default"/>).</p>
        <table border="1" summary="Mapping of prefixes used in this document to their&#13;&#10;  associated namespace name" id="tabprefns" xml:space="default">
          <caption xml:space="default">Prefixes and Namespaces used in this specification</caption>
          <tbody xml:space="default">
            <tr xml:space="default">
              <th rowspan="1" colspan="1" xml:space="default">Prefix</th>
              <th rowspan="1" colspan="1" xml:space="default">Namespace</th>
              <th rowspan="1" colspan="1" xml:space="default">Notes</th>
            </tr>
            <tr xml:space="default">
              <td rowspan="1" colspan="1" xml:space="default">wsdl</td>
              <td rowspan="1" colspan="1" xml:space="default">
                <attval xml:space="default">http://www.w3.org/ns/wsdl</attval>
              </td>
              <td rowspan="1" colspan="1" xml:space="default">
		This namespace is defined in <bibref ref="WSDL-PART1" xml:space="default"/>.
		A normative XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/>,
        <bibref ref="XMLSchemaP2" xml:space="default"/> document for the
        <attval xml:space="default">http://www.w3.org/ns/wsdl</attval>
        namespace can be found at <loc href="http://www.w3.org/ns/wsdl" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/ns/wsdl</loc>. This namespace is used as
	      the default namespace throughout this specification.</td>
            </tr>
            <tr xml:space="default">
              <td rowspan="1" colspan="1" xml:space="default">wsdlx</td>
              <td rowspan="1" colspan="1" xml:space="default">
                <attval xml:space="default">http://www.w3.org/ns/wsdl-extensions</attval>
              </td>
              <td rowspan="1" colspan="1" xml:space="default">
		This specification extends in section <specref ref="ext" xml:space="default"/> the
		<attval xml:space="default">http://www.w3.org/ns/wsdl-extensions</attval> namespace defined in <bibref ref="WSDL-PART1" xml:space="default"/>.
		A normative XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/>,
        <bibref ref="XMLSchemaP2" xml:space="default"/> document for the
        <attval xml:space="default">http://www.w3.org/ns/wsdl-extensions</attval>
        namespace can be found at <loc href="http://www.w3.org/ns/wsdl-extensions" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/ns/wsdl-extensions</loc>.</td>
            </tr>
            <tr xml:space="default">
              <td rowspan="1" colspan="1" xml:space="default">wsoap</td>
              <td rowspan="1" colspan="1" xml:space="default">
                <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
              </td>
              <td rowspan="1" colspan="1" xml:space="default">Defined by this
	      specification. A normative XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/>,
            <bibref ref="XMLSchemaP2" xml:space="default"/> document for the
            <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
            namespace can be found at <loc href="http://www.w3.org/ns/wsdl/soap" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/ns/wsdl/soap</loc>.</td>
            </tr>
            <tr xml:space="default">
              <td rowspan="1" colspan="1" xml:space="default">whttp</td>
              <td rowspan="1" colspan="1" xml:space="default">
                <attval xml:space="default">http://www.w3.org/ns/wsdl/http</attval>
              </td>
              <td rowspan="1" colspan="1" xml:space="default">Defined by this
	      specification. A normative XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/>,
            <bibref ref="XMLSchemaP2" xml:space="default"/> document for the
            <attval xml:space="default">http://www.w3.org/ns/wsdl/http</attval>
            namespace can be found at <loc href="http://www.w3.org/ns/wsdl/http" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/ns/wsdl/http</loc>.</td>
            </tr>
            <tr xml:space="default">
              <td rowspan="1" colspan="1" xml:space="default">wrpc</td>
              <td rowspan="1" colspan="1" xml:space="default">
                <attval xml:space="default">http://www.w3.org/ns/wsdl/rpc</attval>
              </td>
              <td rowspan="1" colspan="1" xml:space="default">Defined by this
	      specification. A normative XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/>,
            <bibref ref="XMLSchemaP2" xml:space="default"/> document for the
            <attval xml:space="default">http://www.w3.org/ns/wsdl/rpc</attval>
            namespace can be found at <loc href="http://www.w3.org/ns/wsdl/rpc" xml:space="default" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest">http://www.w3.org/ns/wsdl/rpc</loc>.</td>
            </tr>
            <tr xml:space="default">
              <td rowspan="1" colspan="1" xml:space="default">xs</td>
              <td rowspan="1" colspan="1" xml:space="default">
                <attval xml:space="default">http://www.w3.org/2001/XMLSchema</attval>
              </td>
              <td rowspan="1" colspan="1" xml:space="default">Defined in the W3C XML Schema
          specification <bibref ref="XMLSchemaP1" xml:space="default"/>, <bibref ref="XMLSchemaP2" xml:space="default"/>.</td>
            </tr>
          </tbody>
        </table>
        <p xml:space="default">Namespace names of the general form
<attval xml:space="default">http://example.org/...</attval> and
<attval xml:space="default">http://example.com/...</attval> represent application or
context-dependent URIs <bibref ref="RFC3986" xml:space="default"/>.</p>
        <p xml:space="default">All parts of this specification are normative, with the EXCEPTION
of pseudo-schemas, examples, and sections explicitly marked as
"Non-Normative".  Pseudo-schemas are provided for each component,
before the description of this component. They provide visual help for
the XML <bibref ref="XML10" xml:space="default"/> serialization. The <xspecref href="http://www.w3.org/TR/2007/PR-wsdl20-20070523#bnfpseudoschemas" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">syntax of BNF
	pseudo-schemas</xspecref> is the same as the one used in <bibref ref="WSDL-PART1" xml:space="default"/>.</p>
      </div2>

      <div2 id="assertions" xml:space="default">
	<head xml:space="default">Assertions</head>
	<p xml:space="default">
	  Assertions about WSDL 2.0 documents and components that are
	  not enforced by the normative XML schema for WSDL 2.0 are
	  marked by a dagger symbol (†) at the end of a
	  sentence. Each assertion has been assigned a unique
	  identifier that consists of a descriptive textual prefix and
	  a unique numeric suffix. The numeric suffixes are assigned
	  sequentially and never reused so there may be gaps in the
	  sequence.  The assertion identifiers MAY be used by
	  implementations of this specification for any purpose,
	  e.g. error reporting.
	</p>
	<p xml:space="default">
	  The assertions and their identifiers are summarized in
	  section <specref ref="assertionsummary" xml:space="default"/>.
	</p>
      </div2>

    </div1>

    <!-- *************************************************************** -->

<div1 id="meps" xml:space="default">
<head xml:space="default">Predefined Message Exchange Patterns</head>

<p xml:space="default">
Web Services Description Language (WSDL) message exchange patterns (hereafter simply
'patterns') define the sequence and cardinality of abstract messages listed in 
an operation.  Message exchange patterns also define which other nodes send 
messages to, and receive messages from, the service implementing the operation.
</p>

<p xml:space="default">
A <emph xml:space="default">node</emph> is an agent (<xspecref href="http://www.w3.org/TR/2004/NOTE-ws-arch-20040211/#agent" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">section 2.3.2.2
Agent of the Web Services Architecture</xspecref> <bibref ref="wsarch" xml:space="default"/>) that can transmit and/or receive message(s) 
described in WSDL description(s) and process them.
</p>
<note xml:space="default">
    <p xml:space="default"><assert class="exchange" id="NodeIdentity-2001" cr-id="NodeIdentity-2200000" required="false">A
        node MAY be accessible via more than one physical address or transport.</assert></p>
</note>

<p xml:space="default">
WSDL message exchange patterns describe the interaction at the abstract 
(interface) level, which may be distinct from the pattern used by the 
underlying protocol binding (e.g. SOAP Message Exchange
Patterns; section <specref ref="soap12-defaults" xml:space="default"/> contains the
binding rules for the selection of a SOAP 1.2 message exchange
pattern, based on the WSDL message exchange pattern in use for the SOAP
binding extension defined in section <specref ref="soap-binding" xml:space="default"/>).
</p>

<p xml:space="default">
By design, WSDL message exchange patterns abstract out specific message types.
Patterns identify placeholders for messages, and placeholders are
associated with specific message types by the operation using the
pattern. 
</p>

<p xml:space="default">
Unless explicitly stated otherwise, WSDL message exchange patterns also
abstract out binding-specific information such as timing between
messages, whether the pattern is synchronous or asynchronous, and
whether the messages are sent over a single or multiple channels.
</p>

<p xml:space="default">
Like interfaces and operations, WSDL message exchange patterns do not
exhaustively describe the set of messages exchanged between a service
and other nodes; <assert class="exchange" id="MEPDescriptiveness-2002" cr-id="MEPDescriptiveness-2200001" required="false">by some prior agreement, another node and/or the
service MAY send messages (to each other or to other nodes) that
are not described by the pattern.</assert> For instance, even though a pattern
can define a single message sent from a service to one other node, the
Web service can in practice multicast that message to other nodes.
</p>

<p xml:space="default">
To maximize reuse, WSDL message exchange patterns identify a minimal contract
between other parties and Web services, and contain only information
that is relevant to both the Web service and another party.
</p>

<p xml:space="default">This specification defines several message exchange patterns for
use with <emph xml:space="default">WSDL Version 2.0 Part 1: Core Language</emph> <bibref ref="WSDL-PART1" xml:space="default"/>. Additional, non-normative patterns are available
in <bibref ref="WSDL-MEPS" xml:space="default"/>.</p>

<div2 id="mep-template" xml:space="default">
<head xml:space="default">Template for Message Exchange Patterns</head>
<!-- should this section be marked "informative"? -->

<p xml:space="default">New message exchange patterns may be defined by any organization able and
willing to do so.  It is recommended that the patterns use the general
template provided in <specref ref="template-sample" xml:space="default"/>, after examination of existing predefined patterns.</p>

<div3 id="template-sample" xml:space="default">
<head xml:space="default">Pattern Name</head>

<p xml:space="default">This pattern consists of [number] message[s, in order] as follows:</p>

<p xml:space="default">[enumeration, specifying, for each message] A[n optional] message:</p>
<olist xml:space="default">
  <item xml:space="default"><p xml:space="default">indicated by an <comp>Interface Message Reference</comp> component whose
<prop comp="Interface Message Reference">message label</prop> is
<attval xml:space="default">[label]</attval> and <prop comp="Interface Message Reference">direction</prop> is <attval xml:space="default">[direction]</attval></p></item>
  <item xml:space="default"><p xml:space="default">[received from|sent to] ['some' if first mention] node [node
identifier]</p></item>
</olist>

<p xml:space="default">This pattern uses the rule [fault ruleset reference].</p>

<p xml:space="default">An <comp>Interface Operation</comp> using this message exchange pattern has a
<prop comp="Interface Operation">message exchange pattern</prop>
property with the value <attval xml:space="default">[pattern IRI]</attval>.</p>

<p xml:space="default">Note: In the template, the bracketed items indicate a replacement operation.
Substitute the correct terms for each bracketed item.</p>

<p xml:space="default">Note: the "received from" and "sent to" are always from the point of
view of the service, and participating nodes other than the service are
implicitly identified as the originators of or destinations for
messages in the exchange.</p>

</div3>

</div2>

<div2 id="fault-rules" xml:space="default">
<head xml:space="default">Fault Propagation Rules</head>

<p xml:space="default">WSDL patterns specify their fault propagation model using standard
rulesets to indicate where faults can occur.  The most common patterns
for fault propagation are defined in the following subsections, and referenced by the patterns in
<specref ref="patterns" xml:space="default"/>.  "Propagation" is defined as a best-effort attempt to transmit
the fault message to its designated recipient.</p>

<p xml:space="default">WSDL patterns specify propagation of faults, not their generation.  
<assert class="exchange" id="FaultPropagation-2003" cr-id="FaultPropagation-2200101" required="true">Nodes that generate faults MUST attempt to propagate the faults in 
accordance with the governing ruleset, but it is understood that any 
delivery of a network message is best effort, not guaranteed.</assert>  The 
rulesets establish the direction of the fault message and the fault 
recipient; they do not provide reliability or other delivery guarantees. 
<assert class="exchange" id="FaultPropagation-2004" cr-id="FaultPropagation-2200102" required="true">When a fault is generated, the generating node MUST attempt to 
propagate the fault, and MUST do so in the direction and to the 
recipient specified by the ruleset.</assert> <assert class="component" id="FaultPropagationModification-2005" cr-id="FaultPropagationModification-2200103" required="false">However, extensions or binding extensions
MAY modify these rulesets.</assert>  For example, WS-Addressing <bibref ref="WSA-Core" xml:space="default"/>
defines a "FaultTo" address for messages, which is used in lieu of the recipient
nominated by the ruleset.</p> 

<p xml:space="default"><assert class="exchange" id="MEPTermination-2006" cr-id="MEPTermination-2200104" required="true">Generation of a fault, regardless of 
ruleset, terminates the exchange.</assert></p>

<p xml:space="default">Binding extensions, features, or extension specifications can override the 
semantics of a fault propagation ruleset, but this practice is strongly 
discouraged.</p> 

<div3 id="fault-replacement" xml:space="default">
<head xml:space="default">Fault Replaces Message propagation rule</head>

<p xml:space="default">
	<assert class="exchange" id="FaultReplacesMessage-2007" cr-id="FaultReplacesMessage-2200201" required="false">
		When the Fault Replaces Message propagation rule is in effect,
		any message after the first in the pattern MAY be replaced with
		a fault message, which MUST have identical direction.
	</assert>
	<assert class="exchange" id="FaultDelivery-2008" cr-id="FaultDelivery-2200202" required="true">The fault message MUST be delivered to the same target node as the
	message it replaces, unless otherwise specified by an extension or
	binding extension. If there is no path to this node, the fault MUST
	be discarded.</assert>
</p>

<p xml:space="default">The Fault Replaces Message propagation rule is identified by the following URI: <code xml:space="default">http://www.w3.org/ns/wsdl/fault-replaces-message</code></p>

</div3>

<div3 id="fault-trigger" xml:space="default">
<head xml:space="default">Message Triggers Fault propagation rule</head>

<p xml:space="default">
	<assert class="exchange" id="MessageTriggersFault-2009" cr-id="MessageTriggersFault-2200301" required="false">
		When the Message Triggers Fault propagation rule is in effect, any message,
		including the first in the pattern, MAY trigger a
		fault message, which MUST have opposite direction.
	</assert>
	<assert class="exchange" id="FaultDelivery-2010" cr-id="FaultDelivery-2200302" required="true">The fault message MUST be delivered to the originator of the
	triggering message, unless otherwise specified by an extension or
	binding extension. Any node MAY propagate a fault message, and MUST
	NOT do so more than once for each triggering message. If there is no
	path to the originator, the fault MUST be discarded.</assert>
</p>

<p xml:space="default">The Message Triggers Fault propagation rule is identified by the following URI: <code xml:space="default">http://www.w3.org/ns/wsdl/message-triggers-fault</code></p>

</div3>

<div3 id="no-fault" xml:space="default">
<head xml:space="default">No Faults propagation rule</head>
<p xml:space="default">
	<assert class="exchange" id="NoFaults-2011" cr-id="NoFaults-2200401" required="true">
		When the No Faults propagation rule is in effect, faults MUST NOT be propagated.
	</assert>
</p>

<p xml:space="default">The No Faults propagation rule is identified by the following URI: <code xml:space="default">http://www.w3.org/ns/wsdl/no-faults</code></p>

</div3>

</div2>

<div2 id="patterns" xml:space="default">
<head xml:space="default">Message Exchange Patterns</head>

<p xml:space="default">WSDL patterns are described in terms of the WSDL component model,
specifically the <comp>Interface Message Reference</comp>
and <comp>Interface Fault Reference</comp> components. </p>

<div3 id="in-only" xml:space="default">
<head xml:space="default">In-Only message exchange pattern</head>
<p xml:space="default">
<assert class="component" id="InOnlyComposition-2012" cr-id="InOnlyComposition-2200501" required="true">
The <el xml:space="default">in-only</el> message exchange pattern
consists of exactly one message as follows:</assert>
</p>
<olist xml:space="default">
  <item xml:space="default">
    <p xml:space="default">
A message:
    </p>
    <ulist xml:space="default">
      <item xml:space="default">
        <p xml:space="default">
indicated by a <comp>Interface Message Reference</comp> component
whose <prop comp="Interface Message Reference">message label</prop>
is <attval xml:space="default">In</attval> and <prop comp="Interface Message Reference">direction</prop> is <attval xml:space="default">in</attval>
        </p>
      </item>
      <item xml:space="default">
        <p xml:space="default">
received from some node N
        </p>
      </item>
    </ulist>
  </item>
</olist>

<p xml:space="default"><assert class="exchange" id="InOnlyFaults-2013" cr-id="InOnlyFaults-2200502" required="true">The <el xml:space="default">in-only</el>
message exchange pattern uses the rule <specref ref="no-fault" xml:space="default"/>.</assert></p>
<p xml:space="default">
An operation using this message exchange pattern has a
<prop comp="Interface Operation">message exchange pattern</prop> property with
the value <attval xml:space="default">http://www.w3.org/ns/wsdl/in-only</attval>.
</p>
</div3>

<div3 id="robust-in-only" xml:space="default">
<head xml:space="default">Robust In-Only message exchange pattern</head>
<p xml:space="default"><assert class="component" id="RobustInOnlyComposition-2013" cr-id="RobustInOnlyComposition-2200601" required="true">
The <el xml:space="default">robust-in-only</el> message exchange
pattern consists of exactly one message as follows:</assert></p>
<olist xml:space="default">
  <item xml:space="default"><p xml:space="default">A message:</p>
    <ulist xml:space="default">
      <item xml:space="default"><p xml:space="default">indicated by a <comp>Interface Message Reference</comp> component whose
<prop comp="Interface Message Reference">message label</prop> is <attval xml:space="default">In</attval> and
<prop comp="Interface Message Reference">direction</prop> is <attval xml:space="default">in</attval></p></item>
      <item xml:space="default"><p xml:space="default">received from some node N</p></item>
    </ulist>
  </item>
</olist>
<p xml:space="default"><assert class="exchange" id="RobustInOnlyFaults-2014" cr-id="RobustInOnlyFaults-2200602" required="true">
The <el xml:space="default">robust in-only</el> message exchange pattern uses the rule <specref ref="fault-trigger" xml:space="default"/>.</assert></p>
<p xml:space="default">An operation using this message exchange pattern has a
<prop comp="Interface Operation">message exchange pattern</prop> property with
the value <attval xml:space="default">http://www.w3.org/ns/wsdl/robust-in-only</attval>.</p>
</div3>

<div3 id="in-out" xml:space="default">
<head xml:space="default">In-Out message exchange pattern</head>
<p xml:space="default"><assert class="component" id="InOutComposition-2015" cr-id="InOutComposition-2200701" required="true">
The <el xml:space="default">in-out</el> message exchange pattern
consists of exactly two messages, in order, as follows:</assert></p>
<olist xml:space="default">
  <item xml:space="default">
    <p xml:space="default">
A message:
    </p>
    <ulist xml:space="default">
      <item xml:space="default">
        <p xml:space="default">
indicated by a <comp>Interface Message Reference</comp> component
whose <prop comp="Interface Message Reference">message label</prop>
is <attval xml:space="default">In</attval> and <prop comp="Interface Message Reference">direction</prop> is <attval xml:space="default">in</attval>
        </p>
      </item>
      <item xml:space="default">
        <p xml:space="default">
received from some node N
        </p>
      </item>
    </ulist>
  </item>
  <item xml:space="default">
    <p xml:space="default">
A message:
    </p>
    <ulist xml:space="default">
      <item xml:space="default">
        <p xml:space="default">
indicated by a <comp>Interface Message Reference</comp> component
whose <prop comp="Interface Message Reference">message label</prop>
is <attval xml:space="default">Out</attval> and <prop comp="Interface Message Reference">direction</prop> is <attval xml:space="default">out</attval>
        </p>
      </item>
      <item xml:space="default">
        <p xml:space="default">
sent to node N
        </p>
      </item>
    </ulist>
  </item>
</olist>
<p xml:space="default"><assert class="exchange" id="InOutFaults-2016" cr-id="InOutFaults-2200702" required="true">
The <el xml:space="default">in-out</el> message exchange pattern uses the rule <specref ref="fault-replacement" xml:space="default"/>.</assert></p>
<p xml:space="default">
An operation using this message exchange pattern has
a <prop comp="Interface Operation">message exchange pattern</prop> property with
the value <attval xml:space="default">http://www.w3.org/ns/wsdl/in-out</attval>.
</p>
</div3>

</div2><!-- message exchange patterns -->

<div2 id="mep-sec-sec" xml:space="default">
  <head xml:space="default">Security Considerations</head>

<p xml:space="default">Note that many of the message exchange patterns defined above describe
responses to an initial message (either a normal response message or a
fault.)</p>

<p xml:space="default">Such responses can be used in attempts to disrupt, attack, or map a
network, host, or services. When such responses are directed to an
address other than that originating the initial message, the source of
an attack can be obscured, or blame laid on a third party, or
denial-of-service attacks can be enabled or exacerbated.</p>

<p xml:space="default">Security mechanisms addressing such attacks can prevent the
delivery of response messages to the receiving node. Conformance to
the message exchange pattern is measured prior to the application of
these security mechanisms.</p>
</div2>

</div1><!-- section on meps -->

    <!-- *************************************************************** -->

    <div1 id="ext" xml:space="default">
      <head xml:space="default">Predefined Extensions</head>

      <div2 id="safety" xml:space="default">
	<head xml:space="default">Operation safety</head>

	<p xml:space="default">
	  This section defines an extension to WSDL 2.0 <bibref ref="WSDL-PART1" xml:space="default"/> that allows marking an operation as a
	  safe interaction, as defined in <xspecref href="http://www.w3.org/TR/2004/REC-webarch-20041215/#safe-interaction" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">section
	  3.4. Safe Interactions</xspecref> of <bibref ref="webarch" xml:space="default"/>.
	</p>

	<p xml:space="default">
	  This extension MAY be used for setting defaults in bindings,
	  such as in the HTTP binding (see
	  <specref ref="http-operation-decl-mapping" xml:space="default"/>).
	</p>

        <div3 id="safety-decl-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

	  <p xml:space="default">The safety extension adds the following property to the
	  <comp>Interface Operation</comp> component model (defined in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>
	  
	  <ulist xml:space="default">
	    <item xml:space="default"><p xml:space="default"><propdef comp="Interface Operation">safe</propdef> REQUIRED. An <emph xml:space="default">xs:boolean</emph>
	    indicating whether the operation is asserted to be safe
	    for users to invoke.  If this
	    property is <attval xml:space="default">false</attval>, then no assertion has been made about
	    the safety of the operation, thus the operation MAY or MAY
	    NOT be safe.  <assert class="component" id="OperationSafety-2027" cr-id="OperationSafety-2300001" required="false">However, an operation SHOULD be marked safe
	    if it meets the criteria for a safe interaction defined in
	    Section 3.4 of <bibref ref="webarch" xml:space="default"/>.</assert></p></item>
	  </ulist>
	</div3>

        <div3 id="safety-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>
	  <eg xml:space="preserve">&lt;description&gt;
 &lt;interface&gt;
   &lt;operation name="<emph xml:space="default">xs:NCName</emph>" pattern="<emph xml:space="default">xs:anyURI</emph>"
              <b>wsdlx:safe</b>="<emph xml:space="default">xs:boolean</emph>"? &gt;
  &lt;/operation&gt;
 &lt;/interface&gt;
&lt;/description&gt;</eg>

	  <p xml:space="default">The XML representation for the safety extension is an
	  <emph xml:space="default">attribute information item</emph> with the following Infoset properties: </p>
	  <ulist xml:space="default">
	    <item xml:space="default">
	      <p xml:space="default"><assert class="document" id="OperationSafety-2028" cr-id="OperationSafety-2300002" required="false">An OPTIONAL <att xml:space="default">safe</att>
	      <emph xml:space="default">attribute information item</emph> with the following
	      Infoset properties:</assert></p>
                  <ulist xml:space="default">
                    <item xml:space="default">
		      <p xml:space="default">A [local name] of <att xml:space="default">safe</att>
                      </p>
                    </item>
		    <item xml:space="default">
		      <p xml:space="default">A [namespace name] of <attval xml:space="default">http://www.w3.org/ns/wsdl-extensions</attval>
		      </p>
		    </item>
		    <item xml:space="default">
		      <p xml:space="default">A type of <emph xml:space="default">xs:boolean</emph></p>
		    </item>
                  </ulist>
                </item>
	  </ulist>

	</div3>

	<div3 id="safety-decl-mapping" xml:space="default">
          <head xml:space="default">Mapping from XML Representation to Component Properties</head>
          <p xml:space="default">See <specref ref="tab_safety_Mapping" xml:space="default"/>.</p>

          <table border="1" id="tab_safety_Mapping" xml:space="default">
            <caption xml:space="default">Mapping from XML Representation to Interface Operation component Extension Properties</caption>
            <tbody xml:space="default">
              <tr xml:space="default">
                <th rowspan="1" colspan="1" xml:space="default">Property</th>
                <th rowspan="1" colspan="1" xml:space="default">Value</th>
              </tr>
	      <tr xml:space="default">
		<td xml:space="default" rowspan="1" colspan="1"><prop comp="Interface Operation">safe</prop></td>
		<td xml:space="default" rowspan="1" colspan="1">
		  The actual value of the <att xml:space="default">safe</att> <emph xml:space="default">attribute information item</emph>, if
		  present; otherwise the value <attval xml:space="default">false</attval>.
		</td>
	      </tr>
	    </tbody>
	  </table>
	</div3>

      </div2>

    </div1>

    <!-- *************************************************************** -->

    <div1 id="styles" xml:space="default">
      <head xml:space="default">Predefined Operation Styles</head>

        <p xml:space="default">
	This section defines <xspecref href="http://www.w3.org/TR/2007/PR-wsdl20-20070523#InterfaceOperationStyle" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">operation
	styles</xspecref> that can be used to place constraints on
        <comp>Interface Operation</comp> components, in particular
	with respect to the format of the messages they refer to.
	The serialization formats defined in section
	<specref ref="_http_serialization" xml:space="default"/> require bound
	<comp>Interface Operation</comp> components to have one
	or more of the styles defined in this section.
      </p>

      <div2 id="RPCStyle" xml:space="default">
    	<head xml:space="default">RPC Style</head>

    	<p xml:space="default">
    		The RPC style is selected by including the value
    		<attval xml:space="default">http://www.w3.org/ns/wsdl/style/rpc</attval>
    		in the
    		<prop comp="Interface Operation">style</prop>
    		property of an
    		<comp>Interface Operation</comp>
    		component.
    	</p>

    	<p xml:space="default">An <comp>Interface Operation</comp> component conforming to the RPC style
         MUST obey the constraints listed further
         below. Also, if the <att xml:space="default">wrpc:signature</att> extension is
         engaged simulatenously, the corresponding <emph xml:space="default">attribute information item</emph> MUST be valid according to the schema
         for the extension and additionally MUST obey the constraints listed
         in <specref ref="InterfaceOperation_RPC_Signature_Definition" xml:space="default"/>
         and <specref ref="InterfaceOperation_RPC_Signature_XMLRep" xml:space="default"/>.</p>
         <p xml:space="default">Furthermore, the
         associated messages MUST conform to the rules below,
         described using XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/>.  Note
         that operations containing messages described by other type
         systems may also indicate use of the RPC style, as long as
         they are constructed in such a way as to follow these
         rules.</p>

	 <p xml:space="default"><assert class="component" id="RPCStyle-2029" cr-id="RPCStyle-5007" required="true">If the RPC style is used by an <comp>Interface Operation</comp>
	 component then its <prop comp="Interface Operation">message exchange pattern</prop>
	 property MUST have the value either <attval xml:space="default">http://www.w3.org/ns/wsdl/in-only</attval> or <attval xml:space="default">http://www.w3.org/ns/wsdl/in-out</attval>.</assert></p>
	
	 <p xml:space="default">If the <comp>Interface Operation</comp> component uses a
	 <prop comp="Interface Operation">message exchange pattern</prop> for which there is no output
	 element, i.e. <attval xml:space="default">http://www.w3.org/ns/wsdl/in-only</attval>, then the conditions
	 stated below that refer to output elements MUST be considered
	 to be implicitly satisfied.</p>
	
	 <ulist xml:space="default">
	
	   <item xml:space="default"><p xml:space="default"><assert class="component" id="RPCStyle-2030" cr-id="RPCStyle-5008" required="true">
	   The value of the <prop comp="Interface Message Reference">message content model</prop>
	   property for the <comp>Interface Message Reference</comp> components of the
	   <prop comp="Interface Operation">interface message
	   references</prop> property MUST be
	   <attval xml:space="default">#element</attval>.</assert></p></item>
	
	   <item xml:space="default"><p xml:space="default"> <assert class="component" id="RPCStyle-2031" cr-id="RPCStyle-5009" required="true">The content model of input and output
       <prop comp="Interface Message Reference">element declaration</prop>
	   elements MUST be defined using a complex type that contains a
	   sequence from XML Schema.</assert></p></item>
	
	   <item xml:space="default"><p xml:space="default"> <assert class="component" id="RPCStyle-2032" cr-id="RPCStyle-5010" required="true">The input sequence MUST only contain elements and element wildcards.</assert>
           It MUST NOT contain other structures such as <el xml:space="default">xs:choice</el>. <assert class="component" id="RPCStyle-2033" cr-id="RPCStyle-5011" required="true">The input sequence
           MUST NOT contain more than one element wildcard.</assert> <assert class="component" id="RPCStyle-2034" cr-id="RPCStyle-5012" required="true">The element wildcard, if
           present, MUST appear after any elements.</assert></p></item>

           <item xml:space="default"><p xml:space="default"><assert class="component" id="RPCStyle-2035" cr-id="RPCStyle-5013" required="true">The output sequence MUST only contain elements.</assert> It MUST NOT contain
           other structures such as <el xml:space="default">xs:choice</el>.</p></item>
	
	   <item xml:space="default"><p xml:space="default"><assert class="component" id="RPCStyle-2036" cr-id="RPCStyle-5014" required="true">Both the input and output sequences MUST contain only local element
	   children.</assert> Note that these child elements MAY contain the
	   following attributes: <el xml:space="default">nillable</el>, <el xml:space="default">minOccurs</el> and
	   <el xml:space="default">maxOccurs</el>.</p></item>
	
	   <item xml:space="default"><p xml:space="default"><assert class="component" id="RPCStyle-2037" cr-id="RPCStyle-5015" required="true">The local name of input element's QName MUST be
	   the same as the <comp>Interface Operation</comp> component's
	   name.</assert></p></item>
	
	   <item xml:space="default"><p xml:space="default"><assert class="component" id="RPCStyle-2038" cr-id="RPCStyle-5016" required="true">Input and output elements MUST both be in the
	   same namespace.</assert></p></item>
	
	   <item xml:space="default"><p xml:space="default"> <assert class="component" id="RPCStyle-2039" cr-id="RPCStyle-5017" required="true">The complex type that defines the body of an
	   input or an output element MUST NOT contain any local
	   attributes.</assert> Extension attributes are allowed for purposes
           of managing the message infrastructure (e.g. adding identifiers
           to facilitate digitally signing the contents of the message).
           They must not be considered as part of the application data
           that is conveyed by the message. Therefore, they are never
           included in an RPC signature (see <specref ref="InterfaceOperation_RPC_Signature_Definition" xml:space="default"/>).
           </p></item>
	
	   <item xml:space="default"><p xml:space="default"> <assert class="component" id="RPCStyle-2040" cr-id="RPCStyle-5018" required="true">If elements with the same qualified name appear
	   as children of both the input and output elements, then
	   they MUST both be declared using the same named type.</assert></p></item>
	
	   <item xml:space="default"><p xml:space="default"><assert class="component" id="RPCStyle-2041" cr-id="RPCStyle-5019" required="true">The input or output sequence MUST NOT contain
	   multiple children elements declared with the same
	   name.</assert></p></item>
	
	  </ulist>
    <div3 id="InterfaceOperation_RPC_Signature_Definition" xml:space="default">
      <head xml:space="default"><att xml:space="default">wrpc:signature</att> Extension</head>
	
	<p xml:space="default">The <att xml:space="default">wrpc:signature</att> extension <emph xml:space="default">attribute information item</emph> MAY be used in conjunction with
	the RPC style to describe the exact signature of the function represented
	by an operation that uses the RPC style.</p>
    
	<p xml:space="default">When present, the <att xml:space="default">wrpc:signature</att> extension contributes the following
	property to the <comp>Interface Operation</comp> component it is applied to:</p>
       <ulist xml:space="default">
	<item xml:space="default"><p xml:space="default"><propdef comp="Interface Operation">rpc signature</propdef><assert class="component" id="WRPC-2042" cr-id="WRPC-5019" required="true"> OPTIONAL,
	but MUST be present when the style is RPC</assert>. A list of pairs <emph xml:space="default">(q, t)</emph>
	whose first component is of type <emph xml:space="default">xs:QName</emph> and whose second component is of type
	<emph xml:space="default">xs:token</emph>.
	<assert class="component" id="WRPC-2043" cr-id="WRPC-5020" required="true">Values for the second component MUST be chosen among the following four:
	"#in", "#out", "#inout" "#return".</assert></p></item>
	
	</ulist>
	<p xml:space="default">
	The value of the <prop comp="Interface Operation">rpc signature</prop> property MUST satisfy the following conditions:
	</p>
	<ulist xml:space="default">
	  <item xml:space="default"><p xml:space="default"><assert class="component" id="WRPC-2044" cr-id="WRPC-5021" required="true">The value of the first component of each pair <emph xml:space="default">(q, t)</emph> MUST
	  be unique within the list.</assert></p></item>
	  <item xml:space="default"><p xml:space="default"><assert class="component" id="WRPC-2045" cr-id="WRPC-5022" required="true">For each child element of the input and output messages of the operation,
	  a pair <emph xml:space="default">(q, t)</emph>, whose first component <emph xml:space="default">q</emph> is equal to
	  the qualified name of that element, MUST be present in the list, with the caveat
	  that elements that appear with cardinality greater than one MUST be treated as
	  a single element.</assert></p></item>
	  <item xml:space="default"><p xml:space="default"><assert class="component" id="WRPC-2046" cr-id="WRPC-5023" required="true">For each pair <emph xml:space="default">(q, #in)</emph>, there MUST be a child element of the
	  input element with a name of <emph xml:space="default">q</emph>. There MUST NOT be a child element
	  of the output element with the name of <emph xml:space="default">q</emph>.</assert></p></item>
	  <item xml:space="default"><p xml:space="default"><assert class="component" id="WRPC-2047" cr-id="WRPC-5024" required="true">For each pair <emph xml:space="default">(q, #out)</emph>, there MUST be a child element of the
	  output element with a name of <emph xml:space="default">q</emph>. There MUST NOT be a child element
	  of the input element with the name of <emph xml:space="default">q</emph>.</assert></p></item>
	  <item xml:space="default"><p xml:space="default"><assert class="component" id="WRPC-2048" cr-id="WRPC-5025" required="true">For each pair <emph xml:space="default">(q, #inout)</emph>, there MUST be a child element of the
	  input element with a name of <emph xml:space="default">q</emph>. There MUST also be a child element
	  of the output element with the name of <emph xml:space="default">q</emph>.</assert></p></item>
	  <item xml:space="default"><p xml:space="default"><assert class="component" id="WRPC-2049" cr-id="WRPC-5026" required="true">For each pair <emph xml:space="default">(q, #return)</emph>, there MUST be a child element of the
	  output element with a name of <emph xml:space="default">q</emph>. There MUST NOT be a child element
	  of the input element with the name of <emph xml:space="default">q</emph>.</assert></p></item>
	</ulist>
	<p xml:space="default">
	The function signature defined by a <att xml:space="default">wrpc:signature</att> extension is
	determined as follows:
        </p>
	<olist xml:space="default">
	  <item xml:space="default"><p xml:space="default">Start with the value of the <prop comp="Interface Operation">rpc signature</prop> property, a (possibly empty)
	  list of pairs of this form:</p>
	  <p xml:space="default">    <emph xml:space="default">[(q0, t0), (q1, t1), ...]</emph></p></item>
	  <item xml:space="default"><p xml:space="default">Filter the elements of this list into two lists, the first one <emph xml:space="default">(L1)</emph>
	     comprising pairs
	     whose <emph xml:space="default">t</emph> component is one of <emph xml:space="default">{#in, #out, #inout}</emph>,
	     the second <emph xml:space="default">(L2)</emph> pairs
	     whose <emph xml:space="default">t</emph> component is <emph xml:space="default">#return</emph>.
             During the composition of <emph xml:space="default">L1</emph> and <emph xml:space="default">L2</emph>,
             the relative order of members in the original list MUST
             be preserved.</p>
	     <p xml:space="default">For ease of visualization, let's denote the two lists as:</p>
	     <p xml:space="default">    (L1)    <emph xml:space="default">[(a0, u0), (a1, u1), ...]</emph></p>
	     <p xml:space="default">and</p>
	     <p xml:space="default">    (L2)    <emph xml:space="default">[(r0, #return), (r1, #return), ...]</emph></p>
	     <p xml:space="default">respectively.</p></item>
	  <item xml:space="default"><p xml:space="default">Then, if the input sequence ends with an element wildcard, the formal
                signature of the function is:</p>
	     <p xml:space="default">    <emph xml:space="default">f([d0] a0, [d1] a1, ..., rest) =&gt; (r0, r1, ...)</emph></p>
             <p xml:space="default">where <emph xml:space="default">rest</emph> is a formal parameter representing the elements in the
                input message matched by the element wildcard.</p>
             <p xml:space="default">Otherwise the formal signature of the function is:</p>
	     <p xml:space="default">    <emph xml:space="default">f([d0] a0, [d1] a1, ...) =&gt; (r0, r1, ...)</emph></p>
	     <p xml:space="default">i.e.:</p>
	     <p xml:space="default">
	       <ulist xml:space="default">
		 <item xml:space="default"><p xml:space="default">the list of formal arguments to the function is <emph xml:space="default">[a0, a1, ...]</emph>;
		 </p></item>
		 <item xml:space="default"><p xml:space="default">the direction <emph xml:space="default">d</emph> of each formal argument <emph xml:space="default">a</emph> is one of
		 <emph xml:space="default">[in]</emph>, <emph xml:space="default">[out]</emph>, <emph xml:space="default">[inout]</emph>,
		 determined according to the value of its corresponding <emph xml:space="default">u</emph> token;
		 </p></item>
		 <item xml:space="default"><p xml:space="default">the list of formal return parameters of the function is
		   <emph xml:space="default">[r0, r1, ...]</emph>;</p></item>
		 <item xml:space="default"><p xml:space="default">each formal argument and formal return parameter is typed
		 according to the type of the child element identified by it
		 (unique per the conditions given above).</p></item>
	       </ulist>
	     </p>
	    </item>
	</olist>

	<note xml:space="default">
	    <p xml:space="default">The <att xml:space="default">wrpc:signature</att> extension allows the specification
            of multiple return values for an operation. Several popular programming
            languages support multiple return values for a function. Moreover, for
            languages which do not, the burden on implementers should be small,
            as typically multiple return values will be mapped to a single
            return value of a structure type (or its closest language-specific
            equivalent). </p>
	</note>

	</div3>

      <div3 id="InterfaceOperation_RPC_Signature_XMLRep" xml:space="default">
        <head xml:space="default">XML Representation of the <att xml:space="default">wrpc:signature</att> Extension</head>
          <p xml:space="default">
	  The XML representation for the RPC signature extension is an
	  <emph xml:space="default">attribute information item</emph> with the following Infoset properties:
	  </p>
	  <ulist xml:space="default">
	      <item xml:space="default"><p xml:space="default">A [local name] of <att xml:space="default">signature</att></p></item>
	      <item xml:space="default"><p xml:space="default">A [namespace name] of "http://www.w3.org/ns/wsdl/rpc"</p></item>
	  </ulist>
	  <p xml:space="default">
	  The type of the <att xml:space="default">signature</att> <emph xml:space="default">attribute information item</emph> is a list type whose item type is
	  the union of the <emph xml:space="default">xs:QName</emph> type and the subtype of
	  the <emph xml:space="default">xs:token</emph> type restricted to the following
	  four values: "#in", "#out", "#inout",
	  "#return".
          See <specref ref="rpc-signature-xsd" xml:space="default"/> for an excerpt from the
          normative schema definition of this type.
	  </p>
	  <p xml:space="default"><assert class="document" id="WRPC-2050" cr-id="WRPC-5027" required="true">Additionally, each even-numbered item (0, 2, 4, ...) in the list
	  MUST be of type <emph xml:space="default">xs:QName</emph> and each odd-numbered item (1, 3, 5, ...)
	  in the list MUST be of the subtype of <emph xml:space="default">xs:token</emph> described in the
	  previous paragraph.</assert>
	  </p>
	  <p xml:space="default"/>
          <p xml:space="default">
	    <example id="rpc-signature-xsd" xml:space="default">
	    <head xml:space="default">Definition of the wrpc:signature extension</head>
	    <eg xml:space="default">
&lt;xs:attribute name="signature" type="wrpc:signatureType"/&gt;

&lt;xs:simpleType name="signatureType"&gt;
  &lt;xs:list itemType="wrpc:signatureItemType"/&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="signatureItemType"&gt;
  &lt;xs:union memberTypes="xs:QName wrpc:directionToken"/&gt;
&lt;/xs:simpleType&gt;

&lt;xs:simpleType name="directionToken"&gt;
  &lt;xs:restriction base="xs:token"&gt;
    &lt;xs:enumeration value="#in"/&gt;
    &lt;xs:enumeration value="#out"/&gt;
    &lt;xs:enumeration value="#inout"/&gt;
    &lt;xs:enumeration value="#return"/&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
	  
	   </eg>
	   </example>
          </p>
      </div3>

    <div3 id="InterfaceOperation_RPC_Signature_Mapping" xml:space="default">
	  <head xml:space="default"><att xml:space="default">wrpc:signature </att>Extension Mapping To Properties of an
	  Interface Operation component</head>

	  <p xml:space="default">A <att xml:space="default">wrpc:signature</att> extension <emph xml:space="default">attribute information item</emph> is mapped to the following
	  property of the <comp>Interface Operation</comp> component defined by its [owner].</p>

	  <table border="1" id="tab_InterfaceOperation_RPC_Signature_Mapping" xml:space="default">
	    <caption xml:space="default">Mapping of a <att xml:space="default">wrpc:signature</att> Extension to Interface Operation component Properties</caption>
		<col width="20%" xml:space="default" span="1"/>
  		<col width="80%" xml:space="default" span="1"/>
	    <tbody xml:space="default">
		  <tr xml:space="default">
		    <th xml:space="default" rowspan="1" colspan="1">Property</th>
		    <th xml:space="default" rowspan="1" colspan="1">Value</th>
		  </tr>
		  <tr xml:space="default">
		    <td xml:space="default" rowspan="1" colspan="1"><prop comp="Interface Operation">rpc signature</prop></td>
			<td xml:space="default" rowspan="1" colspan="1"> A list of <emph xml:space="default">(xs:QName, xs:token)</emph> pairs formed
			by grouping the items present in the actual value of the
			<att xml:space="default">wrpc:signature</att> <emph xml:space="default">attribute information item</emph> in the order in which they appear
			there.</td>
		  </tr>
		</tbody>
	  </table>

    </div3>
      
    </div2>



        <div2 id="_operation_iri_style" xml:space="default">
          <head xml:space="default">IRI Style</head>
 
    	<p xml:space="default">
    		The IRI style is selected by including the value
    		<attval xml:space="default">http://www.w3.org/ns/wsdl/style/iri</attval>
    		in the
    		<prop comp="Interface Operation">style</prop>
    		property of an
    		<comp>Interface Operation</comp>
    		component.
    	</p>

	   <p xml:space="default"><assert class="component" id="IRIStyle-2051" cr-id="IRIStyle-5028" required="true">When using this style, the value of the <prop comp="Interface Message Reference">message content
	   model</prop> property of the <comp>Interface Message
	   Reference</comp> component corresponding to the initial
	   message of the message exchange pattern MUST be
	   <attval xml:space="default">#element</attval>.</assert></p>
	
          <p xml:space="default">
	  Use of this value indicates that XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/> was used to define the schema of the
	  <prop comp="Interface Message Reference">element declaration</prop>
	  property of the <comp>Interface Message
	  Reference</comp> component of the <comp>Interface Operation</comp> component
	  corresponding to the initial message of the message exchange
	  pattern. This schema MUST adhere to the rules below:
	</p>
          <ulist xml:space="default">
            <item xml:space="default">
              <p xml:space="default">
	      The content model of this element
	      is defined using a complex type that contains a
	      sequence from XML Schema.
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="IRIStyle-2052" cr-id="IRIStyle-5029" required="true">The sequence MUST only contain elements.</assert> It MUST NOT
	      contain other structures such as <el xml:space="default">xs:choice</el>. There are no occurence constraints on the sequence.
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="IRIStyle-2053" cr-id="IRIStyle-5030" required="true">The sequence MUST contain only local element
	      children.</assert> Note these child elements can contain the
	      <att xml:space="default">nillable</att> attribute.</p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="IRIStyle-2054" cr-id="IRIStyle-5031" required="true">The localPart of the element's QName MUST be the same
	      as the <comp>Interface Operation</comp> component's
	      <prop comp="Interface Operation">name</prop>.</assert>
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="IRIStyle-2055" cr-id="IRIStyle-5032" required="true">The complex type that defines the body of the 
	      element or its children elements MUST NOT contain any
	      attributes.</assert>
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="IRIStyle-2056" cr-id="IRIStyle-5034" required="true">The children elements of the sequence <!-- are
	      defined using an XML Schema type, they --> MUST derive from
	      <code xml:space="default">xs:simpleType</code>, and MUST NOT be of the type
	      or derive from <code xml:space="default">xs:QName</code>,
	      <code xml:space="default">xs:NOTATION</code>, <code xml:space="default">xs:hexBinary</code> or
	      <code xml:space="default">xs:base64Binary</code>.</assert>
	    </p>
            </item>
          </ulist>
        </div2>
        <div2 id="_operation_multipart_style" xml:space="default">
          <head xml:space="default">Multipart style</head>

    	<p xml:space="default">
    		The Multipart style is selected by including the value
    		<attval xml:space="default">http://www.w3.org/ns/wsdl/style/multipart</attval>
    		in the
    		<prop comp="Interface Operation">style</prop>
    		property of an
    		<comp>Interface Operation</comp>
    		component.
    	</p>

	   <p xml:space="default"><assert class="component" id="MultipartStyle-2057" cr-id="MultipartStyle-5035" required="true">When using this style, the value of the <prop comp="Interface Message Reference">message content
	   model</prop> property of the <comp>Interface Message
	   Reference</comp> component corresponding to the initial
	   message of the message exchange pattern MUST be
	   <attval xml:space="default">#element</attval>.</assert></p>
	
          <p xml:space="default">
	  Use of this value indicates that XML Schema <bibref ref="XMLSchemaP1" xml:space="default"/> was used to define the schema of the
	  <prop comp="Interface Message Reference">element declaration</prop>
	  property of the <comp>Interface Message
	  Reference</comp> component of the <comp>Interface Operation</comp> component
	  corresponding to the initial message of the message exchange
	  pattern. This schema MUST adhere to the rules below:
	</p>
          <ulist xml:space="default">
            <item xml:space="default">
              <p xml:space="default">
	      The content model of this element
	      is defined using a complex type that contains a
	      sequence from XML Schema.
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="MultipartStyle-2058" cr-id="MultipartStyle-5036" required="true">The sequence MUST only contain elements.</assert> It MUST NOT
	      contain other structures such as <el xml:space="default">xs:choice</el>.
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="MultipartStyle-2059" cr-id="MultipartStyle-5081" required="true">The sequence MUST contain only local element
	      children.</assert>
	      <assert class="component" id="MultipartStyle-2060" cr-id="MultipartStyle-5082" required="true"> The attributes
	      <att xml:space="default">minOccurs</att> and <att xml:space="default">maxOccurs</att> for these child elements MUST have
	      a value <code xml:space="default">1</code>.</assert>
	      Note these child elements can contain the
	      <att xml:space="default">nillable</att> attribute. 
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="MultipartStyle-2061" cr-id="MultipartStyle-5037" required="true">The localPart of the element's QName MUST be the same
	      as the <comp>Interface Operation</comp> component's
	      <prop comp="Interface Operation">name</prop>.</assert>
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="MultipartStyle-2062" cr-id="MultipartStyle-5038" required="true">The complex type that defines the body of the 
	      element or its children elements MUST NOT contain any
	      attributes.</assert>
	    </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">
	      <assert class="component" id="MultipartStyle-2063" cr-id="MultipartStyle-5039" required="true">The sequence MUST NOT contain multiple children
	      element declared with the same local name.</assert>
	    </p>
            </item>
          </ulist>
        </div2>

    </div1>

    <!-- *************************************************************** -->

    <div1 id="soap-binding" xml:space="default">
      <head xml:space="default">WSDL SOAP Binding Extension</head> 

      <p xml:space="default">The SOAP binding extension described in this section is an extension
      for <bibref ref="WSDL-PART1" xml:space="default"/> to enable Web services
      applications to use SOAP. This binding extension is SOAP version
      independent ("1.2" as well as other versions) and extends WSDL 2.0 by adding properties to the
      <comp>Binding</comp>
      component, and its related components, as defined in <bibref ref="WSDL-PART1" xml:space="default"/>. In addition, an XML Infoset representation
      for these additional properties is provided, along with a
      mapping from that representation to the various component
      properties.</p>
      
      <p xml:space="default">As allowed in <bibref ref="WSDL-PART1" xml:space="default"/>, a <comp>Binding</comp> component
      can exist without indicating a specific <comp>Interface</comp>
      component that it applies to. In this case,
      no <comp>Binding Operation</comp> or
      <comp>Binding Fault</comp> component can be present in the <comp>Binding</comp>
      component.</p>
      
      <p xml:space="default">The SOAP binding extension is designed with the objective of minimizing
what needs to be explicitly declared for common cases. This is achieved
by defining a set of default rules that affect all <comp>Interface Operation</comp>
components of an <comp>Interface</comp> component to which the SOAP binding extension
is applied, unless specifically overridden by a <comp>Binding Operation</comp> component.
Thus, if a given <comp>Interface Operation</comp> component is not referred to
specifically by a <comp>Binding Operation</comp> component, then all the default
rules apply to that <comp>Interface Operation</comp> component. As a result, in
accordance with the requirements of <bibref ref="WSDL-PART1" xml:space="default"/>, all
operations of an <comp>Interface</comp> component will be bound by this binding
extension.</p>

      <p xml:space="default"><b>Note:</b> As in other parts of this specification, one could have done
      away with "default" properties at the component model level, and have set the value for the
      corresponding non-default properties in the XML mapping section. However, default properties
      are required for interface-less binding. Indeed, an interface-less binding has no means to
      set the non-default version of the property at the operation-level, since there is precisely
      no operation (there is not even an interface). Hence the mapping needs to be done elsewhere.
      </p>

      <p xml:space="default">A subset of the HTTP properties specified in the HTTP binding extension
      defined in section <specref ref="http-binding" xml:space="default"/> are
      present in a SOAP binding when the SOAP binding uses HTTP as
      the underlying protocol, for example, when the value of the
      <prop comp="Binding">soap underlying protocol</prop> property of the <comp>Binding</comp>
      component is <attval xml:space="default">http://www.w3.org/2003/05/soap/bindings/HTTP/</attval>.  
      <assert class="component" id="SOAPHTTPProperties-2064" cr-id="SOAPHTTPProperties-2500001" required="true">These properties MUST NOT be used
      unless the underlying protocol is HTTP.</assert>
      The allowed properties are
      the ones that describe the underlying protocol (HTTP):</p>

      <ulist xml:space="default">
	<item xml:space="default"><p xml:space="default"><prop comp="Binding Operation">http location</prop>
	and <prop comp="Binding Operation">http location ignore uncited</prop>
	on <comp>Binding Operation</comp>
	components, as defined in <specref ref="http-operation-decl" xml:space="default"/>
	and <specref ref="_http_urlencoded_stop" xml:space="default"/>, respectively.</p></item>
	<item xml:space="default"><p xml:space="default"><prop comp="Binding Message Reference">http headers</prop> on <comp>Binding Message Reference</comp> and <comp>Binding Fault</comp> components, as defined in <specref ref="http-headers-decl" xml:space="default"/></p></item>
	<item xml:space="default"><p xml:space="default"><prop comp="Binding">http query parameter
	separator default</prop> on <comp>Binding</comp> components,
	<prop comp="Binding Operation">http query parameter
	separator</prop> on <comp>Binding Operation</comp> components,
	as defined in <specref ref="http-operation-decl-relate" xml:space="default"/></p></item>
	<item xml:space="default"><p xml:space="default"><prop comp="Binding">http content
	encoding default</prop> on <comp>Binding</comp> and <comp>Binding Operation</comp> components, <prop comp="Binding Message Reference">http content
	encoding</prop> on <comp>Binding Message Reference</comp> and <comp>Binding Fault</comp> components, as defined in <specref ref="http-content-encoding-decl" xml:space="default"/></p></item>
	<item xml:space="default"><p xml:space="default"><prop comp="Binding">http cookies</prop> on <comp>Binding</comp> components, as defined in <specref ref="http-cookies-decl" xml:space="default"/>.</p></item>
	<item xml:space="default"><p xml:space="default"><prop comp="Endpoint">http authentication scheme</prop> and
	<prop comp="Endpoint">http authentication realm</prop> on <comp>Endpoint</comp> components, as defined in <specref ref="http-auth-decl" xml:space="default"/></p></item>
      </ulist>

      <!-- +++++++++ -->

      <div2 id="soap-syntax" xml:space="default">
        <head xml:space="default">SOAP Syntax Summary (Non-Normative)</head>

        <eg xml:space="preserve">
&lt;description&gt;
  &lt;binding name="<emph xml:space="default">xs:NCName</emph>" interface="<emph xml:space="default">xs:QName</emph>"?
           type="<emph xml:space="default">http://www.w3.org/ns/wsdl/soap</emph>"
           whttp:queryParameterSeparatorDefault="<emph xml:space="default">xs:string</emph>"??
           whttp:contentEncodingDefault="<emph xml:space="default">xs:string</emph>"??
           whttp:cookies="<emph xml:space="default">xs:boolean</emph>"?
           <b>wsoap:version</b>="<emph xml:space="default">xs:string</emph>"?
           <b>wsoap:protocol</b>="<emph xml:space="default">xs:anyURI</emph>"
           <b>wsoap:mepDefault</b>="<emph xml:space="default">xs:anyURI</emph>"? &gt;
    &lt;documentation /&gt;*

    &lt;<b>wsoap:module</b> ref="<emph xml:space="default">xs:anyURI</emph>" required="<emph xml:space="default">xs:boolean</emph>"? &gt;
      &lt;documentation /&gt;*
    &lt;/<b>wsoap:module</b>&gt;*
    
    &lt;fault ref="<emph xml:space="default">xs:QName</emph>"
           <b>wsoap:code</b>="<emph xml:space="default">union of xs:QName, xs:token</emph>"?
           <b>wsoap:subcodes</b>="<emph xml:space="default">union of (list of xs:QName), xs:token</emph>"?
           whttp:contentEncoding="<emph xml:space="default">xs:string</emph>"?? &gt;

      &lt;documentation /&gt;*

      &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;<b>wsoap:header</b> element="<emph xml:space="default">xs:QName</emph>" mustUnderstand="xs:boolean"?
                    required="<emph xml:space="default">xs:boolean</emph>"? &gt;
        &lt;documentation /&gt;*
      &lt;/<b>wsoap:header</b>&gt;*
      &lt;whttp:header ... /&gt;*??

    &lt;/fault&gt;*

    &lt;operation ref="<emph xml:space="default">xs:QName</emph>" 
               whttp:location="<emph xml:space="default">xs:anyURI</emph>"??
               whttp:contentEncodingDefault="<emph xml:space="default">xs:string</emph>"??
               whttp:queryParameterSeparator="<emph xml:space="default">xs:string</emph>"??
               whttp:ignoreUncited="<emph xml:space="default">xs:boolean</emph>"??
               <b>wsoap:mep</b>="<emph xml:space="default">xs:anyURI</emph>"?
               <b>wsoap:action</b>="<emph xml:space="default">xs:anyURI</emph>"? &gt;

      &lt;documentation /&gt;*

      &lt;<b>wsoap:module</b> ... /&gt;*

      &lt;input messageLabel="<emph xml:space="default">xs:NCName</emph>"?
             whttp:contentEncoding="<emph xml:space="default">xs:string</emph>"?? &gt;
        &lt;documentation /&gt;*
        &lt;<b>wsoap:module</b> ... /&gt;*
        &lt;<b>wsoap:header</b> ... /&gt;*
        &lt;<b>whttp:header</b> ... /&gt;*??
      &lt;/input&gt;*

      &lt;output messageLabel="<emph xml:space="default">xs:NCName</emph>"?
             whttp:contentEncoding="<emph xml:space="default">xs:string</emph>"?? &gt;
        &lt;documentation /&gt;*
        &lt;<b>wsoap:module</b> ... /&gt;*
        &lt;<b>wsoap:header</b> ... /&gt;*
        &lt;<b>whttp:header</b> ... /&gt;*??
      &lt;/output&gt;*

      &lt;infault ref="<emph xml:space="default">xs:QName</emph>"
                  messageLabel="<emph xml:space="default">xs:NCName</emph>"?&gt;
        &lt;documentation /&gt;*
        &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;/infault&gt;*

      &lt;outfault ref="<emph xml:space="default">xs:QName</emph>"
                   messageLabel="<emph xml:space="default">xs:NCName</emph>"?&gt;
        &lt;documentation /&gt;*
        &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;/outfault&gt;*

    &lt;/operation&gt;*

  &lt;/binding&gt;

  &lt;service&gt;
    &lt;endpoint name="<emph xml:space="default">xs:NCName</emph>" binding="<emph xml:space="default">xs:QName</emph>" address="<emph xml:space="default">xs:anyURI</emph>"?
              whttp:authenticationScheme="<emph xml:space="default">xs:token</emph>"?? 
              whttp:authenticationRealm="<emph xml:space="default">xs:string</emph>"?? &gt;
      &lt;documentation /&gt;*
    &lt;/endpoint&gt;
  &lt;/service&gt;
&lt;/description&gt;
</eg>

<note xml:space="default"><p xml:space="default">The double question marks ("<code xml:space="default">??</code>") after the
attributes in the <att xml:space="default">whttp</att> namespace indicates that those
optional attributes only make sense when the SOAP binding uses
HTTP as the underlying protocol, for example, when the value of the
<att xml:space="default">wsoap:protocol</att> attribute is
<attval xml:space="default">http://www.w3.org/2003/05/soap/bindings/HTTP/</attval>.</p></note>

      </div2>

      <!-- +++++++++ -->

      <div2 id="soap-binding-decl" xml:space="default">
        <head xml:space="default">Identifying the use of the SOAP Binding</head>

        <p xml:space="default">A <comp>Binding</comp> component (defined in <bibref ref="WSDL-PART1" xml:space="default"/>)
        is identified as a SOAP binding by assigning the value
        <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval> to the <prop comp="Binding">type</prop> property of
        the <comp>Binding</comp> component.</p>
      </div2>

      <!-- +++++++++ -->

      <div2 id="soap-defaults" xml:space="default">
        <head xml:space="default">SOAP Binding Rules</head>

	<ulist xml:space="default">
	  <item xml:space="default">
          <p xml:space="default"><emph xml:space="default">Payload Construction.</emph> <assert class="component" id="SOAPBinding-2065" cr-id="SOAPBinding-5040" required="true">When formulating
          the SOAP envelope to be transmitted, the contents of the
          payload (i.e., the contents of the SOAP Body <emph xml:space="default">element information item</emph>
          of the SOAP envelope) MUST be what is defined by the
          corresponding <comp>Interface Message Reference</comp> component.</assert> This is further subject
	  to optimization by a feature in use which affects
          serialization, such as MTOM <bibref ref="MTOM" xml:space="default"/>. The
          following binding rules MUST be adhered to:</p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default">If the value of the
            <prop comp="Interface Message Reference">message content model</prop>
            property of the <comp>Interface Message Reference</comp> component is <attval xml:space="default">#any</attval>, then
            the payload MAY be any one XML element.</p></item>

            <item xml:space="default"><p xml:space="default"><assert class="message" id="SOAPBinding-2066" cr-id="SOAPBinding-5041" required="true">If the value is <attval xml:space="default">#none</attval>, then the
            payload MUST be empty.</assert></p></item>

            <item xml:space="default"><p xml:space="default"><assert class="message" id="SOAPBinding-2067" cr-id="SOAPBinding-2503001" required="true">If the value is <attval xml:space="default">#element</attval>, then the
            payload MUST be the <emph xml:space="default">element information item</emph> identified by the
            <prop comp="Interface Message Reference">element declaration</prop>
            property of the <comp>Interface Message Reference</comp> component.</assert></p></item>
 
            <item xml:space="default"> <p xml:space="default"><assert class="component" id="SOAPBinding-2068" cr-id="SOAPBinding-5042" required="true">If the <comp>Interface Message Reference</comp> component is declared
            using a non-XML type system (as considered in the Types
            section of <bibref ref="WSDL-PART1" xml:space="default"/>), then additional
            binding rules MUST be defined to indicate how to map those
            components into the SOAP envelope.</assert> </p></item>
          </ulist>
          
          <note xml:space="default"><p xml:space="default">This SOAP binding extension only allows one single element in
          the SOAP body.</p></note>

	  </item>
	  <item xml:space="default">
	  
          <p xml:space="default"><emph xml:space="default">SOAP Header Construction.</emph> If the
          <prop comp="Binding Message Reference">soap headers</prop> property as defined in section <specref ref="soap-headers-decl" xml:space="default"/> exists and is not empty in a
          <comp>Binding Message Reference</comp> or <comp>Binding Fault</comp> component, then an <emph xml:space="default">element information item</emph>
          conforming to the element declaration of a <comp>SOAP Header Block</comp>
          component's <prop comp="SOAP Header Block">element declaration</prop> property, in the
          <prop comp="Binding Message Reference">soap headers</prop> property,
          MAY be turned into a SOAP header block for
          the corresponding message.</p>

	  <p xml:space="default">If the value of the <comp>SOAP Header Block</comp>
	  component's <prop comp="SOAP Header Block">required</prop>
	  property is <attval xml:space="default">true</attval>, the inclusion of this
	  SOAP header block is REQUIRED, otherwise it is OPTIONAL.</p>

	  <p xml:space="default">And, if the <comp>SOAP Header Block</comp> component's
	  <prop comp="SOAP Header Block">mustUnderstand</prop> property 
	  is present and its value is <attval xml:space="default">true</attval>, that 
	  particular SOAP header block MUST be
	  marked with a <att xml:space="default">mustUnderstand</att> <emph xml:space="default">attribute information item</emph> with a value
	  of <attval xml:space="default">true</attval> or <attval xml:space="default">1</attval> as per the
	  SOAP specification.</p>

	  <p xml:space="default">SOAP header blocks other than the ones declared in the
	  <prop comp="Binding Message Reference">soap headers</prop> property may be present at run-time, such as
	  the SOAP header blocks resulting from SOAP modules declared
	  as explained in section <specref ref="soap-module-decl" xml:space="default"/>.</p>

	  </item>
	</ulist>
      </div2>

      <!-- +++++++++ -->

      <div2 id="soap-version" xml:space="default">
        <head xml:space="default">Specifying the SOAP Version</head>

        <div3 id="soap-version-description" xml:space="default">
          <head xml:space="default">Description</head>

          <p xml:space="default"><assert class="component" id="SOAPBinding-2069" cr-id="SOAPBinding-5043" required="true">Every SOAP binding MUST indicate what version of SOAP is in use
          for the operations of the interface that this binding applies to.</assert></p>
          
          <p xml:space="default">By default, SOAP 1.2 <bibref ref="SOAP12-PART1" xml:space="default"/> is used.</p>
        </div3>

        <div3 id="soap-version-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

          <p xml:space="default">The SOAP protocol specification adds the following
          property to the WSDL component model (as defined in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default"><propdef comp="Binding">soap version</propdef> REQUIRED. A <emph xml:space="default">xs:string</emph>, to the <comp>Binding</comp>
            component.</p></item>
          </ulist>

        </div3>

        <div3 id="soap-version-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>

          <eg xml:space="preserve">&lt;description&gt;
  &lt;binding  name="<emph xml:space="default">xs:NCName</emph>" interface="<emph xml:space="default">xs:QName</emph>"? type="<emph xml:space="default">xs:anyURI</emph>"
            <b>wsoap:version</b>="<emph xml:space="default">xs:string</emph>"? &gt;
    ...
  &lt;/binding&gt;
&lt;/description&gt;
</eg>
          <p xml:space="default">The XML representation for specifying the SOAP version
          is an optional <emph xml:space="default">attribute information item</emph> with the following Infoset properties: </p>

          <ulist xml:space="default">
            <item xml:space="default">
              <p xml:space="default">A [local name] of <el xml:space="default">version</el>
              </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">A [namespace name] of
  <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
              </p>
            </item>
            <item xml:space="default">
	            <p xml:space="default">A type of <emph xml:space="default">xs:string</emph></p>
	          </item>
          </ulist>
        </div3>

        <div3 id="soap-version-decl-mapping" xml:space="default">
          <head xml:space="default">Mapping from XML Representation to Component properties</head>

          <p xml:space="default">See <specref ref="tab_SOAP_version_Mapping" xml:space="default"/>.</p>

          <table border="1" id="tab_SOAP_version_Mapping" xml:space="default">
            <caption xml:space="default">Mapping from XML Representation to Binding component Extension
            Properties</caption>
            <tbody xml:space="default">
              <tr xml:space="default">
                <th rowspan="1" colspan="1" xml:space="default">Property</th>
                <th rowspan="1" colspan="1" xml:space="default">Value</th>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding">soap version</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the <att xml:space="default">wsoap:version</att>
                  <emph xml:space="default">attribute information item</emph>, if present; otherwise <attval xml:space="default">1.2</attval>.
                  </td>
              </tr>
            </tbody>
          </table>
        </div3>
      </div2>

      <!-- +++++++++ -->

      <div2 id="soap-protocol" xml:space="default">
        <head xml:space="default">Specifying the SOAP Underlying Protocol</head>

        <div3 id="soap-protocol-description" xml:space="default">
          <head xml:space="default">Description</head>


          <p xml:space="default"><assert class="component" id="SOAPBinding-2070" cr-id="SOAPBinding-5044" required="true">Every SOAP binding MUST indicate what underlying protocol is in
          use.</assert></p>

        </div3>

        <div3 id="soap-protocol-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

          <p xml:space="default">The SOAP protocol specification adds the following
          property to the WSDL component model (as defined in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default"><propdef comp="Binding">soap underlying protocol</propdef> REQUIRED. A <emph xml:space="default">xs:anyURI</emph>,
            which is an absolute IRI as defined by <bibref ref="RFC3987" xml:space="default"/>, to the <comp>Binding</comp>
            component. This IRI refers to an appropriate SOAP
            underlying protocol binding (see SOAP Protocol Binding
            Framework in <bibref ref="SOAP12-PART1" xml:space="default"/>), which is to be
            used for any of the SOAP interactions described by this
            binding.</p></item>
          </ulist>

        </div3>

        <div3 id="soap-binding-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>

          <eg xml:space="preserve">&lt;description&gt;
  &lt;binding  name="<emph xml:space="default">xs:NCName</emph>" interface="<emph xml:space="default">xs:QName</emph>"? type="<emph xml:space="default">xs:anyURI</emph>"
            <b>wsoap:protocol</b>="<emph xml:space="default">xs:anyURI</emph>" &gt;
    ...
  &lt;/binding&gt;
&lt;/description&gt;
</eg>
          <p xml:space="default">The XML representation for specifying the SOAP protocol
          is a REQUIRED <emph xml:space="default">attribute information item</emph> with the following Infoset properties: </p>

          <ulist xml:space="default">
            <item xml:space="default">
              <p xml:space="default">A [local name] of <el xml:space="default">protocol</el>
              </p>
            </item>
            <item xml:space="default">
			  <p xml:space="default">A [namespace name] of
  				<attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
			  </p>
            </item>
	    <item xml:space="default">
	      <p xml:space="default">A type of <emph xml:space="default">xs:anyURI</emph></p>
	    </item>
          </ulist>
        </div3>

        <div3 id="soap-binding-decl-mapping" xml:space="default">
          <head xml:space="default">Mapping from XML Representation to Component Properties</head>

          <p xml:space="default">See <specref ref="tab_SOAP_Binding_Mapping" xml:space="default"/>.</p>

          <table border="1" id="tab_SOAP_Binding_Mapping" xml:space="default">
            <caption xml:space="default">Mapping from XML Representation to Binding component Extension
            Properties</caption>
            <tbody xml:space="default">
              <tr xml:space="default">
                <th rowspan="1" colspan="1" xml:space="default">Property</th>
                <th rowspan="1" colspan="1" xml:space="default">Value</th>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding">soap underlying protocol</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the <att xml:space="default">wsoap:protocol</att>
                  <emph xml:space="default">attribute information item</emph>.</td>
              </tr>
            </tbody>
          </table>
        </div3>
      </div2>

      <!-- +++++++++ -->

      <div2 id="soap-fault-decl" xml:space="default">
        <head xml:space="default">Binding Faults</head>

        <div3 id="soap-fault-decl-description" xml:space="default">
          <head xml:space="default">Description</head>

          <p xml:space="default"><assert class="component" id="SOAPBindingFault-2071" cr-id="SOAPBindingFault-5045" required="true">For every <comp>Interface Fault</comp> component contained in an
          <comp>Interface</comp> component, a mapping to a SOAP Fault MUST be
          described.</assert> This binding extension specification allows the user to
          indicate the SOAP fault code and subcodes that are
          transmitted for a given <comp>Interface Fault</comp> component.</p>
        </div3>

        <div3 id="soap-fault-decl-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

          <p xml:space="default">The SOAP Fault binding extension adds the following
          properties to the WSDL component model (as defined in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default"><propdef comp="Binding Fault">soap fault code</propdef> REQUIRED. A union of <emph xml:space="default">xs:QName</emph> and
		  <emph xml:space="default">xs:token</emph>, to the <comp>Binding Fault</comp> component, where:</p>
		      <ulist xml:space="default">
		      <item xml:space="default"><p xml:space="default"><assert class="component" id="SOAPBindingFault-2072" cr-id="SOAPBindingFault-5046" required="true">when the value of the <prop comp="Binding">soap version</prop>
		      is <attval xml:space="default">1.2</attval>, the allowed QNames MUST be the ones defined by
		      <bibref ref="SOAP12-PART1" xml:space="default"/>, section 5.4.6</assert>;</p></item>
		      <item xml:space="default"><p xml:space="default">the allowed token value is <attval xml:space="default">#any</attval>.</p></item>
		      </ulist>
		    <p xml:space="default">The value of this property
            identifies a possible SOAP fault for the operations in
            scope. If the value of this property is <attval xml:space="default">#any</attval>, no assertion is made
	    about the possible value of the SOAP fault code.</p> </item>

            <item xml:space="default"><p xml:space="default"><propdef comp="Binding Fault">soap fault subcodes</propdef> REQUIRED. 
	    A union of list of <emph xml:space="default">xs:QName</emph>, and
		  <emph xml:space="default">xs:token</emph> where the allowed token value
		  is <attval xml:space="default">#any</attval>, to the <comp>Binding Fault</comp> component. The value of
this property identifies one or more subcodes for this SOAP fault. The
list of subcodes is the nested sequence of subcodes. An empty list
represents a fault code without subcodes.</p>
            </item>
          </ulist>
        </div3>

        <div3 id="soap-fault-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>

          <eg xml:space="preserve">&lt;description&gt;
  &lt;binding &gt;
    &lt;fault ref="<emph xml:space="default">xs:QName</emph>"
           <b>wsoap:code</b>="<emph xml:space="default">union of xs:QName, xs:token</emph>"?
           <b>wsoap:subcodes</b>="<emph xml:space="default">union of (list of xs:QName), xs:token</emph>"? &gt;
      &lt;documentation /&gt;*
    &lt;/fault&gt;*
  &lt;/binding&gt;
&lt;/description&gt;
</eg>

          <p xml:space="default">The XML representation for binding a SOAP Fault are two
          <emph xml:space="default">attribute information item</emph>s with the following Infoset properties: </p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default">wsoap:code OPTIONAL <emph xml:space="default">attribute information item</emph></p>
              <ulist xml:space="default">
                <item xml:space="default"><p xml:space="default">A [local name] of <el xml:space="default">code</el></p></item>

                <item xml:space="default"> <p xml:space="default">A [namespace name] of
                <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
                </p></item>
		<item xml:space="default">
		  <p xml:space="default">A type of union of <emph xml:space="default">xs:QName</emph> and
		  <emph xml:space="default">xs:token</emph> where the allowed token value
		  is <attval xml:space="default">#any</attval></p>
		</item>
              </ulist>
            </item>
            <item xml:space="default"><p xml:space="default">wsoap:subcodes OPTIONAL <emph xml:space="default">attribute information item</emph></p>
              <ulist xml:space="default">
                <item xml:space="default"><p xml:space="default">A [local name] of <el xml:space="default">subcodes</el></p></item>

                <item xml:space="default"> <p xml:space="default">A [namespace name] of
                <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
                </p></item>
		<item xml:space="default">
		  <p xml:space="default">A type of union of list of <emph xml:space="default">xs:QName</emph>, and
		  <emph xml:space="default">xs:token</emph> where the allowed token value
		  is <attval xml:space="default">#any</attval></p>
		</item>
              </ulist>
            </item>
          </ulist>
        </div3>

        <div3 id="soap-fault-decl-mapping" xml:space="default">
          <head xml:space="default">Mapping XML Representation to Component Properties</head>

          <p xml:space="default">See <specref ref="tab_SOAP_Fault_Mapping" xml:space="default"/>.</p>

          <table border="1" id="tab_SOAP_Fault_Mapping" xml:space="default">
            <caption xml:space="default">Mapping from XML Representation to SOAP Fault component Properties</caption>
            <tbody xml:space="default">
              <tr xml:space="default">
                <th rowspan="1" colspan="1" xml:space="default">Property</th>
                <th rowspan="1" colspan="1" xml:space="default">Value</th>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding Fault">soap fault code</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the <att xml:space="default">code</att>
                  <emph xml:space="default">attribute information item</emph>, if present; otherwise
		<attval xml:space="default">#any</attval>.</td>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding Fault">soap fault subcodes</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the <att xml:space="default">subcodes</att>
                  <emph xml:space="default">attribute information item</emph>, if present; otherwise <attval xml:space="default">#any</attval>.</td>
              </tr>
            </tbody>
          </table>
        </div3>
      </div2>

      <!-- +++++++++ -->

      <div2 id="soap-operation-decl" xml:space="default">
        <head xml:space="default">Binding Operations</head>

        <div3 id="soap-operation-decl-description" xml:space="default">
          <head xml:space="default">Description</head>

          <p xml:space="default">For every <comp>Interface Operation</comp> component contained in an <comp>Interface</comp>
          component, in addition to the binding rules (for SOAP 1.2,
          see <specref ref="soap12-defaults" xml:space="default"/>), there may be additional binding 
          information to be specified. This binding extension specification allows the user 
          to indicate the SOAP Message Exchange Pattern (MEP) and a value for the SOAP
          Action Feature on a per-operation basis.</p>
        </div3>

        <div3 id="soap-operation-decl-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

          <p xml:space="default">The SOAP Operation binding extension specification adds the
          following property to the WSDL component model (as defined
          in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>

          <ulist xml:space="default">

            <item xml:space="default"><p xml:space="default"><propdef comp="Binding">soap mep default</propdef> OPTIONAL.  <assert class="component" id="SOAPMEPDefault-2073" cr-id="SOAPMEPDefault-5046" required="true">A <emph xml:space="default">xs:anyURI</emph>,
            which is an absolute IRI as defined by <bibref ref="RFC3987" xml:space="default"/>, to the <comp>Binding</comp>
            component.</assert> The value of this property identifies the
            default SOAP Message Exchange Pattern (MEP) for all the
	    <comp>Interface Operation</comp> components of any <comp>Interface</comp> component
            to which this <comp>Binding</comp> is applied.</p></item>

            <item xml:space="default"><p xml:space="default"><propdef comp="Binding Operation">soap mep</propdef> OPTIONAL.
            <assert class="component" id="SOAPMEP-2074" cr-id="SOAPMEP-5047" required="true">A <emph xml:space="default">xs:anyURI</emph>, which is an absolute IRI as defined by <bibref ref="RFC3987" xml:space="default"/>, to the <comp>Binding Operation</comp> component.</assert> The
            value of this property identifies the SOAP Message
            Exchange Pattern (MEP) for this specific operation
            (see <specref ref="soap12-defaults" xml:space="default"/>, paragraph "SOAP MEP Selection", for constraints on bindings).</p></item>

            <item xml:space="default"><p xml:space="default"><propdef comp="Binding Operation">soap action</propdef> OPTIONAL.
            <assert class="component" id="SOAPAction-2075" cr-id="SOAPAction-5048" required="true">A <emph xml:space="default">xs:anyURI</emph>, which is an absolute IRI as defined by <bibref ref="RFC3987" xml:space="default"/>, to the <comp>Binding Operation</comp> component.</assert> The
            value of this property identifies the value of the SOAP
            Action Feature for the initial message of the message exchange pattern of the <comp>Interface Operation</comp> bound,
	    as specified in the binding rules of bindings to specific
	    versions of SOAP (see <specref ref="soap12-defaults" xml:space="default"/> for
	    the SOAP 1.2 binding when the value
	    of the <prop comp="Binding">soap version</prop> property
	    of the <comp>Binding</comp> component is <attval xml:space="default">1.2</attval>).</p>
            </item>
          </ulist>
        </div3>

        <div3 id="soap-operation-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>

          <eg xml:space="preserve">&lt;description&gt;
  &lt;binding <b>wsoap:mepDefault</b>="<emph xml:space="default">xs:anyURI</emph>"? &gt;
    &lt;operation ref="<emph xml:space="default">xs:QName</emph>" 
               <b>wsoap:mep</b>="<emph xml:space="default">xs:anyURI</emph>"?
               <b>wsoap:action</b>="<emph xml:space="default">xs:anyURI</emph>"? &gt;
    &lt;/operation&gt;
  &lt;/binding&gt;
&lt;/description&gt;
</eg>

          <p xml:space="default">The XML representation for binding a <comp>Binding Operation</comp> are two
          <emph xml:space="default">attribute information item</emph>s with the following Infoset properties: </p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default">wsoap:mep OPTIONAL <emph xml:space="default">attribute information item</emph></p>
              <ulist xml:space="default">
                <item xml:space="default"><p xml:space="default">A [local name] of <att xml:space="default">mep</att></p></item>

                <item xml:space="default"> <p xml:space="default">A [namespace name] of
                <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
                </p></item>
		<item xml:space="default">
		  <p xml:space="default">A type of <emph xml:space="default">xs:anyURI</emph></p>
		</item>
              </ulist>
            </item>
            <item xml:space="default"><p xml:space="default">wsoap:action OPTIONAL <emph xml:space="default">attribute information item</emph></p>
              <ulist xml:space="default">
                <item xml:space="default"><p xml:space="default">A [local name] of <att xml:space="default">action</att></p></item>

                <item xml:space="default"> <p xml:space="default">A [namespace name] of
                <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
                </p></item>
		<item xml:space="default">
		  <p xml:space="default">A type of <emph xml:space="default">xs:anyURI</emph></p>
		</item>
              </ulist>
            </item>
          </ulist>

	  <p xml:space="default">The following <emph xml:space="default">attribute information item</emph> for the <el xml:space="default">binding</el> <emph xml:space="default">element information item</emph> is
	  defined:</p>

	  <ulist xml:space="default">
	  	<item xml:space="default"><p xml:space="default">wsoap:mepDefault OPTIONAL <emph xml:space="default">attribute information item</emph></p>
	  		<ulist xml:space="default">
	  			<item xml:space="default">
	  				<p xml:space="default">
	  					A [local name] of
	  					<el xml:space="default">mepDefault</el>
	  				</p>
	  			</item>
	  			<item xml:space="default">
	  				<p xml:space="default">
	  					A [namespace name] of
	  					<attval xml:space="default">
	  						http://www.w3.org/ns/wsdl/soap
	  					</attval>
	  				</p>
	  			</item>
	  			<item xml:space="default">
	  				<p xml:space="default">
	  					A type of
	  					<emph xml:space="default">xs:anyURI</emph>
	  				</p>
	  			</item>
	  		</ulist>
	  	</item>
	  </ulist>
        </div3>

        <div3 id="soap-operation-decl-mapping" xml:space="default">
          <head xml:space="default">Mapping from XML Representation to Component Properties</head>

          <p xml:space="default">See <specref ref="tab_SOAP_Operation_Mapping" xml:space="default"/>.</p>

          <table border="1" id="tab_SOAP_Operation_Mapping" xml:space="default">
            <caption xml:space="default">Mapping from XML Representation to SOAP Operation Component
            Properties</caption>
            <tbody xml:space="default">
              <tr xml:space="default">
                <th rowspan="1" colspan="1" xml:space="default">Property</th>
                <th rowspan="1" colspan="1" xml:space="default">Value</th>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding">soap
		mep default</prop></td> <td rowspan="1" colspan="1" xml:space="default">The actual value of the
                <att xml:space="default">wsoap:mepDefault</att> <emph xml:space="default">attribute information item</emph>, if present.</td>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding Operation">soap mep</prop></td> <td rowspan="1" colspan="1" xml:space="default">The actual value of the
                <att xml:space="default">wsoap:mep</att> <emph xml:space="default">attribute information item</emph>, if present.</td>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding Operation">soap action</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the
                <att xml:space="default">wsoap:action</att> <emph xml:space="default">attribute information item</emph>, if any.</td>
              </tr>
            </tbody>
          </table>
        </div3>
      </div2>
      <!-- +++++++++ -->

      <div2 id="soap-module-decl" xml:space="default">
        <head xml:space="default">Declaring SOAP Modules</head>

        <div3 id="soap-module-decl-description" xml:space="default">
          <head xml:space="default">Description</head>

          <p xml:space="default">The SOAP messaging framework allows a Web service
          to engage one or more additional features (typically
          implemented as one or more SOAP header blocks), as defined
          by SOAP Modules (see <bibref ref="SOAP12-PART1" xml:space="default"/>). This
          binding extension specification allows description of which SOAP
          Modules are in use across an entire binding, on a per
          operation basis or on a per-message basis.</p>
        </div3>

        <div3 id="soap-module-decl-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

          <p xml:space="default">The <comp>SOAP Module</comp> component adds the following
          property to the WSDL component model (as defined in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default"><propdef comp="Binding">soap modules</propdef> OPTIONAL. A set of <comp>SOAP Module</comp> components
            as defined in <specref ref="soap-module-decl-property" xml:space="default"/>
            to the <comp>Binding</comp> component</p></item>
	    <item xml:space="default"><p xml:space="default">Similarly, <propdef comp="Binding Operation">soap modules</propdef> OPTIONAL, to the <comp>Binding Operation</comp> component</p></item>
	    <item xml:space="default"><p xml:space="default">Similarly, <propdef comp="Binding Message Reference">soap modules</propdef> OPTIONAL, to the <comp>Binding Message Reference</comp> component</p></item>
	    <item xml:space="default"><p xml:space="default">Similarly, <propdef comp="Binding Fault">soap modules</propdef> OPTIONAL, to the <comp>Binding Fault</comp> component</p></item>
	    <item xml:space="default"><p xml:space="default">Similarly, <propdef comp="Binding Fault Reference">soap modules</propdef> OPTIONAL, to the <comp>Binding Fault Reference</comp> component</p></item>
          </ulist>

          <p xml:space="default">The SOAP modules applicable for a particular operation of
          any service, consists of all the modules specified in the input
          or output <comp>Binding Message Reference</comp> components, the infault
          or outfault <comp>Binding Fault Reference</comp> components, those
          specified within the <comp>Binding Fault</comp> components, those
          specified within the <comp>Binding Operation</comp> components and those
          specified within the <comp>Binding</comp> component. If any module is
          declared in multiple components, then the requiredness of
          that module is defined by the closest declaration, where
          closeness is defined by whether it is specified directly at
          the <comp>Binding Message Reference</comp> component or
          <comp>Binding Fault Reference</comp> component level, the <comp>Binding Fault</comp> level or the
          <comp>Binding Operation</comp> component level or the <comp>Binding</comp> component
          level, respectively.</p>
        </div3>

        <div3 id="soap-module-decl-property" xml:space="default">
          <head xml:space="default">SOAP Module component</head>

          <p xml:space="default">The <comp>SOAP Module</comp> component identifies a SOAP module that
          is in use.</p>

          <p xml:space="default">The properties of the <compdef>SOAP Module</compdef> component are
          as follows:</p>

          <ulist xml:space="default">
            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Module">ref</propdef> REQUIRED.
            <assert class="component" id="SOAPModule-2076" cr-id="SOAPModule-5049" required="true">A <emph xml:space="default">xs:anyURI</emph>, which is an absolute IRI as defined by <bibref ref="RFC3987" xml:space="default"/>.</assert> The value of this property uniquely identifies the
            SOAP module that is in use (as per the SOAP 1.2 <bibref ref="SOAP12-PART1" xml:space="default"/> processing model).</p> </item>

            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Module">required</propdef> REQUIRED.
            A <emph xml:space="default">xs:boolean</emph> indicating if the SOAP
            module is required.</p> </item>
            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Module">parent</propdef> REQUIRED.
            The <comp>Binding</comp>, <comp>Binding Operation</comp>,
            <comp>Binding Message Reference</comp>, <comp>Binding
	    Fault</comp> or <comp>Binding Fault Reference</comp>
	    components that contains this component in its
	    <prop comp="Binding">soap modules</prop> property.</p></item>
          </ulist>
        </div3>

        <div3 id="soap-module-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>

          <eg xml:space="preserve">&lt;description&gt;
  &lt;binding &gt;
    &lt;<b>wsoap:module</b> ref="<emph xml:space="default">xs:anyURI</emph>"
                  required="<emph xml:space="default">xs:boolean</emph>"? &gt;
      &lt;documentation ... /&gt;*
    &lt;/<b>wsoap:module</b>&gt;
    &lt;fault&gt;
      &lt;<b>wsoap:module</b> ... /&gt;*
    &lt;/fault&gt;
    &lt;operation&gt;
      &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;input&gt;
        &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;/input&gt;
      &lt;output&gt;
        &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;/output&gt;
      &lt;infault&gt;
        &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;/infault&gt;
      &lt;outfault&gt;
        &lt;<b>wsoap:module</b> ... /&gt;*
      &lt;/outfault&gt;
    &lt;/operation&gt;
  &lt;/binding&gt;
&lt;/description&gt;
</eg>

          <p xml:space="default">The XML representation for a <comp>SOAP Module</comp> component is an <emph xml:space="default">element information item</emph>
with the following Infoset properties: </p>
          <ulist xml:space="default">
            <item xml:space="default">
              <p xml:space="default">A [local name] of <el xml:space="default">module</el>
              </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">A [namespace name] of
  <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
              </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">One or more <emph xml:space="default">attribute information item</emph>s amongst its [attributes] as follows:</p>
              <ulist xml:space="default">
                <item xml:space="default">
                  <p xml:space="default">A REQUIRED <att xml:space="default">ref</att>
                    <emph xml:space="default">attribute information item</emph> with the following
      Infoset properties:</p>
                  <ulist xml:space="default">
                    <item xml:space="default">
                      <p xml:space="default">A [local name] of <att xml:space="default">ref</att>
                      </p>
                    </item>
                    <item xml:space="default">
                      <p xml:space="default">A [namespace name] which has no value</p>
                    </item>
		    <item xml:space="default">
		      <p xml:space="default">A type of <emph xml:space="default">xs:anyURI</emph></p>
		    </item>
                  </ulist>
                </item>
                <item xml:space="default">
                  <p xml:space="default">An OPTIONAL <att xml:space="default">required</att>
                    <emph xml:space="default">attribute information item</emph> with the
      following Infoset properties:</p>
                  <ulist xml:space="default">
                    <item xml:space="default">
                      <p xml:space="default">A [local name] of <att xml:space="default">required</att>
                      </p>
                    </item>
                    <item xml:space="default">
                      <p xml:space="default">A [namespace name] which has no value</p>
                    </item>
		    <item xml:space="default">
		      <p xml:space="default">A type of <emph xml:space="default">xs:boolean</emph></p>
		    </item>
                  </ulist>
                </item>
                <item xml:space="default">
                  <p xml:space="default">Zero or more namespace qualified <emph xml:space="default">attribute information item</emph>s. The [namespace
      name] of such <emph xml:space="default">attribute information item</emph>s MUST NOT be <attval xml:space="default">http://www.w3.org/ns/wsdl</attval> and
      MUST NOT be <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>.  </p>
                </item>
              </ulist>
            </item>
            <item xml:space="default">
              <p xml:space="default">Zero or more <emph xml:space="default">element information item</emph> amongst its [children], in order, as
  follows:</p>
              <olist xml:space="default">
                <item xml:space="default">
                  <p xml:space="default">Zero or more <el xml:space="default">documentation</el>
                    <emph xml:space="default">element information item</emph>s as defined in <bibref ref="WSDL-PART1" xml:space="default"/>.</p>
                </item>
                <item xml:space="default">
                  <p xml:space="default">Zero or more namespace-qualified <emph xml:space="default">element information item</emph>s amongst its
      [children]. The [namespace name] of such <emph xml:space="default">element information item</emph>s MUST NOT be
      <attval xml:space="default">http://www.w3.org/ns/wsdl</attval> and MUST NOT be
      <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>.</p>
                </item>
              </olist>
            </item>
          </ulist>
        </div3>
        <div3 id="soap-module-decl-mapping" xml:space="default">
          <head xml:space="default">Mapping from XML Representation to Component Properties</head>

          <p xml:space="default">See <specref ref="tab_SOAP_Module_Mapping" xml:space="default"/>.</p>

          <table border="1" id="tab_SOAP_Module_Mapping" xml:space="default">
            <caption xml:space="default">Mapping from XML Representation to SOAP Module component-related Properties</caption>
            <tbody xml:space="default">
              <tr xml:space="default">
                <th rowspan="1" colspan="1" xml:space="default">Property</th>
                <th rowspan="1" colspan="1" xml:space="default">Value</th>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="Binding">soap modules</prop></td>
                <td rowspan="1" colspan="1" xml:space="default"> The set of <comp>SOAP Module</comp>
                components corresponding to all the <el xml:space="default">module</el>
                <emph xml:space="default">element information item</emph> in the [children] of the <el xml:space="default">binding</el>,
                <el xml:space="default">operation</el>, <el xml:space="default">fault</el>, <el xml:space="default">input</el>,
                <el xml:space="default">output</el>, <el xml:space="default">infault</el>, <el xml:space="default">outfault</el>
                <emph xml:space="default">element information item</emph>s, if any.
		</td>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="SOAP Module">ref</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the <att xml:space="default">ref</att>
                  <emph xml:space="default">attribute information item</emph>.</td>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="SOAP Module">required</prop></td>
                <td rowspan="1" colspan="1" xml:space="default">The actual value of the <att xml:space="default">required</att>
                  <emph xml:space="default">attribute information item</emph>, if present; otherwise <attval xml:space="default">false</attval>.</td>
              </tr>
              <tr xml:space="default">
                <td rowspan="1" colspan="1" xml:space="default"><prop comp="SOAP Module">parent</prop></td>
		<td rowspan="1" colspan="1" xml:space="default">
		  The <comp>Binding</comp>, <comp>Binding
		  Operation</comp>, <comp>Binding Message
		  Reference</comp>, <comp>Binding Fault</comp> or
		  <comp>Binding Fault Reference</comp> component
		  corresponding to the <el xml:space="default">binding</el>,
		  <el xml:space="default">operation</el>, <el xml:space="default">fault</el>, <el xml:space="default">input</el>,
		  <el xml:space="default">output</el>, <el xml:space="default">infault</el> or
		  <el xml:space="default">outfault</el> <emph xml:space="default">element information item</emph> in [parent].
		</td>
	      </tr>
            </tbody>
          </table>
        </div3>

        <div3 id="soap-module-decl-fragid" xml:space="default">
          <head xml:space="default">IRI Identification Of A SOAP Module component</head>

	  <p xml:space="default">WSDL Version 2.0 Part 1: Core Language <bibref ref="WSDL-PART1" xml:space="default"/> defines a <xspecref href="http://www.w3.org/TR/2007/PR-wsdl20-20070523#frag-ids" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">fragment identifier
	  syntax</xspecref> for identifying components of a WSDL 2.0
	  document.</p>

	  <p xml:space="default">A <comp>SOAP Module</comp> component can be identified using the
	  <emph xml:space="default"><xspecref href="http://www.w3.org/TR/2007/PR-wsdl20-20070523#wsdl.extension" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">wsdl.extension</xspecref></emph>
	  XPointer Framework scheme:</p>

	  <p xml:space="default"><code xml:space="default">wsdl.extension(http://www.w3.org/ns/wsdl/soap,
	  wsoap.module(<emph xml:space="default">parent</emph>/<emph xml:space="default">ref</emph>))</code></p>
	  <olist xml:space="default">
	    <item xml:space="default"><p xml:space="default">
	      <emph xml:space="default">
		<code xml:space="default">parent</code>
	      </emph>
	      is the pointer part of the <prop comp="SOAP Module">parent</prop> component, as <xspecref href="http://www.w3.org/TR/2007/PR-wsdl20-20070523#frag-ids" xml:space="default" xlink:type="simple" xlink:show="new" xlink:actuate="onRequest">specified in WSDL
	      Version 2.0 Part 1: Core Language</xspecref>.
	    </p>
	    </item>
	    <item xml:space="default">
	      <p xml:space="default">
		<emph xml:space="default">
		  <code xml:space="default">ref</code>
		</emph>
		is the value of the <prop comp="SOAP Module">ref</prop> property of the component.
	      </p>
	    </item>
	  </olist>	  

	</div3>
      </div2>

      <!-- +++++++++ -->
      
      <div2 id="soap-headers-decl" xml:space="default">
        <head xml:space="default">Declaring SOAP Header Blocks</head>
        
        <div3 id="soap-headers-decl-description" xml:space="default">
          <head xml:space="default">Description</head>

	  <p xml:space="default">SOAP allows the use of header blocks in the header part
	  of the message. This binding extension allows users to declare the
	  SOAP header blocks in use on a per-message and on a
	  per-fault basis.</p>

        </div3>

        <div3 id="soap-headers-decl-relate" xml:space="default">
          <head xml:space="default">Relationship to WSDL Component Model</head>

          <p xml:space="default">The SOAP Header Blocks binding extension specification adds the
          following property to the WSDL component model (as defined
          in <bibref ref="WSDL-PART1" xml:space="default"/>):</p>

          <ulist xml:space="default">
            <item xml:space="default"><p xml:space="default"><propdef comp="Binding Message Reference">soap headers</propdef> OPTIONAL.
            A set of <comp>SOAP Header Block</comp> components as defined in <specref ref="soap-header-decl-property" xml:space="default"/>, to the <comp>Binding Message Reference</comp> component.</p></item>
            <item xml:space="default"><p xml:space="default">Similarly, <propdef comp="Binding Fault">soap headers</propdef> OPTIONAL, to the <comp>Binding Fault</comp> component.</p></item>
          </ulist>
        </div3>

	<div3 id="soap-header-decl-property" xml:space="default">
	  <head xml:space="default">SOAP Header Block component</head>
	  
	  <p xml:space="default">A <comp>SOAP Header Block</comp> component describes an abstract piece
	  of header data (SOAP header block) that is associated with the
	  exchange of messages between the communicating parties. The
	  presence of a <comp>SOAP Header Block</comp> component in a WSDL
	  description indicates that the service supports headers, and
	  MAY require a client interacting
	  with the service to use the described header block. Zero or one
	  such header block may be used.</p>

          <p xml:space="default">The properties of the <compdef>SOAP Header Block</compdef> component are as
          follows:</p>

          <ulist xml:space="default">
            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Header Block">element declaration</propdef> REQUIRED.
            An XML element declaration in the
            <prop comp="Description">element declarations</prop> property of the
            <comp>Description</comp> component. This XML element
	    declaration uniquely represents a specific SOAP
            header block.</p>
	    </item>
            
            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Header Block">mustUnderstand</propdef> REQUIRED.  A
            <emph xml:space="default">xs:boolean</emph>. <assert class="component" id="SOAPHeaderBlock-2077" cr-id="SOAPHeaderBlock-5050" required="true">When its value is
            <attval xml:space="default">true</attval>, the SOAP header block MUST be
            decorated with a SOAP <att xml:space="default">mustUnderstand</att> <emph xml:space="default">attribute information item</emph> with
            a value of <attval xml:space="default">true</attval>; if so, 
            the XML element declaration referenced by the <prop comp="SOAP Header Block">element declaration</prop> property MUST
            allow this SOAP <att xml:space="default">mustUnderstand</att>
            <emph xml:space="default">attribute information item</emph>.</assert> Otherwise, no additional constraint is placed on
            the presence and value of a SOAP <att xml:space="default">mustUnderstand</att>
            <emph xml:space="default">attribute information item</emph>.</p></item>

            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Header Block">required</propdef> REQUIRED.
            A <emph xml:space="default">xs:boolean</emph> indicating if the SOAP
            header block is required. <assert class="component" id="SOAPHeaderBlock-2078" cr-id="SOAPHeaderBlock-5051" required="true">If the value is <attval xml:space="default">true</attval>, then the SOAP header block MUST be included in the message.</assert> If it is <attval xml:space="default">false</attval>, then the SOAP header block MAY be included.</p> </item>

            <item xml:space="default"> <p xml:space="default"><propdef comp="SOAP Header Block">parent</propdef> REQUIRED.
            The <comp>Binding Fault</comp>
            or <comp>Binding Message Reference</comp>
	    component that contains this component in its
	    <prop comp="Binding Message Reference">soap headers</prop> property.</p></item>
          </ulist>
	</div3>

        <div3 id="soap-headers-decl-xml" xml:space="default">
          <head xml:space="default">XML Representation</head>

        <eg xml:space="preserve">
&lt;description&gt;
  &lt;binding name="<emph xml:space="default">xs:NCName</emph>" type="<emph xml:space="default">http://www.w3.org/ns/wsdl/soap</emph>" &gt;
    &lt;fault ref="<emph xml:space="default">xs:QName</emph>" &gt;
      &lt;<b>wsoap:header</b> element="<emph xml:space="default">xs:QName</emph>" mustUnderstand="<emph xml:space="default">xs:boolean</emph>"?
                 required="<emph xml:space="default">xs:boolean</emph>"? &gt;
        &lt;documentation /&gt;*
      &lt;/<b>wsoap:header</b>&gt;*
      ...
    &lt;/fault&gt;*
    &lt;operation ref="<emph xml:space="default">xs:QName</emph>" &gt;
      &lt;input messageLabel="<emph xml:space="default">xs:NCName</emph>"?&gt;
        &lt;<b>wsoap:header</b> ... /&gt;*
	...
      &lt;/input&gt;*
      &lt;output messageLabel="<emph xml:space="default">xs:NCName</emph>"?&gt;
        &lt;<b>wsoap:header</b> ... /&gt;*
	...
      &lt;/output&gt;*
    &lt;/operation&gt;*
  &lt;/binding&gt;
&lt;/description&gt;
</eg>

          <p xml:space="default">The XML representation for a <comp>SOAP Header Block</comp> component is an <emph xml:space="default">element information item</emph>
with the following Infoset properties: </p>
          <ulist xml:space="default">
            <item xml:space="default">
              <p xml:space="default">A [local name] of <el xml:space="default">header</el>
              </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">A [namespace name] of
  <attval xml:space="default">http://www.w3.org/ns/wsdl/soap</attval>
              </p>
            </item>
            <item xml:space="default">
              <p xml:space="default">One or more <emph xml:space="default">attribute information item</emph>s amongst its [attributes] as follows:</p>
              <ulist xml:space="default">
                <item xml:space="default">
                  <p xml:space="default">A REQUIRED <att xml:space="default">element</att>
                    <emph xml:space="default">attribute information item</emph> with the following
      Infoset properties:</p>
                  <ulist xml:space="default">
 