Another abandoned server code base... this is kind of an ancestor of taskrambler.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

10110 lines
422 KiB

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8" />
<title>Web Services Description Language (WSDL) Version 2.0 Part 1:
Core Language</title>
<style type="text/css" xml:space="preserve">
/*<![CDATA[*/
code { font-family: monospace; }
div.constraint,
div.issue,
div.note,
div.notice { margin-left: 2em; }
ol.enumar { list-style-type: decimal; }
ol.enumla { list-style-type: lower-alpha; }
ol.enumlr { list-style-type: lower-roman; }
ol.enumua { list-style-type: upper-alpha; }
ol.enumur { list-style-type: upper-roman; }
dt.label { display: run-in; }
li, p { margin-top: 0.3em;
margin-bottom: 0.3em; }
.diff-chg { background-color: yellow; }
.diff-del { background-color: red; text-decoration: line-through;}
.diff-add { background-color: lime; }
table { empty-cells: show; }
table caption {
font-weight: normal;
font-style: italic;
text-align: left;
margin-bottom: .5em;
}
div.issue {
color: red;
}
.rfc2119 {
font-variant: small-caps;
}
div.exampleInner pre { margin-left: 1em;
margin-top: 0em; margin-bottom: 0em}
div.exampleOuter {border: 4px double gray;
margin: 0em; padding: 0em}
div.exampleInner { background-color: #d5dee3;
border-top-width: 4px;
border-top-style: double;
border-top-color: #d3d3d3;
border-bottom-width: 4px;
border-bottom-style: double;
border-bottom-color: #d3d3d3;
padding: 4px; margin: 0em }
div.exampleWrapper { margin: 4px }
div.exampleHeader { font-weight: bold;
margin: 4px}
th { color: #000000; background-color: #CCCC99; }
span.test-assertion { background-color: #FFC0CB; }
span.test-assertion-tr:hover { background-color: #FFC0CB; }
/*]]>*/
</style>
<link rel="stylesheet" type="text/css" href=
"http://www.w3.org/StyleSheets/TR/W3C-REC.css" />
</head>
<body>
<div class="head">
<p><a href="http://www.w3.org/"><img src=
"http://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width=
"72" /></a></p>
<h1><a name="title" id="title"></a>Web Services Description
Language (WSDL) Version 2.0 Part 1: Core Language</h1>
<h2><a name="w3c-doctype" id="w3c-doctype"></a>W3C Recommendation
26 June 2007</h2>
<dl>
<dt>This version:</dt>
<dd><a href=
"http://www.w3.org/TR/2007/REC-wsdl20-20070626">http://www.w3.org/TR/2007/REC-wsdl20-20070626</a></dd>
<dt>Latest version:</dt>
<dd><a href=
"http://www.w3.org/TR/wsdl20">http://www.w3.org/TR/wsdl20</a></dd>
<dt>Previous version:</dt>
<dd><a href=
"http://www.w3.org/TR/2007/PR-wsdl20-20070523">http://www.w3.org/TR/2007/PR-wsdl20-20070523</a></dd>
<dt>Editors:</dt>
<dd>Roberto Chinnici, Sun Microsystems</dd>
<dd>Jean-Jacques Moreau, Canon</dd>
<dd>Arthur Ryman, IBM</dd>
<dd>Sanjiva Weerawarana, WSO2</dd>
</dl>
<p>Please refer to the <a href=
"http://www.w3.org/2007/06/wsdl20-errata.html"><strong>errata</strong></a>
for this document, which may include some normative
corrections.</p>
<p>This document is also available in these non-normative formats:
<a href="wsdl20-z.html">XHTML with Z Notation</a>, <a href=
"wsdl20.pdf">PDF</a>, <a href="wsdl20.ps">PostScript</a>, <a href=
"wsdl20.xml">XML</a>, and&#160;<a href="wsdl20.txt">plain
text</a>.</p>
<p>See also <a href=
"http://www.w3.org/2003/03/Translations/byTechnology?technology=wsdl20">
<strong>translations</strong></a>.</p>
<p class="copyright"><a href=
"http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>&#160;©&#160;2007&#160;<a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup>
(<a href="http://www.csail.mit.edu/"><acronym title=
"Massachusetts Institute of Technology">MIT</acronym></a>, <a href=
"http://www.ercim.org/"><acronym title=
"European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved.
W3C <a href=
"http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a href=
"http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
and <a href=
"http://www.w3.org/Consortium/Legal/copyright-documents">document
use</a> rules apply.</p>
</div>
<hr />
<div>
<h2><a name="abstract" id="abstract"></a>Abstract</h2>
<p>This document describes the Web Services Description Language
Version 2.0 (WSDL 2.0), an XML language for describing Web
services. This specification defines the core language which can be
used to describe Web services based on an abstract model of what
the service offers. It also defines the conformance criteria for
documents in this language.</p>
</div>
<div>
<h2><a name="status" id="status"></a>Status of this Document</h2>
<p><em>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 <a href=
"http://www.w3.org/TR/">W3C technical reports index</a> at
http://www.w3.org/TR/.</em></p>
<p>This is the <a href=
"http://www.w3.org/2005/10/Process-20051014/tr.html#RecsW3C">W3C
Recommendation</a> of Web Services Description Language (WSDL)
Version 2.0 Part 1: Core Language for review by W3C Members and
other interested parties. It has been produced by the <a href=
"http://www.w3.org/2002/ws/desc/">Web Services Description Working
Group</a>, which is part of the <a href=
"http://www.w3.org/2002/ws/Activity">W3C Web Services
Activity</a>.</p>
<p>Please send comments about this document to the public <a href=
"mailto:public-ws-desc-comments@w3.org">public-ws-desc-comments@w3.org</a>
mailing list (<a href=
"http://lists.w3.org/Archives/Public/public-ws-desc-comments/">public
archive</a>).</p>
<p>The Working Group released a test suite along with an <a href=
"http://www.w3.org/2002/ws/desc/5/impl-report/">implementation
report</a>. A <a href="wsdl20-diff.html">diff-marked version
against the previous version of this document</a> is available.</p>
<p>This document has been reviewed by W3C Members, by software
developers, and by other W3C groups and interested parties, and is
endorsed by the Director as a W3C Recommendation. It is a stable
document and may be used as reference material or cited from
another document. W3C's role in making the Recommendation is to
draw attention to the specification and to promote its widespread
deployment. This enhances the functionality and interoperability of
the Web.</p>
<p>This document is governed by the <a href=
"http://www.w3.org/TR/2002/NOTE-patent-practice-20020124">24
January 2002 CPP</a> as amended by the <a href=
"http://www.w3.org/2004/02/05-pp-transition">W3C Patent Policy
Transition Procedure</a>. W3C maintains a <a href=
"http://www.w3.org/2002/ws/desc/2/04/24-IPR-statements.html">public
list of any patent disclosures</a> 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 <a href=
"http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">
Essential Claim(s)</a> must disclose the information in accordance
with <a href=
"http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">
section 6 of the W3C Patent Policy</a>.</p>
</div>
<div class="toc">
<h2><a name="contents" id="contents"></a>Table of Contents</h2>
<p class="toc">1. <a href="#intro">Introduction</a>
<br />
&#160;&#160;&#160;&#160;1.1 <a href="#intro_ws">Service
Description</a>
<br />
&#160;&#160;&#160;&#160;1.2 <a href="#meaning">The Meaning of a
Service Description</a>
<br />
&#160;&#160;&#160;&#160;1.3 <a href="#markup">Document
Conformance</a>
<br />
&#160;&#160;&#160;&#160;1.4 <a href="#notation">Notational
Conventions</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.1 <a href=
"#rfc2119keywords">RFC 2119 Keywords</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.2 <a href=
"#rfc3986namespaces">RFC 3986 Namespaces</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.3 <a href=
"#xmlSchemaAnyURI">XML Schema anyURI</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.4 <a href=
"#nsprefixes">Prefixes and Namespaces Used in This
Specification</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.5 <a href=
"#terminology">Terms Used in This Specification</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.6 <a href=
"#xmlinfosetproperties">XML Information Set Properties</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.7 <a href=
"#wsdlcomponentmodelproperties">WSDL 2.0 Component Model
Properties</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.8 <a href=
"#znotation">Z Notation</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.9 <a href=
"#bnfpseudoschemas">BNF Pseudo-Schemas</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1.4.10 <a href=
"#assertions">Assertions</a>
<br />
2. <a href="#component_model">Component Model</a>
<br />
&#160;&#160;&#160;&#160;2.1 <a href="#Description">Description</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.1.1 <a href=
"#Description_details">The Description Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.1.2 <a href=
"#Description_XMLRep">XML Representation of Description
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.1.2.1
<a href="#Description_targetnamespace_attribute">targetNamespace
attribute information item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.1.3 <a href=
"#Description_Mapping">Mapping Description's XML Representation to
Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.2 <a href="#Interface">Interface</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.2.1 <a href=
"#Interface_details">The Interface Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.2.2 <a href=
"#Interface_XMLRep">XML Representation of Interface Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.2.2.1
<a href="#Interface_name_attribute">name attribute information item
with interface [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.2.2.2
<a href="#Interface_extends_attribute">extends attribute
information item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.2.2.3
<a href="#Interface_styleDefault_attribute">styleDefault attribute
information item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.2.3 <a href=
"#Interface_Mapping">Mapping Interface's XML Representation to
Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.3 <a href="#InterfaceFault">Interface
Fault</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.3.1 <a href=
"#InterfaceFault_details">The Interface Fault Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.3.2 <a href=
"#InterfaceFault_XMLRep">XML Representation of Interface Fault
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.3.2.1
<a href="#Interfacefault_name_attribute">name attribute information
item with fault [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.3.2.2
<a href="#Interface_element_attribute">element attribute
information item with fault [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.3.3 <a href=
"#InterfaceFault_Mapping">Mapping Interface Fault's XML
Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.4 <a href="#InterfaceOperation">Interface
Operation</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.1 <a href=
"#InterfaceOperation_details">The Interface Operation Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.1.1
<a href="#MessageExchangePattern">Message Exchange Pattern</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.1.2
<a href="#InterfaceOperationStyle">Operation Style</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.2 <a href=
"#InterfaceOperation_XMLRep">XML Representation of Interface
Operation Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.2.1
<a href="#Interfaceoperation_name_attribute">name attribute
information item with operation [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.2.2
<a href="#Interfaceoperation_pattern_attribute">pattern attribute
information item with operation [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.2.3
<a href="#InterfaceOperation_style_attribute">style attribute
information item with operation [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.4.3 <a href=
"#InterfaceOperation_Mapping">Mapping Interface Operation's XML
Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.5 <a href=
"#InterfaceMessageReference">Interface Message Reference</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.5.1 <a href=
"#InterfaceMessageReference_details">The Interface Message
Reference Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.5.2 <a href=
"#InterfaceMessageReference_XMLRep">XML Representation of Interface
Message Reference Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.5.2.1
<a href=
"#InterfaceMessageReference_messageReference_attribute">messageLabel
attribute information item with input or output [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.5.2.2
<a href="#InterfaceMessageReference_element_attribute">element
attribute information item with input or output [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.5.3 <a href=
"#InterfaceMessageReference_Mapping">Mapping Interface Message
Reference's XML Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.6 <a href=
"#InterfaceFaultReference">Interface Fault Reference</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.6.1 <a href=
"#InterfaceFaultReference_details">The Interface Fault Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.6.2 <a href=
"#InterfaceFaultReference_XMLRep">XML Representation of Interface
Fault Reference</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.6.2.1
<a href="#InterfaceFaultReference_ref_attribute">ref attribute
information item with infault, or outfault [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.6.2.2
<a href=
"#InterfaceFaultReference_messageReference_attribute">messageLabel
attribute information item with infault, or outfault [owner
element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.6.3 <a href=
"#InterfaceFaultReference_Mapping">Mapping Interface Fault
Reference's XML Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.7 <a href="#Binding">Binding</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.1 <a href=
"#Binding_details">The Binding Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.2 <a href=
"#Binding_XMLRep">XML Representation of Binding Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.2.1
<a href="#Binding_name_attribute">name attribute information item
with binding [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.2.2
<a href="#Binding_interface_attribute">interface attribute
information item with binding [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.2.3
<a href="#Binding_type_attribute">type attribute information item
with binding [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.2.4
<a href="#Binding_extension_elements">Binding extension
elements</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.7.3 <a href=
"#Binding_Mapping">Mapping Binding's XML Representation to
Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.8 <a href="#Binding_Fault">Binding
Fault</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.8.1 <a href=
"#Binding_Fault_details">The Binding Fault Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.8.2 <a href=
"#Binding_Fault_XMLRep">XML Representation of Binding Fault
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.8.2.1
<a href="#Binding_Fault_ref_attribute">ref attribute information
item with fault [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.8.2.2
<a href="#Binding_Fault_extension_elements">Binding Fault extension
elements</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.8.3 <a href=
"#Binding_Fault_Mapping">Mapping Binding Fault's XML Representation
to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.9 <a href="#Binding_Operation">Binding
Operation</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.9.1 <a href=
"#Binding_Operation_details">The Binding Operation Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.9.2 <a href=
"#Binding_Operation_XMLRep">XML Representation of Binding Operation
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.9.2.1
<a href="#Binding_Operation_ref_attribute">ref attribute
information item with operation [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.9.2.2
<a href="#Binding_Operation_extension_elements">Binding Operation
extension elements</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.9.3 <a href=
"#Binding_Operation_Mapping">Mapping Binding Operation's XML
Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.10 <a href=
"#Binding_Message_Reference">Binding Message Reference</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.10.1 <a href=
"#Binding_Message_Reference_details">The Binding Message Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.10.2 <a href=
"#Binding_Message_Reference_XMLRep">XML Representation of Binding
Message Reference Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.10.2.1
<a href="#Binding_Message_Reference_name_attribute">messageLabel
attribute information item with input or output [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.10.2.2
<a href="#Binding_Message_Reference_extension_elements">Binding
Message Reference extension elements</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.10.3 <a href=
"#Binding_Message_Reference_Mapping">Mapping Binding Message
Reference's XML Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.11 <a href=
"#Binding_Fault_Reference">Binding Fault Reference</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.11.1 <a href=
"#Binding_Fault_Reference_details">The Binding Fault Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.11.2 <a href=
"#Binding_Fault_Reference_XMLRep">XML Representation of Binding
Fault Reference Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.11.2.1
<a href="#Binding_Fault_Reference_ref_attribute">ref attribute
information item with infault or outfault [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.11.2.2
<a href=
"#Binding_Fault_Reference_messageLabel_attribute">messageLabel
attribute information item with infault or outfault [owner
element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.11.2.3
<a href="#Binding_Fault_Reference_extension_elements">Binding Fault
Reference extension elements</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.11.3 <a href=
"#Binding_Fault_Reference_Mapping">Mapping Binding Fault
Reference's XML Representation to Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.12 <a href="#Service">Service</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.12.1 <a href=
"#Service_details">The Service Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.12.2 <a href=
"#Service_XMLRep">XML Representation of Service Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.12.2.1
<a href="#Service_name_attribute">name attribute information item
with service [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.12.2.2
<a href="#Service_interface_attribute">interface attribute
information item with service [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.12.3 <a href=
"#Service_Mapping">Mapping Service's XML Representation to
Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.13 <a href="#Endpoint">Endpoint</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.1 <a href=
"#Endpoint_details">The Endpoint Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.2 <a href=
"#Endpoint_XMLRep">XML Representation of Endpoint Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.2.1
<a href="#Endpoint_name_attribute">name attribute information item
with endpoint [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.2.2
<a href="#Endpoint_binding_attribute">binding attribute information
item with endpoint [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.2.3
<a href="#Endpoint_address_attribute">address attribute information
item with endpoint [owner element]</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.2.4
<a href="#Endpoint_extension_elements">Endpoint extension
elements</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.13.3 <a href=
"#Endpoint_Mapping">Mapping Endpoint's XML Representation to
Component Properties</a>
<br />
&#160;&#160;&#160;&#160;2.14 <a href="#simpletypes">XML Schema 1.0
Simple Types Used in the Component Model</a>
<br />
&#160;&#160;&#160;&#160;2.15 <a href="#compequiv">Equivalence of
Components</a>
<br />
&#160;&#160;&#160;&#160;2.16 <a href="#symbolspaces">Symbol
Spaces</a>
<br />
&#160;&#160;&#160;&#160;2.17 <a href="#qnameres">QName
resolution</a>
<br />
&#160;&#160;&#160;&#160;2.18 <a href="#uricompare">Comparing URIs
and IRIs</a>
<br />
3. <a href="#eii-types">Types</a>
<br />
&#160;&#160;&#160;&#160;3.1 <a href="#xsd-types">Using W3C XML
Schema Definition Language</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.1.1 <a href=
"#import-xsd">Importing XML Schema</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.1.1.1
<a href="#namespace-attribute">namespace attribute information
item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.1.1.2
<a href="#schemaLocation-attribute">schemaLocation attribute
information item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.1.2 <a href=
"#inlining-xsd">Inlining XML Schema</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.1.3 <a href=
"#references-definitions">References to Element Declarations and
Type Definitions</a>
<br />
&#160;&#160;&#160;&#160;3.2 <a href="#other-types">Using Other
Schema Languages</a>
<br />
&#160;&#160;&#160;&#160;3.3 <a href="#wsdlx-references">Describing
Messages that Refer to Services and Endpoints</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.3.1 <a href=
"#wsdlx-interface-aii">wsdlx:interface attribute information
item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.3.2 <a href=
"#wsdlx-binding-aii">wsdlx:binding attribute information item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.3.3 <a href=
"#wsdlx-consistency">wsdlx:interface and wsdlx:binding
Consistency</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3.3.4 <a href=
"#wsdlx-xsanyuri">Use of wsdlx:interface and wsdlx:binding with
xs:anyURI</a>
<br />
4. <a href="#modularize">Modularizing WSDL 2.0 descriptions</a>
<br />
&#160;&#160;&#160;&#160;4.1 <a href="#includes">Including
Descriptions</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4.1.1 <a href=
"#include_location_attribute">location attribute information item
with include [owner element]</a>
<br />
&#160;&#160;&#160;&#160;4.2 <a href="#imports">Importing
Descriptions</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4.2.1 <a href=
"#import_namespace_attribute">namespace attribute information
item</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4.2.2 <a href=
"#import_location_attribute">location attribute information item
with import [owner element]</a>
<br />
&#160;&#160;&#160;&#160;4.3 <a href=
"#extensions-and-modules">Extensions</a>
<br />
5. <a href="#eii-documentation">Documentation</a>
<br />
6. <a href="#language-extensibility">Language Extensibility</a>
<br />
&#160;&#160;&#160;&#160;6.1 <a href=
"#eii-extensibility">Element-based Extensibility</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;6.1.1 <a href=
"#mandatoryext">Mandatory extensions</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;6.1.2 <a href=
"#required-aii">required attribute information item</a>
<br />
&#160;&#160;&#160;&#160;6.2 <a href=
"#aii-extensibility">Attribute-based Extensibility</a>
<br />
&#160;&#160;&#160;&#160;6.3 <a href=
"#extensibility-semantics">Extensibility Semantics</a>
<br />
7. <a href="#wsdllocation">Locating WSDL 2.0 Documents</a>
<br />
&#160;&#160;&#160;&#160;7.1 <a href=
"#wsdlLocation-aii">wsdli:wsdlLocation attribute information
item</a>
<br />
8. <a href="#conformance">Conformance</a>
<br />
&#160;&#160;&#160;&#160;8.1 <a href="#infoset">XML Information Set
Conformance</a>
<br />
9. <a href="#Syntax-Summary">XML Syntax Summary (Non-Normative)</a>
<br />
10. <a href="#References">References</a>
<br />
&#160;&#160;&#160;&#160;10.1 <a href=
"#Normative-References">Normative References</a>
<br />
&#160;&#160;&#160;&#160;10.2 <a href=
"#Informative-References">Informative References</a>
<br /></p>
<h3><a name="appendices" id="appendices"></a>Appendices</h3>
<p class="toc">A. <a href="#ietf-draft">The application/wsdl+xml
Media Type</a>
<br />
&#160;&#160;&#160;&#160;A.1 <a href="#ietf-reg">Registration</a>
<br />
&#160;&#160;&#160;&#160;A.2 <a href="#frag-ids">Fragment
Identifiers</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.1 <a href=
"#wsdl.description">The Description Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.2 <a href=
"#wsdl.elementDeclaration">The Element Declaration Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.3 <a href=
"#wsdl.typeDefinition">The Type Definition Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.4 <a href=
"#wsdl.interface">The Interface Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.5 <a href=
"#wsdl.interfaceFault">The Interface Fault Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.6 <a href=
"#wsdl.interfaceOperation">The Interface Operation Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.7 <a href=
"#wsdl.interfaceMessageReference">The Interface Message Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.8 <a href=
"#wsdl.interfaceFaultReference">The Interface Fault Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.9 <a href=
"#wsdl.binding">The Binding Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.10 <a href=
"#wsdl.bindingFault">The Binding Fault Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.11 <a href=
"#wsdl.bindingOperation">The Binding Operation Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.12 <a href=
"#wsdl.bindingMessageReference">The Binding Message Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.13 <a href=
"#wsdl.bindingFaultReference">The Binding Fault Reference
Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.14 <a href=
"#wsdl.service">The Service Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.15 <a href=
"#wsdl.endpoint">The Endpoint Component</a>
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;A.2.16 <a href=
"#wsdl.extension">Extension Components</a>
<br />
&#160;&#160;&#160;&#160;A.3 <a href="#ietf-sec">Security
considerations</a>
<br />
B. <a href="#acknowledgments">Acknowledgements</a> (Non-Normative)
<br />
C. <a href="#wsdl-iri-references">IRI-References for WSDL 2.0
Components</a> (Non-Normative)
<br />
&#160;&#160;&#160;&#160;C.1 <a href="#wsdl-iris">WSDL 2.0 IRIs</a>
<br />
&#160;&#160;&#160;&#160;C.2 <a href=
"#component-designator-canonical-form">Canonical Form for WSDL 2.0
Component Designators</a>
<br />
&#160;&#160;&#160;&#160;C.3 <a href="#Iri-ref-ex">Example</a>
<br />
D. <a href="#componentsummary">Component Summary</a>
(Non-Normative)
<br />
E. <a href="#assertionsummary">Assertion Summary</a>
(Non-Normative)
<br /></p>
</div>
<hr />
<div class="body">
<div class="div1">
<h2><a name="intro" id="intro"></a>1. Introduction</h2>
<p>Web Services Description Language Version 2.0 (WSDL 2.0)
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>This specification defines a language for describing the
abstract functionality of a service as well as a framework for
describing the concrete details of a service description. It also
defines the conformance criteria for documents in this
language.</p>
<p>The companion specification, <em>Web Services Description
Language (WSDL) Version 2.0 Part 2: Adjuncts</em> [<cite><a href=
"#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>] describes extensions
for message exchange patterns, operation safety, operation styles
and binding extensions (for SOAP [<cite><a href=
"#SOAP12-PART1">SOAP 1.2 Part 1: Messaging Framework (Second
Edition)</a></cite>] and HTTP [<cite><a href="#RFC2616">IETF RFC
2616</a></cite>]).</p>
<div class="div2">
<h3><a name="intro_ws" id="intro_ws"></a>1.1 Service
Description</h3>
<p>WSDL 2.0 describes a Web service in two fundamental stages: one
abstract and one concrete. Within each stage, the description uses
a number of constructs to promote reusability of the description
and to separate independent design concerns.</p>
<p>At an abstract level, WSDL 2.0 describes a Web service in terms
of the messages it sends and receives; messages are described
independent of a specific wire format using a type system,
typically XML Schema.</p>
<p>An <em>operation</em> associates a message exchange pattern with
one or more messages. A <em>message exchange pattern</em>
identifies the sequence and cardinality of messages sent and/or
received as well as who they are logically sent to and/or received
from. An <em>interface</em> groups together operations without any
commitment to transport or wire format.</p>
<p>At a concrete level, a <em>binding</em> specifies transport and
wire format details for one or more interfaces. An
<em>endpoint</em> associates a network address with a binding. And
finally, a <em>service</em> groups together endpoints that
implement a common interface.</p>
</div>
<div class="div2">
<h3><a name="meaning" id="meaning"></a>1.2 The Meaning of a Service
Description</h3>
<p>A WSDL 2.0 service description indicates how potential clients
are intended to interact with the described service. It represents
an assertion that the described service fully implements and
conforms to what the WSDL 2.0 document describes. For example, as
further explained in section <a href="#mandatoryext"><strong>6.1.1
Mandatory extensions</strong></a>, if the WSDL 2.0 document
specifies a particular optional extension, the functionality
implied by that extension is only optional to the client. It must
be supported by the Web service.</p>
<p>A WSDL 2.0 interface describes potential interactions with a Web
service, not required interactions. The declaration of an operation
in a WSDL 2.0 interface is not an assertion that the interaction
described by the operation must occur. Rather it is an assertion
that if such an interaction is (somehow) initiated, then the
declared operation describes how that interaction is intended to
occur.</p>
</div>
<div class="div2">
<h3><a name="markup" id="markup"></a>1.3 Document Conformance</h3>
<p>An <em>element information item</em> (as defined in
[<cite><a href="#XMLInfoSet">XML Information Set</a></cite>]) whose
namespace name is "http://www.w3.org/ns/wsdl" and whose local part
is <code>description</code> conforms to this specification if it is
valid according to the XML Schema for that element as defined by
this specification (<a href=
"http://www.w3.org/2007/06/wsdl/wsdl20.xsd">http://www.w3.org/2007/06/wsdl/wsdl20.xsd</a>)
and additionally adheres to all the constraints contained in this
specification and conforms to the specifications of any extensions
contained in it. Such a conformant <em>element information
item</em> constitutes a <em>WSDL 2.0 document</em>.</p>
<p>The definition of the WSDL 2.0 language is based on the XML
Information Set [<cite><a href="#XMLInfoSet">XML Information
Set</a></cite>] but also imposes many semantic constraints over and
above structural conformance to this XML Infoset. In order to
precisely describe these constraints, and as an aid in precisely
defining the meaning of each WSDL 2.0 document, the WSDL 2.0
specification defines a component model <a href=
"#component_model"><strong>2. Component Model</strong></a> as an
additional layer of abstraction above the XML Infoset. Constraints
and meaning are defined in terms of this component model, and the
definition of each component includes a mapping that specifies how
values in the component model are derived from corresponding items
in the XML Infoset.</p>
<p>An XML 1.0 document that is valid with respect to the WSDL 2.0
XML Schema and that maps to a valid WSDL 2.0 Component Model is
conformant to the WSDL 2.0 specification.</p>
</div>
<div class="div2">
<h3><a name="notation" id="notation"></a>1.4 Notational
Conventions</h3>
<p>All parts of this specification are normative, with the
EXCEPTION of notes, pseudo-schemas, examples, and sections
explicitly marked as “Non-Normative”.</p>
<div class="div3">
<h4><a name="rfc2119keywords" id="rfc2119keywords"></a>1.4.1 RFC
2119 Keywords</h4>
<p>The keywords “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL”
in this document are to be interpreted as described in RFC 2119
[<cite><a href="#RFC2119">IETF RFC 2119</a></cite>].</p>
</div>
<div class="div3">
<h4><a name="rfc3986namespaces" id="rfc3986namespaces"></a>1.4.2
RFC 3986 Namespaces</h4>
<p>Namespace names of the general form:</p>
<ul>
<li>
<p>"http://example.org/..." and</p>
</li>
<li>
<p>"http://example.com/..."</p>
</li>
</ul>
<p>represent application or context-dependent URIs [<cite><a href=
"#RFC3986">IETF RFC 3986</a></cite>].</p>
</div>
<div class="div3">
<h4><a name="xmlSchemaAnyURI" id="xmlSchemaAnyURI"></a>1.4.3 XML
Schema anyURI</h4>
<p>This specification uses the XML Schema type
<code>xs:anyURI</code> (see [<cite><a href="#XMLSchemaP2">XML
Schema: Datatypes</a></cite>]). It is defined so that
<code>xs:anyURI</code> values are essentially IRIs (see
[<cite><a href="#RFC3987">IETF RFC 3987</a></cite>]). The
conversion from <code>xs:anyURI</code> values to an actual URI is
via an escaping procedure defined by (see [<cite><a href=
"#XLink">XLink 1.0</a></cite>]), which is identical in most
respects to IRI Section 3.1 (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]).</p>
<p>For interoperability, WSDL authors are advised to avoid the
US-ASCII characters: "&lt;", "&gt;", '"', space, "{", "}", "|",
"\", "^", and "`", which are allowed by the <code>xs:anyURI</code>
type, but disallowed in IRIs.</p>
</div>
<div class="div3">
<h4><a name="nsprefixes" id="nsprefixes"></a>1.4.4 Prefixes and
Namespaces Used in This Specification</h4>
<p>This specification uses predefined namespace prefixes
throughout; they are given in the following list. Note that the
choice of any namespace prefix is arbitrary and not semantically
significant (see [<cite><a href="#XMLNS">XML
Namespaces</a></cite>]).</p>
<a name="tabprefns" id="tabprefns"></a>
<table border="1" summary=
"Mapping of prefixes used in this document to their associated namespace name">
<caption>Table 1-1. Prefixes and Namespaces used in this
specification</caption>
<tbody>
<tr>
<th rowspan="1" colspan="1">Prefix</th>
<th rowspan="1" colspan="1">Namespace</th>
<th rowspan="1" colspan="1">Notes</th>
</tr>
<tr>
<td rowspan="1" colspan="1">wsdl</td>
<td rowspan="1" colspan="1">"http://www.w3.org/ns/wsdl"</td>
<td rowspan="1" colspan="1">Defined by this specification.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">wsdli</td>
<td rowspan="1" colspan="1">
"http://www.w3.org/ns/wsdl-instance"</td>
<td rowspan="1" colspan="1">Defined by this specification <a href=
"#wsdlLocation-aii"><strong>7.1 wsdli:wsdlLocation attribute
information item</strong></a>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">wsdlx</td>
<td rowspan="1" colspan="1">
"http://www.w3.org/ns/wsdl-extensions"</td>
<td rowspan="1" colspan="1">Defined by this specification <a href=
"#wsdlx-references"><strong>3.3 Describing Messages that Refer to
Services and Endpoints</strong></a>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">wrpc</td>
<td rowspan="1" colspan="1">"http://www.w3.org/ns/wsdl/rpc"</td>
<td rowspan="1" colspan="1">Defined by WSDL 2.0: Adjuncts
[<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1">wsoap</td>
<td rowspan="1" colspan="1">"http://www.w3.org/ns/wsdl/soap"</td>
<td rowspan="1" colspan="1">Defined by WSDL 2.0: Adjuncts
[<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1">whttp</td>
<td rowspan="1" colspan="1">"http://www.w3.org/ns/wsdl/http"</td>
<td rowspan="1" colspan="1">Defined by WSDL 2.0: Adjuncts
[<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1">xs</td>
<td rowspan="1" colspan="1">"http://www.w3.org/2001/XMLSchema"</td>
<td rowspan="1" colspan="1">Defined in the W3C XML Schema
specification [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>], [<cite><a href="#XMLSchemaP2">XML Schema:
Datatypes</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1">xsi</td>
<td rowspan="1" colspan="1">
"http://www.w3.org/2001/XMLSchema-instance"</td>
<td rowspan="1" colspan="1">Defined in the W3C XML Schema
specification [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>], [<cite><a href="#XMLSchemaP2">XML Schema:
Datatypes</a></cite>].</td>
</tr>
</tbody>
</table>
<br /></div>
<div class="div3">
<h4><a name="terminology" id="terminology"></a>1.4.5 Terms Used in
This Specification</h4>
<p>This section describes the terms and concepts introduced in Part
1 of the WSDL Version 2.0 specification (this document).</p>
<dl>
<dt class="label">Actual Value</dt>
<dd>
<p>As in [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>], the expression "actual value" is used to
refer to the member of the value space of the simple type
definition associated with an attribute information item which
corresponds to its normalized value. This will often be a string,
but may also be an integer, a boolean, an IRI-reference, etc.</p>
</dd>
<dt class="label">Inlined Schema</dt>
<dd>
<p>An XML schema that is defined in the <code>wsdl:types</code>
<em>element information item</em> of a WSDL 2.0 description. For
example, an XML Schema defined in an <code>xs:schema</code>
<em>element information item</em> <a href=
"#inlining-xsd"><strong>3.1.2 Inlining XML Schema</strong></a>.</p>
</dd>
</dl>
</div>
<div class="div3">
<h4><a name="xmlinfosetproperties" id=
"xmlinfosetproperties"></a>1.4.6 XML Information Set
Properties</h4>
<p>This specification refers to properties in the XML Information
Set [<cite><a href="#XMLInfoSet">XML Information Set</a></cite>].
Such properties are denoted by square brackets, e.g. [children],
[attributes].</p>
</div>
<div class="div3">
<h4><a name="wsdlcomponentmodelproperties" id=
"wsdlcomponentmodelproperties"></a>1.4.7 WSDL 2.0 Component Model
Properties</h4>
<p>This specification defines and refers to properties in the WSDL
2.0 Component Model <a href="#component_model"><strong>2. Component
Model</strong></a>. Such properties are denoted by curly brackets,
e.g. {<a href="#property-Interface.name">name</a>}, {<a href=
"#property-Description.interfaces">interfaces</a>}.</p>
<p>This specification uses a consistent naming convention for
component model properties that refer to components. If a property
refers to a required or optional component, then the property name
is the same as the component name. If a property refers to a set of
components, then the property name is the pluralized form of the
component name.</p>
</div>
<div class="div3">
<h4><a name="znotation" id="znotation"></a>1.4.8 Z Notation</h4>
<p>Z Notation [<cite><a href="#ZNotationReferenceManual">Z Notation
Reference Manual</a></cite>] was used in the development of this
specification. Z Notation is a formal specification language that
is based on standard mathematical notation. The Z Notation for this
specification has been verified using the Fuzz 2000 type-checker
[<cite><a href="#Fuzz2000">Fuzz 2000</a></cite>].</p>
<p>Since Z Notation is not widely known, it is not included the
normative version of this specification. However, it is included in
a <a href="wsdl20-z.html">non-normative version</a> which allows to
dynamically hide and show the Z Notation. Browsers correctly
display the mathematical Unicode characters, provided that the
required fonts are installed. Mathematical fonts for Mozilla
Firefox can be downloaded from the <a href=
"http://www.mozilla.org/projects/mathml/fonts/">Mozilla Web
site</a>.</p>
<p>The Z Notation was used to improve the quality of the normative
text that defines the Component Model, and to help ensure that the
test suite covered all important rules implied by the Component
Model. However, the Z Notation is non-normative, so any conflict
between it and the normative text is an error in the Z Notation.
Readers and implementers may nevertheless find the Z Notation
useful in cases where the normative text is unclear.</p>
<p>There are two elements of Z Notation syntax that conflict with
the notational conventions described in the preceding sections. In
Z Notation, square brackets are used to introduce basic sets, e.g.
[<span class="zi">ID</span>], which conflicts with the use of
square brackets to denote XML Information Set properties <a href=
"#xmlinfosetproperties"><strong>1.4.6 XML Information Set
Properties</strong></a>. Also, in Z Notation, curly brackets are
used to denote set display and set comprehension, e.g.
{1<span class="zprefix">,</span> 2<span class="zprefix">,</span>
3}, which conflicts with the use of curly brackets to denote WSDL
2.0 Component Model properties <a href=
"#wsdlcomponentmodelproperties"><strong>1.4.7 WSDL 2.0 Component
Model Properties</strong></a>. However, the intended meaning of
square and curly brackets should be clear from their context and
this minor notational conflict should not cause any confusion.</p>
</div>
<div class="div3">
<h4><a name="bnfpseudoschemas" id="bnfpseudoschemas"></a>1.4.9 BNF
Pseudo-Schemas</h4>
<p>Pseudo-schemas are provided for each component, before the
description of the component. They use BNF-style conventions for
attributes and elements: "?" denotes optionality (i.e. zero or one
occurrences), "*" denotes zero or more occurrences, "+" one or more
occurrences, "[" and "]" are used to form groups, and "|"
represents choice. Attributes are conventionally assigned a value
which corresponds to their type, as defined in the normative
schema. Elements with simple content are conventionally assigned a
value which corresponds to the type of their content, as defined in
the normative schema. Pseudo schemas do not include extension
points for brevity.</p>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;!-- sample pseudo-schema --&gt;
&lt;<strong>defined_element</strong>
required_attribute_of_type_string="<em>xs:string</em>"
optional_attribute_of_type_int="<em>xs:int</em>"? &gt;
&lt;required_element /&gt;
&lt;optional_element /&gt;?
&lt;one_or_more_of_these_elements /&gt;+
[ &lt;choice_1 /&gt; | &lt;choice_2 /&gt; ]*
&lt;/<strong>defined_element</strong>&gt;
</pre></div>
</div>
<div class="div3">
<h4><a name="assertions" id="assertions"></a>1.4.10 Assertions</h4>
<p>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>The assertions and their identifiers are summarized in section
<a href="#assertionsummary"><strong>E. Assertion
Summary</strong></a>.</p>
</div>
</div>
</div>
<div class="div1">
<h2><a name="component_model" id="component_model"></a>2. Component
Model</h2>
<p>This section describes the conceptual model of WSDL 2.0 as a set
of components with attached properties, which collectively describe
a Web service. This model is called the <em>Component Model</em> of
WSDL 2.0. A <em>valid WSDL 2.0 component model</em> is a set of
WSDL 2.0 components and properties that satisfy all the
requirements given in this specification as indicated by keywords
whose interpretation is defined by RFC 2119 [<cite><a href=
"#RFC2119">IETF RFC 2119</a></cite>].</p>
<a name="zed-ComponentModel" id="zed-ComponentModel"></a>
<p>Components are typed collections of properties that correspond
to different aspects of Web services. Each subsection herein
describes a different type of component, its defined properties,
and its representation as an XML Infoset [<cite><a href=
"#XMLInfoSet">XML Information Set</a></cite>].</p>
<a name="zed-Component" id="zed-Component"></a><a name="zed-ID" id=
"zed-ID"></a><a name="zed-Identifier" id=
"zed-Identifier"></a><a name="zed-Id" id="zed-Id"></a><a name=
"zed-ComponentModel1" id="zed-ComponentModel1"></a><a name=
"zed-IdentifierValid" id="zed-IdentifierValid"></a><a name=
"zed-InterfaceComponents" id="zed-InterfaceComponents"></a><a name=
"zed-InterfaceComponentIds" id=
"zed-InterfaceComponentIds"></a><a name="zed-BindingComponents" id=
"zed-BindingComponents"></a><a name="zed-BindingComponentIds" id=
"zed-BindingComponentIds"></a><a name="zed-ServiceComponents" id=
"zed-ServiceComponents"></a><a name="zed-ServiceComponentIds" id=
"zed-ServiceComponentIds"></a><a name="zed-OtherComponents" id=
"zed-OtherComponents"></a><a name="zed-OtherComponentIds" id=
"zed-OtherComponentIds"></a><a name="zed-ComponentModel2" id=
"zed-ComponentModel2"></a><a name="zed-Base" id=
"zed-Base"></a><a name="zed-BaseValid" id=
"zed-BaseValid"></a><a name="zed-NestedBase" id=
"zed-NestedBase"></a><a name="zed-NestedBaseValid" id=
"zed-NestedBaseValid"></a>
<p>Properties are unordered and unique with respect to the
component they are associated with. Individual properties'
definitions may constrain their content (e.g., to a typed value,
another component, or a set of typed values or components), and
components may require the presence of a property to be considered
conformant. Such properties are marked as REQUIRED, whereas those
that are not required to be present are marked as OPTIONAL. By
convention, when specifying the mapping rules from the XML Infoset
representation of a component to the component itself, an optional
property that is absent in the component in question is described
as being “empty”. Unless otherwise specified, when a property is
identified as being a collection (a set or a list), its value may
be a 0-element (empty) collection. In order to simplify the
presentation of the rules that deal with sets of components, for
all OPTIONAL properties whose type is a set, the absence of such a
property from a component MUST be treated as semantically
equivalent to the presence of a property with the same name and
whose value is the empty set. In other words, every OPTIONAL
set-valued property MUST be assumed to have the empty set as its
default value, to be used in case the property is absent.</p>
<a name="zed-OPTIONAL" id="zed-OPTIONAL"></a>
<p>Component definitions are serializable in XML 1.0 format but are
independent of any particular serialization of the component model.
Component definitions use a subset (see <a href=
"#simpletypes"><strong>2.14 XML Schema 1.0 Simple Types Used in the
Component Model</strong></a>) of the simple types defined by the
XML Schema 1.0 specification [<cite><a href="#XMLSchemaP2">XML
Schema: Datatypes</a></cite>].</p>
<p>In addition to the direct XML Infoset representation described
here, the component model allows components external to the Infoset
through the mechanisms described in <a href=
"#modularize"><strong>4. Modularizing WSDL 2.0
descriptions</strong></a>.</p>
<p>A component model can be extracted from a given XML Infoset
which conforms to the XML Schema for WSDL 2.0 by recursively
mapping Information Items to their identified components, starting
with the <code>wsdl:description</code> <em>element information
item</em>. This includes the application of the mechanisms
described in <a href="#modularize"><strong>4. Modularizing WSDL 2.0
descriptions</strong></a>.</p>
<p>This document does not specify a means of producing an XML
Infoset representation from a component model instance. In
particular, there are in general many valid ways to modularize a
given component model instance into one or more XML Infosets.</p>
<div class="div2">
<h3><a name="Description" id="Description"></a>2.1 Description</h3>
<div class="div3">
<h4><a name="Description_details" id=
"Description_details"></a>2.1.1 The Description Component</h4>
<p>At a high level, the <a href=
"#component-Description">Description</a> component is just a
container for two categories of components: WSDL 2.0 components and
type system components.</p>
<p>WSDL 2.0 components are interfaces, bindings and services. Type
system components are element declarations and type
definitions.</p>
<p>Type system components describe the constraints on a message's
content. By default, these constraints are expressed in terms of
the [<cite><a href="#XMLInfoSet">XML Information Set</a></cite>],
i.e. they define the [local name], [namespace name], [children] and
[attributes] properties of an <em>element information item</em>.
Type systems based upon other data models are generally
accommodated by extensions to WSDL 2.0; see <a href=
"#language-extensibility"><strong>6. Language
Extensibility</strong></a>. In the case where they define
information equivalent to that of a XML Schema global element
declaration, they can be treated as if they were such a
declaration.</p>
<p>This specification does not define the behavior of a WSDL 2.0
document that uses multiple schema languages for describing type
system components simultaneously.</p>
<a name="zed-ElementContentModel" id="zed-ElementContentModel"></a>
<p>An <a name="component-ElementDeclaration" id=
"component-ElementDeclaration">Element Declaration</a> component
defines the name and content model of an <em>element information
item</em> such as that defined by an XML Schema global element
declaration. It has a {<a name="property-ElementDeclaration.name"
id="property-ElementDeclaration.name">name</a>} property that is
the QName of the <em>element information item</em> and a {<a name=
"property-ElementDeclaration.system" id=
"property-ElementDeclaration.system">system</a>} property that is
the namespace IRI of the extension <em>element information
item</em>s for the type system, e.g. the namespace of XML
Schema.</p>
<a name="zed-ElementDeclaration" id=
"zed-ElementDeclaration"></a><a name="zed-ElementDeclarationCM" id=
"zed-ElementDeclarationCM"></a>
<p>A <a name="component-TypeDefinition" id=
"component-TypeDefinition">Type Definition</a> component defines
the content model of an <em>element information item</em> such as
that defined by an XML Schema global type definition. It has a
{<a name="property-TypeDefinition.name" id=
"property-TypeDefinition.name">name</a>} property that is the QName
of the type and a {<a name="property-TypeDefinition.system" id=
"property-TypeDefinition.system">system</a>} property that is the
namespace IRI of the extension <em>element information item</em>s
for the type system, e.g. the namespace of XML Schema.</p>
<a name="zed-TypeDefinition" id="zed-TypeDefinition"></a><a name=
"zed-TypeDefinitionCM" id="zed-TypeDefinitionCM"></a>
<p><a href="#component-Interface">Interface</a>, <a href=
"#component-Binding">Binding</a>, <a href=
"#component-Service">Service</a>, <a href=
"#component-ElementDeclaration">Element Declaration</a>, and
<a href="#component-TypeDefinition">Type Definition</a> components
are directly contained in the <a href=
"#component-Description">Description</a> component and are referred
to as <em>top-level components</em>. The top-level WSDL 2.0
components contain other components, e.g. <a href=
"#component-InterfaceOperation">Interface Operation</a> and
<a href="#component-Endpoint">Endpoint</a>, which are referred to
as <em>nested components</em>. Nested components may contain other
nested components. The component that contains a nested component
is referred to as the <em>parent</em> of the nested component.
Nested components have a {<a name="property-.parent" id=
"property-.parent">parent</a>} property that is a reference to
their parent component.</p>
<a name="zed-TopLevelComponent" id=
"zed-TopLevelComponent"></a><a name="zed-Name" id=
"zed-Name"></a><a name="zed-Parent" id="zed-Parent"></a><a name=
"zed-ParentValid" id="zed-ParentValid"></a><a name=
"zed-NestedComponent" id="zed-NestedComponent"></a><a name=
"zed-ParentId" id="zed-ParentId"></a>
<p>The properties of the <a name="component-Description" id=
"component-Description">Description</a> component are as
follows:</p>
<ul>
<li>
<p>{<a name="property-Description.interfaces" id=
"property-Description.interfaces">interfaces</a>} OPTIONAL. A set
of <a href="#component-Interface">Interface</a> components.</p>
</li>
<li>
<p>{<a name="property-Description.bindings" id=
"property-Description.bindings">bindings</a>} OPTIONAL. A set of
<a href="#component-Binding">Binding</a> components.</p>
</li>
<li>
<p>{<a name="property-Description.services" id=
"property-Description.services">services</a>} OPTIONAL. A set of
<a href="#component-Service">Service</a> components.</p>
</li>
<li>
<p>{<a name="property-Description.elementdeclarations" id=
"property-Description.elementdeclarations">element
declarations</a>} OPTIONAL. A set of <a href=
"#component-ElementDeclaration">Element Declaration</a>
components.</p>
</li>
<li>
<p>{<a name="property-Description.typedefinitions" id=
"property-Description.typedefinitions">type definitions</a>}
REQUIRED. A set of <a href="#component-TypeDefinition">Type
Definition</a> components.</p>
</li>
</ul>
<a name="zed-Description" id="zed-Description"></a><a name=
"zed-stringTD..." id="zed-stringTD..."></a><a name=
"zed-BuiltInTypeDefComps" id="zed-BuiltInTypeDefComps"></a><a name=
"zed-XMLSchemaURI" id="zed-XMLSchemaURI"></a><a name=
"zed-BuiltInTypeDefIds" id="zed-BuiltInTypeDefIds"></a><a name=
"zed-DescriptionTypeDefs" id="zed-DescriptionTypeDefs"></a><a name=
"zed-DescriptionKey" id="zed-DescriptionKey"></a><a name=
"zed-DescriptionCM" id="zed-DescriptionCM"></a>
<p>The set of top-level components contained in the <a href=
"#component-Description">Description</a> component associated with
an initial WSDL 2.0 document consists of the components defined in
the initial document, plus the components associated with the WSDL
2.0 documents that the initial document includes, plus the
components defined by other WSDL 2.0 documents in the namespaces
that the initial document imports. The component model makes no
distinction between the components that are defined in the initial
document versus those that are defined in the included documents or
imported namespaces. However, any WSDL 2.0 document that contains
component definitions that refer by QName to WSDL 2.0 components
that belong to a different namespace MUST contain a
<code>wsdl:import</code> <em>element information item</em> for that
namespace (see <a href="#imports"><strong>4.2 Importing
Descriptions</strong></a> ). Furthermore, all QName references,
whether to the same or to different namespaces must resolve to
components (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a> ).</p>
<p>When using the XML Schema language to describe type system
components, the inclusion of <a href=
"#component-ElementDeclaration">Element Declaration</a> components
and <a href="#component-TypeDefinition">Type Definition</a>
components in a <a href="#component-Description">Description</a>
component is governed by the rules in <a href=
"#xsd-types"><strong>3.1 Using W3C XML Schema Definition
Language</strong></a>.</p>
<p>In addition to WSDL 2.0 components and type system components,
additional extension components MAY be added via extensibility
<a href="#language-extensibility"><strong>6. Language
Extensibility</strong></a>. Further, additional properties to WSDL
2.0 and type system components MAY also be added via
extensibility.</p>
</div>
<div class="div3">
<h4><a name="Description_XMLRep" id="Description_XMLRep"></a>2.1.2
XML Representation of Description Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;<strong>description</strong>
targetNamespace="<em>xs:anyURI</em>" &gt;
&lt;documentation /&gt;*
[ &lt;import /&gt; | &lt;include /&gt; ]*
&lt;types /&gt;?
[ &lt;interface /&gt; | &lt;binding /&gt; | &lt;service /&gt; ]*
&lt;/<strong>description</strong>&gt;
</pre></div>
<p>WSDL 2.0 descriptions are represented in XML by one or more WSDL
2.0 Information Sets (Infosets), that is one or more
<code>description</code> <em>element information item</em>s. A WSDL
2.0 Infoset contains representations for a collection of WSDL 2.0
components that share a common target namespace and zero or more
<code>wsdl:import</code> <em>element information item</em>s
<a href="#imports"><strong>4.2 Importing Descriptions</strong></a>
that correspond to a collection with components from multiple
target namespaces.</p>
<p>The components directly defined or included within a <a href=
"#component-Description">Description</a> component are said to
belong to the same <em>target namespace</em>. The target namespace
therefore groups a set of related component definitions and
represents an unambiguous name for the intended semantics of the
collection of components. <span id="Description-1001" class=
"test-assertion-tr">The value of the <code>targetNamespace</code>
<em>attribute information item</em> SHOULD be
dereferencable.<sup><a href="#Description-1001-summary" title=
"Link to assertion Description-1001 summary">†</a></sup></span>
<span id="Description-1002" class="test-assertion-tr">It SHOULD
resolve to a human or machine processable document that directly or
indirectly defines the intended semantics of those
components.<sup><a href="#Description-1002-summary" title=
"Link to assertion Description-1002 summary">†</a></sup></span>
<span id="Description-1003" class="test-assertion-tr">It MAY
resolve to a WSDL 2.0 document that provides service description
information for that namespace.<sup><a href=
"#Description-1003-summary" title=
"Link to assertion Description-1003 summary">†</a></sup></span></p>
<p><span id="Description-1004" class="test-assertion-tr">If a WSDL
2.0 document is split into multiple WSDL 2.0 documents (which may
be combined as needed via <a href="#includes"><strong>4.1 Including
Descriptions</strong></a>), then the <code>targetNamespace</code>
<em>attribute information item</em> SHOULD resolve to a master WSDL
2.0 document that includes all the WSDL 2.0 documents needed for
that service description.<sup><a href="#Description-1004-summary"
title=
"Link to assertion Description-1004 summary">†</a></sup></span>
This approach enables the WSDL 2.0 component designator fragment
identifiers to be properly resolved.</p>
<p>Components that belong to imported namespaces have different
target namespace values than that of the importing WSDL 2.0
document. Thus importing is the mechanism to use components from
one namespace in the definition of components from another
namespace.</p>
<p>Note that each WSDL 2.0 document or type system component of the
same kind must be uniquely identified by its qualified name. That
is, if two distinct components of the same kind (<a href=
"#component-Interface">Interface</a>, <a href=
"#component-Binding">Binding</a>, etc.) are in the same target
namespace, then their QNames MUST be unique. However, different
kinds of components (e.g., an <a href=
"#component-Interface">Interface</a> component and a <a href=
"#component-Binding">Binding</a> component) MAY have the same
QName. Thus, QNames of components must be unique within the space
of those components in a given target namespace.</p>
<p>The <code>description</code> <em>element information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>description</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>targetNamespace</code> <em>attribute
information item</em> as described below in <a href=
"#Description_targetnamespace_attribute"><strong>2.1.2.1
targetNamespace attribute information item</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p><span id="Description-1005" class="test-assertion-tr">Zero or
more <em>element information item</em>s amongst its [children], in
order as follows:<sup><a href="#Description-1005-summary" title=
"Link to assertion Description-1005 summary">†</a></sup></span></p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>Zero or more <code>include</code> <em>element information
item</em>s (see <a href="#includes"><strong>4.1 Including
Descriptions</strong></a>)</p>
</li>
<li>
<p>Zero or more <code>import</code> <em>element information
item</em>s (see <a href="#imports"><strong>4.2 Importing
Descriptions</strong></a>)</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>An OPTIONAL <code>types</code> <em>element information item</em>
(see <a href="#eii-types"><strong>3. Types</strong></a>).</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p><code>interface</code> <em>element information item</em>s (see
<a href="#Interface_XMLRep"><strong>2.2.2 XML Representation of
Interface Component</strong></a>).</p>
</li>
<li>
<p><code>binding</code> <em>element information item</em>s (see
<a href="#Binding_XMLRep"><strong>2.7.2 XML Representation of
Binding Component</strong></a>).</p>
</li>
<li>
<p><code>service</code> <em>element information item</em>s (see
<a href="#Service_XMLRep"><strong>2.12.2 XML Representation of
Service Component</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Description_targetnamespace_attribute" id=
"Description_targetnamespace_attribute"></a>2.1.2.1
<code>targetNamespace</code> <em>attribute information
item</em></h5>
<p>The <code>targetNamespace</code> <em>attribute information
item</em> defines the namespace affiliation of top-level components
defined in this <code>description</code> <em>element information
item</em>. <a href="#component-Interface">Interface</a>, <a href=
"#component-Binding">Binding</a> and <a href=
"#component-Service">Service</a> are top-level components.</p>
<p>The <code>targetNamespace</code> <em>attribute information
item</em> has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>targetNamespace</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>targetNamespace</code> <em>attribute
information item</em> is <em>xs:anyURI</em>. <span id=
"Description-1006" class="test-assertion-tr">Its value MUST be an
absolute IRI (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]) and should be dereferencable.<sup><a href=
"#Description-1006-summary" title=
"Link to assertion Description-1006 summary">†</a></sup></span></p>
</div>
</div>
<div class="div3">
<h4><a name="Description_Mapping" id=
"Description_Mapping"></a>2.1.3 Mapping Description's XML
Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>description</code> <em>element information item</em> (see
<a href="#Description_XMLRep"><strong>2.1.2 XML Representation of
Description Component</strong></a>) to the properties of the
<a href="#component-Description">Description</a> component is
described in <a href="#tab_Description_Mapping">Table 2-1</a>.</p>
<a name="tab_Description_Mapping" id="tab_Description_Mapping"></a>
<table border="1">
<caption>Table 2-1. Mapping from XML Representation to Description
Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Description.interfaces">interfaces</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-Interface">Interface</a> components corresponding to
all the <code>interface</code> <em>element information item</em>s
in the [children] of the <code>description</code> <em>element
information item</em>, if any, plus any included (via
<code>wsdl:include</code>) or imported (via
<code>wsdl:import</code>) <a href=
"#component-Interface">Interface</a> components (see <a href=
"#modularize"><strong>4. Modularizing WSDL 2.0
descriptions</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Description.bindings">bindings</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-Binding">Binding</a> components corresponding to all
the <code>binding</code> <em>element information item</em>s in the
[children] of the <code>description</code> <em>element information
item</em>, if any, plus any included (via
<code>wsdl:include</code>) or imported (via
<code>wsdl:import</code>) <a href="#component-Binding">Binding</a>
components (see <a href="#modularize"><strong>4. Modularizing WSDL
2.0 descriptions</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Description.services">services</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-Service">Service</a> components corresponding to all
the <code>service</code> <em>element information item</em>s in the
[children] of the <code>description</code> <em>element information
item</em>, if any, plus any included (via
<code>wsdl:include</code>) or imported (via
<code>wsdl:import</code>) <a href="#component-Service">Service</a>
components (see <a href="#modularize"><strong>4. Modularizing WSDL
2.0 descriptions</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Description.elementdeclarations">element
declarations</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-ElementDeclaration">Element Declaration</a> components
corresponding to all the element declarations defined as
descendants of the <code>types</code> <em>element information
item</em>, if any, plus any included (via <code>xs:include</code>)
or imported (via <code>xs:import</code>) <a href=
"#component-ElementDeclaration">Element Declaration</a> components.
At a minimum this will include all the global element declarations
defined by XML Schema <code>element</code> <em>element information
item</em>s. It MAY also include any declarations from some other
type system which describes the [local name], [namespace name],
[attributes] and [children] properties of an <em>element
information item</em>. <span id="Types-1007" class=
"test-assertion-tr">Each XML Schema element declaration MUST have a
unique QName.<sup><a href="#Types-1007-summary" title=
"Link to assertion Types-1007 summary">†</a></sup></span></td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Description.typedefinitions">type definitions</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-TypeDefinition">Type Definition</a> components
corresponding to all the type definitions defined as descendants of
the <code>types</code> <em>element information item</em>, if any,
plus any included (via <code>xs:include</code>) or imported (via
<code>xs:import</code>) <a href="#component-TypeDefinition">Type
Definition</a> components. In addition, the built-in datatypes
defined by XML Schema Part 2: Datatypes Second Edition
[<cite><a href="#XMLSchemaP2">XML Schema: Datatypes</a></cite>],
namely the nineteen primitive datatypes <code>xs:string</code>,
<code>xs:boolean</code>, <code>xs:decimal</code>,
<code>xs:float</code>, <code>xs:double</code>,
<code>xs:duration</code>, <code>xs:dateTime</code>,
<code>xs:time</code>, <code>xs:date</code>,
<code>xs:gYearMonth</code>, <code>xs:gYear</code>,
<code>xs:gMonthDay</code>, <code>xs:gDay</code>,
<code>xs:gMonth</code>, <code>xs:hexBinary</code>,
<code>xs:base64Binary</code>, <code>xs:anyURI</code>,
<code>xs:QName</code>, <code>xs:NOTATION</code>, and the
twenty-five derived datatypes <code>xs:normalizedString</code>,
<code>xs:token</code>, <code>xs:language</code>,
<code>xs:NMTOKEN</code>, <code>xs:NMTOKENS</code>,
<code>xs:Name</code>, <code>xs:NCName</code>, <code>xs:ID</code>,
<code>xs:IDREF</code>, <code>xs:IDREFS</code>,
<code>xs:ENTITY</code>, <code>xs:ENTITIES</code>,
<code>xs:integer</code>, <code>xs:nonPositiveInteger</code>,
<code>xs:negativeInteger</code>, <code>xs:long</code>,
<code>xs:int</code>, <code>xs:short</code>, <code>xs:byte</code>,
<code>xs:nonNegativeInteger</code>, <code>xs:unsignedLong</code>,
<code>xs:unsignedInt</code>, <code>xs:unsignedShort</code>,
<code>xs:unsignedByte</code>, <code>xs:positiveInteger</code>. The
set MAY also include any definitions from some other type system
which describes the [attributes] and [children] properties of an
<em>element information item</em>. <span id="Types-1008" class=
"test-assertion-tr">Each XML Schema type definition MUST have a
unique QName.<sup><a href="#Types-1008-summary" title=
"Link to assertion Types-1008 summary">†</a></sup></span></td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Interface" id="Interface"></a>2.2 Interface</h3>
<div class="div3">
<h4><a name="Interface_details" id="Interface_details"></a>2.2.1
The Interface Component</h4>
<p>An <a href="#component-Interface">Interface</a> component
describes sequences of messages that a service sends and/or
receives. It does this by grouping related messages into
operations. An operation is a sequence of input and output
messages, and an interface is a set of operations.</p>
<p>An interface can optionally extend one or more other interfaces.
<span id="Interface-1009" class="test-assertion-tr">To avoid
circular definitions, an interface MUST NOT appear in the set of
interfaces it extends, either directly or indirectly. <sup><a href=
"#Interface-1009-summary" title=
"Link to assertion Interface-1009 summary">†</a></sup></span> The
set of operations available in an interface includes all the
operations defined by the interfaces it extends directly or
indirectly, together with any operations it directly defines. The
operations directly defined on an interface are referred to as the
<em>declared</em> operations of the interface. In the process,
operation components that are equivalent per <a href=
"#compequiv"><strong>2.15 Equivalence of Components</strong></a>
are treated as one single component. The interface extension
mechanism behaves in a similar way for all other components that
can be defined inside an interface, namely <a href=
"#component-InterfaceFault">Interface Fault</a> components.</p>
<p>Interfaces are named constructs and can be referred to by QName
(see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>). For instance, <a href=
"#component-Binding">Binding</a> components refer to interfaces in
this way.</p>
<p>The properties of the <a name="component-Interface" id=
"component-Interface">Interface</a> component are as follows:</p>
<ul>
<li>
<p>{<a name="property-Interface.name" id=
"property-Interface.name">name</a>} REQUIRED. An
<em>xs:QName</em>.</p>
</li>
<li>
<p>{<a name="property-Interface.extendedinterfaces" id=
"property-Interface.extendedinterfaces">extended interfaces</a>}
OPTIONAL. A set of declared <a href=
"#component-Interface">Interface</a> components which this
interface extends.</p>
</li>
<li>
<p>{<a name="property-Interface.interfacefaults" id=
"property-Interface.interfacefaults">interface faults</a>}
OPTIONAL. The set of declared <a href=
"#component-InterfaceFault">Interface Fault</a> components. Note
that the namespace name of the {<a href=
"#property-InterfaceFault.name">name</a>} property of each <a href=
"#component-InterfaceFault">Interface Fault</a> in this set is the
same as the namespace name of the {<a href=
"#property-Interface.name">name</a>} property of this <a href=
"#component-Interface">Interface</a> component.</p>
</li>
<li>
<p>{<a name="property-Interface.interfaceoperations" id=
"property-Interface.interfaceoperations">interface operations</a>}
OPTIONAL. A set of declared <a href=
"#component-InterfaceOperation">Interface Operation</a> components.
Note that the namespace name of the {<a href=
"#property-InterfaceOperation.name">name</a>} property of each
<a href="#component-InterfaceOperation">Interface Operation</a> in
this set is the same as the namespace name of the {<a href=
"#property-Interface.name">name</a>} property of this <a href=
"#component-Interface">Interface</a> component.</p>
</li>
</ul>
<a name="zed-Interface" id="zed-Interface"></a><a name=
"zed-InterfaceRI" id="zed-InterfaceRI"></a>
<p><span id="Interface-1010" class="test-assertion-tr">For each
<a href="#component-Interface">Interface</a> component in the
{<a href="#property-Description.interfaces">interfaces</a>}
property of a <a href="#component-Description">Description</a>
component, the {<a href="#property-Interface.name">name</a>}
property MUST be unique.<sup><a href="#Interface-1010-summary"
title=
"Link to assertion Interface-1010 summary">†</a></sup></span></p>
<a name="zed-InterfaceKey" id="zed-InterfaceKey"></a><a name=
"zed-InterfaceParent" id="zed-InterfaceParent"></a><a name=
"zed-InterfaceAllExtendedInterfaces" id=
"zed-InterfaceAllExtendedInterfaces"></a><a name=
"zed-InterfaceExtendsAcyclic" id=
"zed-InterfaceExtendsAcyclic"></a><a name=
"zed-InterfaceAllInterfaceOperations" id=
"zed-InterfaceAllInterfaceOperations"></a><a name=
"zed-InterfaceAllInterfaceFaults" id=
"zed-InterfaceAllInterfaceFaults"></a><a name="zed-InterfaceCM" id=
"zed-InterfaceCM"></a></div>
<div class="div3">
<h4><a name="Interface_XMLRep" id="Interface_XMLRep"></a>2.2.2 XML
Representation of Interface Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;<strong>interface</strong>
name="<em>xs:NCName</em>"
extends="<em>list of xs:QName</em>"?
styleDefault="<em>list of xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
[ &lt;fault /&gt; | &lt;operation /&gt; ]*
&lt;/<strong>interface</strong>&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for an <a href=
"#component-Interface">Interface</a> component is an <em>element
information item</em> with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>interface</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>name</code> <em>attribute information item</em>
as described below in <a href=
"#Interface_name_attribute"><strong>2.2.2.1 name attribute
information item with interface [owner element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>extends</code> <em>attribute information
item</em> as described below in <a href=
"#Interface_extends_attribute"><strong>2.2.2.2 extends attribute
information item</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>styleDefault</code> <em>attribute information
item</em> as described below in <a href=
"#Interface_styleDefault_attribute"><strong>2.2.2.3 styleDefault
attribute information item</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em>s amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>Zero or more <code>fault</code> <em>element information
item</em>s <a href="#InterfaceFault_XMLRep"><strong>2.3.2 XML
Representation of Interface Fault Component</strong></a>.</p>
</li>
<li>
<p>Zero or more <code>operation</code> <em>element information
item</em>s <a href="#InterfaceOperation_XMLRep"><strong>2.4.2 XML
Representation of Interface Operation Component</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Interface_name_attribute" id=
"Interface_name_attribute"></a>2.2.2.1 <code>name</code>
<em>attribute information item</em> with <code>interface</code>
[owner element]</h5>
<p>The <code>name</code> <em>attribute information item</em>
together with the <code>targetNamespace</code> <em>attribute
information item</em> of the [parent] <code>description</code>
<em>element information item</em> forms the QName of the
interface.</p>
<p>The <code>name</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>name</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>name</code> <em>attribute information
item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Interface_extends_attribute" id=
"Interface_extends_attribute"></a>2.2.2.2 <code>extends</code>
<em>attribute information item</em></h5>
<p>The <code>extends</code> <em>attribute information item</em>
lists the interfaces that this interface derives from.</p>
<p>The <code>extends</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>extends</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>extends</code> <em>attribute information
item</em> is a whitespace-separated list of <em>xs:QName</em>.</p>
<p><span id="Interface-1011" class="test-assertion-tr">The list of
<em>xs:QName</em> in an <code>extends</code> <em>attribute
information item</em> MUST NOT contain duplicates.<sup><a href=
"#Interface-1011-summary" title=
"Link to assertion Interface-1011 summary">†</a></sup></span></p>
</div>
<div class="div4">
<h5><a name="Interface_styleDefault_attribute" id=
"Interface_styleDefault_attribute"></a>2.2.2.3
<code>styleDefault</code> <em>attribute information item</em></h5>
<p>The <code>styleDefault</code> <em>attribute information
item</em> indicates the default style (see <a href=
"#InterfaceOperationStyle"><strong>2.4.1.2 Operation
Style</strong></a>) used to construct the {<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} properties of {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} of all operations contained within the
[owner element] <code>interface</code>.</p>
<p>The <code>styleDefault</code> <em>attribute information
item</em> has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>styleDefault.</code></p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>styleDefault</code> <em>attribute
information item</em> is <em>list of xs:anyURI</em>. <span id=
"Interface-1012" class="test-assertion-tr">Its value, if present,
MUST contain absolute IRIs (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]).<sup><a href="#Interface-1012-summary" title=
"Link to assertion Interface-1012 summary">†</a></sup></span></p>
</div>
</div>
<div class="div3">
<h4><a name="Interface_Mapping" id="Interface_Mapping"></a>2.2.3
Mapping Interface's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>interface</code> <em>element information item</em> (see
<a href="#Interface_XMLRep"><strong>2.2.2 XML Representation of
Interface Component</strong></a>) to the properties of the <a href=
"#component-Interface">Interface</a> component is as described in
<a href="#tab_Interface_Mapping">Table 2-2</a>.</p>
<a name="tab_Interface_Mapping" id="tab_Interface_Mapping"></a>
<table border="1">
<caption>Table 2-2. Mapping from XML Representation to Interface
Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Interface.name">name</a>}</td>
<td rowspan="1" colspan="1">The QName whose local name is actual
value of the <code>name</code> <em>attribute information item</em>
and whose namespace name is the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the [parent] <code>description</code> <em>element information
item</em></td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Interface.extendedinterfaces">extended
interfaces</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-Interface">Interface</a> components resolved to by the
values in the <code>extends</code> <em>attribute information
item</em>, if any (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Interface.interfacefaults">interface faults</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-InterfaceFault">Interface Fault</a> components
corresponding to the <code>fault</code> <em>element information
item</em>s in [children], if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Interface.interfaceoperations">interface
operations</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-InterfaceOperation">Interface Operation</a> components
corresponding to the <code>operation</code> <em>element information
item</em>s in [children], if any.</td>
</tr>
</tbody>
</table>
<br />
<p>Recall that, per <a href="#Interface_details"><strong>2.2.1 The
Interface Component</strong></a>, the <a href=
"#component-Interface">Interface</a> components in the {<a href=
"#property-Interface.extendedinterfaces">extended interfaces</a>}
property of a given <a href="#component-Interface">Interface</a>
component MUST NOT contain that <a href=
"#component-Interface">Interface</a> component in any of their
{<a href="#property-Interface.extendedinterfaces">extended
interfaces</a>} properties, that is to say, recursive extension of
interfaces is disallowed.</p>
</div>
</div>
<div class="div2">
<h3><a name="InterfaceFault" id="InterfaceFault"></a>2.3 Interface
Fault</h3>
<div class="div3">
<h4><a name="InterfaceFault_details" id=
"InterfaceFault_details"></a>2.3.1 The Interface Fault
Component</h4>
<p>A fault is an event that occurs during the execution of a
message exchange that disrupts the normal flow of messages.</p>
<p>A fault is typically raised when a party is unable to
communicate an error condition inside the normal message flow, or a
party wishes to terminate a message exchange. A fault message may
be used to communicate out of band information such as the reason
for the error, the origin of the fault, as well as other informal
diagnostics such as a program stack trace.</p>
<p>An <a href="#component-InterfaceFault">Interface Fault</a>
component describes a fault that MAY occur during invocation of an
operation of the interface. The <a href=
"#component-InterfaceFault">Interface Fault</a> component declares
an abstract fault by naming it and indicating the contents of the
fault message. When and how the fault message flows is indicated by
the <a href="#component-InterfaceOperation">Interface Operation</a>
component.</p>
<p>The <a href="#component-InterfaceFault">Interface Fault</a>
component provides a clear mechanism to name and describe the set
of faults an interface may generate. This allows operations to
easily identify the individual faults they may generate by name.
This mechanism allows the ready identification of the same fault
occurring across multiple operations and referenced in multiple
bindings as well as reducing duplication of description for an
individual fault.</p>
<p>Faults other than the ones described in the <a href=
"#component-Interface">Interface</a> component may also be
generated at run-time, i.e. faults are an open set. The <a href=
"#component-Interface">Interface</a> component describes faults
that have application level semantics, i.e. that the client or
service is expected to handle, and potentially recover from, as
part of the application processing logic. For example, an <a href=
"#component-Interface">Interface</a> component that accepts a
credit card number may describe faults that indicate the credit
card number is invalid, has been reported stolen, or has expired.
The <a href="#component-Interface">Interface</a> component does not
describe general system faults such as network failures, out of
memory conditions, out of disk space conditions, invalid message
formats, etc., although these faults may be generated as part of
the message exchange. Such general system faults can reasonably be
expected to occur in any message exchange and explicitly describing
them in an <a href="#component-Interface">Interface</a> component
is therefore uninformative.</p>
<p>The properties of the <a name="component-InterfaceFault" id=
"component-InterfaceFault">Interface Fault</a> component are as
follows:</p>
<ul>
<li>
<p>{<a name="property-InterfaceFault.name" id=
"property-InterfaceFault.name">name</a>} REQUIRED. An
<em>xs:QName</em>.</p>
</li>
<li>
<p>{<a name="property-InterfaceFault.messagecontentmodel" id=
"property-InterfaceFault.messagecontentmodel">message content
model</a>} REQUIRED. <span id="InterfaceFault-1013" class=
"test-assertion-tr">An <em>xs:token</em> with one of the values
<em>#any</em>, <em>#none</em>, <em>#other</em>, or
<em>#element</em>.<sup><a href="#InterfaceFault-1013-summary"
title="Link to assertion InterfaceFault-1013 summary">†</a></sup></span>
A value of <em>#any</em> indicates that the fault content is any
single element. A value of <em>#none</em> indicates there is no
fault content. A value of <em>#other</em> indicates that the fault
content is described by some other extension property that
references a declaration in a non-XML extension type system. A
value of <em>#element</em> indicates that the fault consists of a
single element described by the global element declaration
referenced by the {<a href=
"#property-InterfaceFault.elementdeclaration">element
declaration</a>} property. This property is used only when the
fault is described using an XML-based data model.</p>
</li>
<li>
<p>{<a name="property-InterfaceFault.elementdeclaration" id=
"property-InterfaceFault.elementdeclaration">element
declaration</a>} OPTIONAL. A reference to an <a href=
"#component-ElementDeclaration">Element Declaration</a> component
in the {<a href="#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component. This element
represents the content or “payload” of the fault. <span id=
"InterfaceFault-1014" class="test-assertion-tr">When the {<a href=
"#property-InterfaceFault.messagecontentmodel">message content
model</a>} property has the value <em>#any</em> or <em>#none</em>
the {<a href="#property-InterfaceFault.elementdeclaration">element
declaration</a>} property MUST be empty.<sup><a href=
"#InterfaceFault-1014-summary" title=
"Link to assertion InterfaceFault-1014 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name="property-InterfaceFault.parent" id=
"property-InterfaceFault.parent">parent</a>} REQUIRED. The <a href=
"#component-Interface">Interface</a> component that contains this
component in its {<a href=
"#property-Interface.interfacefaults">interface faults</a>}
property.</p>
</li>
</ul>
<a name="zed-InterfaceFault" id="zed-InterfaceFault"></a><a name=
"zed-InterfaceFaultRI" id="zed-InterfaceFaultRI"></a>
<p>For each <a href="#component-InterfaceFault">Interface Fault</a>
component in the {<a href=
"#property-Interface.interfacefaults">interface faults</a>}
property of an <a href="#component-Interface">Interface</a>
component, the {<a href="#property-InterfaceFault.name">name</a>}
property must be unique. Note that this constraint is enforced by
the normative WSDL 2.0 XML schema.</p>
<p><a href="#component-InterfaceFault">Interface Fault</a>
components are uniquely identified by the QName of the enclosing
<a href="#component-Interface">Interface</a> component and QName of
the <a href="#component-InterfaceFault">Interface Fault</a>
component itself.</p>
<a name="zed-InterfaceFaultKey" id="zed-InterfaceFaultKey"></a>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>Despite having a {<a href=
"#property-InterfaceFault.name">name</a>} property, <a href=
"#component-InterfaceFault">Interface Fault</a> components cannot
be identified solely by their QName. Indeed, two <a href=
"#component-Interface">Interface</a> components whose {<a href=
"#property-Interface.name">name</a>} property value has the same
namespace name, but different local names, can contain <a href=
"#component-InterfaceFault">Interface Fault</a> components with the
same {<a href="#property-InterfaceFault.name">name</a>} property
value. Thus, the {<a href="#property-InterfaceFault.name">name</a>}
property of <a href="#component-InterfaceFault">Interface Fault</a>
component is not sufficient to form the unique identity of an
<a href="#component-InterfaceFault">Interface Fault</a> component.
A method for uniquely identifying components is defined in <a href=
"#frag-ids"><strong>A.2 Fragment Identifiers</strong></a>. See
<a href="#wsdl.interfaceFault"><strong>A.2.5 The Interface Fault
Component</strong></a> for the definition of the fragment
identifier for the <a href="#component-InterfaceFault">Interface
Fault</a> component.</p>
</div>
<p><span id="InterfaceFault-1015" class="test-assertion-tr">In
cases where, due to an interface extending one or more other
interfaces, two or more <a href=
"#component-InterfaceFault">Interface Fault</a> components have the
same value for their {<a href=
"#property-InterfaceFault.name">name</a>} property, then the
component models of those <a href=
"#component-InterfaceFault">Interface Fault</a> components MUST be
equivalent (see <a href="#compequiv"><strong>2.15 Equivalence of
Components</strong></a>). <sup><a href=
"#InterfaceFault-1015-summary" title=
"Link to assertion InterfaceFault-1015 summary">†</a></sup></span>
If the <a href="#component-InterfaceFault">Interface Fault</a>
components are equivalent then they are considered to collapse into
a single component. Within the same <a href=
"#component-Interface">Interface</a> component, if two <a href=
"#component-InterfaceFault">Interface Fault</a> components are not
equivalent then their {<a href=
"#property-InterfaceFault.name">name</a>} properties MUST NOT be
equal.</p>
<a name="zed-InterfaceFaultNameUnique" id=
"zed-InterfaceFaultNameUnique"></a>
<p>Note that, due to the above rules, if two interfaces that have
the same value for the namespace name of their {<a href=
"#property-Interface.name">name</a>} property also have one or more
faults that have the same value for their {<a href=
"#property-InterfaceFault.name">name</a>} property, then those two
interfaces cannot both form part of the derivation chain of a
derived interface unless those faults are the same fault.</p>
<p><span id="InterfaceFault-1016" class="test-assertion-tr">For the
above reason, it is considered good practice to ensure, where
necessary, that the local name of the {<a href=
"#property-InterfaceFault.name">name</a>} property of <a href=
"#component-InterfaceFault">Interface Fault</a> components within a
namespace SHOULD be unique, thus allowing such derivation to occur
without inadvertent error.<sup><a href=
"#InterfaceFault-1016-summary" title=
"Link to assertion InterfaceFault-1016 summary">†</a></sup></span></p>
<p>If a type system NOT based on the XML Infoset [<cite><a href=
"#XMLInfoSet">XML Information Set</a></cite>] is in use (as
considered in <a href="#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>) then additional properties would need to be
added to the <a href="#component-InterfaceFault">Interface
Fault</a> component (along with extension attributes to its XML
representation) to allow associating such message types with the
message reference.</p>
<a name="zed-InterfaceFaultCM" id="zed-InterfaceFaultCM"></a></div>
<div class="div3">
<h4><a name="InterfaceFault_XMLRep" id=
"InterfaceFault_XMLRep"></a>2.3.2 XML Representation of Interface
Fault Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;interface&gt;
&lt;<strong>fault</strong>
name="<em>xs:NCName</em>"
element="<em>union of xs:QName, xs:token</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>fault</strong>&gt;
&lt;/interface&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for an <a href=
"#component-InterfaceFault">Interface Fault</a> component is an
<em>element information item</em> with the following Infoset
properties:</p>
<ul>
<li>
<p>A [local name] of <code>fault</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>name</code> <em>attribute information item</em>
as described below in <a href=
"#Interfacefault_name_attribute"><strong>2.3.2.1 name attribute
information item with fault [owner element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>element</code> <em>attribute information
item</em> as described below in <a href=
"#Interface_element_attribute"><strong>2.3.2.2 element attribute
information item with fault [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em> s whose [namespace name] is NOT "
http://www.w3.org/ns/wsdl " .</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Interfacefault_name_attribute" id=
"Interfacefault_name_attribute"></a>2.3.2.1 <code>name</code>
<em>attribute information item</em> with <code>fault</code> [owner
element]</h5>
<p>The <code>name</code> <em>attribute information item</em>
identifies a given <code>fault</code> <em>element information
item</em> inside a given <code>interface</code> <em>element
information item</em>.</p>
<p>The <code>name</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>name</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>name</code> <em>attribute information
item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Interface_element_attribute" id=
"Interface_element_attribute"></a>2.3.2.2 <code>element</code>
<em>attribute information item</em> with <code>fault</code> [owner
element]</h5>
<p>The <code>element</code> <em>attribute information item</em>
refers, by QName, to an <a href=
"#component-ElementDeclaration">Element Declaration</a>
component.</p>
<p>The <code>element</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>element</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>element</code> <em>attribute information
item</em> is a union of <em>xs:QName</em> and <em>xs:token</em>
where the allowed token values are <em>#any</em>, <em>#none</em>,
or <em>#other</em>.</p>
</div>
</div>
<div class="div3">
<h4><a name="InterfaceFault_Mapping" id=
"InterfaceFault_Mapping"></a>2.3.3 Mapping Interface Fault's XML
Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>fault</code> <em>element information item</em> (see <a href=
"#InterfaceFault_XMLRep"><strong>2.3.2 XML Representation of
Interface Fault Component</strong></a>) to the properties of the
<a href="#component-InterfaceFault">Interface Fault</a> component
is as described in <a href="#tab_InterfaceFault_Mapping">Table
2-3</a>.</p>
<a name="tab_InterfaceFault_Mapping" id=
"tab_InterfaceFault_Mapping"></a>
<table border="1">
<caption>Table 2-3. Mapping from XML Representation to Interface
Fault Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFault.name">name</a>}</td>
<td rowspan="1" colspan="1">The QName whose local name is the
actual value of the <code>name</code> <em>attribute information
item</em>. and whose namespace name is the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the [parent] <code>description</code> <em>element information
item</em> of the [parent] <code>interface</code> <em>element
information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFault.messagecontentmodel">message content
model</a>}</td>
<td rowspan="1" colspan="1">If the <code>element</code>
<em>attribute information item</em> is present and its value is a
QName, then <em>#element</em>; otherwise the actual value of the
<code>element</code> <em>attribute information item</em>, if any;
otherwise <em>#other</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFault.elementdeclaration">element
declaration</a>}</td>
<td rowspan="1" colspan="1">If the <code>element</code>
<em>attribute information item</em> is present and its value is a
QName, then the <a href="#component-ElementDeclaration">Element
Declaration</a> component from the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component resolved to by
the value of the <code>element</code> <em>attribute information
item</em> (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>); otherwise empty. <span id=
"InterfaceFault-1017" class="test-assertion-tr">If the
<code>element</code> <em>attribute information item</em> has a
value, then it MUST resolve to an <a href=
"#component-ElementDeclaration">Element Declaration</a> component
from the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component.<sup><a href=
"#InterfaceFault-1017-summary" title=
"Link to assertion InterfaceFault-1017 summary">†</a></sup></span></td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFault.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Interface">Interface</a> component corresponding to the
<code>interface</code> <em>element information item</em> in
[parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="InterfaceOperation" id="InterfaceOperation"></a>2.4
Interface Operation</h3>
<div class="div3">
<h4><a name="InterfaceOperation_details" id=
"InterfaceOperation_details"></a>2.4.1 The Interface Operation
Component</h4>
<p>An <a href="#component-InterfaceOperation">Interface
Operation</a> component describes an operation that a given
interface supports. An operation is an interaction with the service
consisting of a set of (ordinary and fault) messages exchanged
between the service and the other parties involved in the
interaction. The sequencing and cardinality of the messages
involved in a particular interaction is governed by the <em>message
exchange pattern</em> used by the operation (see {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} property).</p>
<p>A message exchange pattern defines placeholders for messages,
the participants in the pattern (i.e., the sources and sinks of the
messages), and the cardinality and sequencing of messages exchanged
by the participants. The message placeholders are associated with
specific message types by the operation that uses the pattern by
means of message and fault references (see {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} and {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} properties). The service whose operation is
using the pattern becomes one of the participants of the pattern.
This specification does not define a machine understandable
language for defining message exchange patterns, nor does it define
any specific patterns. The companion specification, [<cite><a href=
"#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>] defines a set of such
patterns and defines identifying IRIs any of which MAY be used as
the value of the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} property.</p>
<p>The properties of the <a name="component-InterfaceOperation" id=
"component-InterfaceOperation">Interface Operation</a> component
are as follows:</p>
<ul>
<li>
<p>{<a name="property-InterfaceOperation.name" id=
"property-InterfaceOperation.name">name</a>} REQUIRED. An
<em>xs:QName</em>.</p>
</li>
<li>
<p>{<a name="property-InterfaceOperation.messageexchangepattern"
id="property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} REQUIRED. An <em>xs:anyURI</em> identifying
the message exchange pattern used by the operation. <span id=
"InterfaceOperation-1018" class="test-assertion-tr">This
<em>xs:anyURI</em> MUST be an absolute IRI (see [<cite><a href=
"#RFC3987">IETF RFC 3987</a></cite>]).<sup><a href=
"#InterfaceOperation-1018-summary" title=
"Link to assertion InterfaceOperation-1018 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name=
"property-InterfaceOperation.interfacemessagereferences" id=
"property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} OPTIONAL. A set of <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> components for the ordinary messages the operation
accepts or sends.</p>
</li>
<li>
<p>{<a name="property-InterfaceOperation.interfacefaultreferences"
id="property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} OPTIONAL. A set of <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
components for the fault messages the operation accepts or
sends.</p>
</li>
<li>
<p>{<a name="property-InterfaceOperation.style" id=
"property-InterfaceOperation.style">style</a>} OPTIONAL. A set of
<em>xs:anyURI</em>s identifying the rules that were used to
construct the {<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} properties of {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>}. (See <a href=
"#InterfaceOperationStyle"><strong>2.4.1.2 Operation
Style</strong></a>.) <span id="InterfaceOperation-1019" class=
"test-assertion-tr">These <em>xs:anyURI</em>s MUST be absolute IRIs
(see [<cite><a href="#RFC3986">IETF RFC
3986</a></cite>]).<sup><a href="#InterfaceOperation-1019-summary"
title=
"Link to assertion InterfaceOperation-1019 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name="property-InterfaceOperation.parent" id=
"property-InterfaceOperation.parent">parent</a>} REQUIRED. The
<a href="#component-Interface">Interface</a> component that
contains this component in its {<a href=
"#property-Interface.interfaceoperations">interface operations</a>}
property.</p>
</li>
</ul>
<a name="zed-InterfaceOperation" id=
"zed-InterfaceOperation"></a><a name="zed-InterfaceOperationRI" id=
"zed-InterfaceOperationRI"></a>
<p>For each <a href="#component-InterfaceOperation">Interface
Operation</a> component in the {<a href=
"#property-Interface.interfaceoperations">interface operations</a>}
property of an <a href="#component-Interface">Interface</a>
component, the {<a href=
"#property-InterfaceOperation.name">name</a>} property MUST be
unique. Note that this constraint is enforced by the normative WSDL
2.0 XML schema.</p>
<p><a href="#component-InterfaceOperation">Interface Operation</a>
components are uniquely identified by the QName of the enclosing
<a href="#component-Interface">Interface</a> component and QName of
the <a href="#component-InterfaceOperation">Interface Operation</a>
component itself.</p>
<a name="zed-InterfaceOperationKey" id=
"zed-InterfaceOperationKey"></a>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>Despite having a {<a href=
"#property-InterfaceOperation.name">name</a>} property, <a href=
"#component-InterfaceOperation">Interface Operation</a> components
cannot be identified solely by their QName. Indeed, two <a href=
"#component-Interface">Interface</a> components whose {<a href=
"#property-Interface.name">name</a>} property value has the same
namespace name, but different local names, can contain <a href=
"#component-InterfaceOperation">Interface Operation</a> components
with the same {<a href=
"#property-InterfaceOperation.name">name</a>} property value. Thus,
the {<a href="#property-InterfaceOperation.name">name</a>} property
of <a href="#component-InterfaceOperation">Interface Operation</a>
components is not sufficient to form the unique identity of an
<a href="#component-InterfaceOperation">Interface Operation</a>
component. A method for uniquely identifying components is defined
in <a href="#frag-ids"><strong>A.2 Fragment
Identifiers</strong></a> . See <a href=
"#wsdl.interfaceOperation"><strong>A.2.6 The Interface Operation
Component</strong></a> for the definition of the fragment
identifier for the <a href=
"#component-InterfaceOperation">Interface Operation</a>
component.</p>
</div>
<p><span id="InterfaceOperation-1020" class="test-assertion-tr">In
cases where, due to an interface extending one or more other
interfaces, two or more <a href=
"#component-InterfaceOperation">Interface Operation</a> components
have the same value for their {<a href=
"#property-InterfaceOperation.name">name</a>} property, then the
component models of those Interface Operation components MUST be
equivalent (see <a href="#compequiv"><strong>2.15 Equivalence of
Components</strong></a>).<sup><a href=
"#InterfaceOperation-1020-summary" title=
"Link to assertion InterfaceOperation-1020 summary">†</a></sup></span>
If the <a href="#component-InterfaceOperation">Interface
Operation</a> components are equivalent then they are considered to
collapse into a single component. Within the same <a href=
"#component-Interface">Interface</a> component, if two <a href=
"#component-InterfaceOperation">Interface Operation</a> components
are not equivalent then their {<a href=
"#property-InterfaceOperation.name">name</a>} properties MUST NOT
be equal.</p>
<a name="zed-InterfaceOperationNameUnique" id=
"zed-InterfaceOperationNameUnique"></a>
<p>Note that, due to the above rules, if two interfaces that have
the same value for the namespace name of their {<a href=
"#property-Interface.name">name</a>} property also have one or more
operations that have the same value for their {<a href=
"#property-InterfaceOperation.name">name</a>} property, then those
two interfaces cannot both form part of the derivation chain of a
derived interface unless those operations are the same
operation.</p>
<p><span id="InterfaceOperation-1021" class="test-assertion-tr">For
the above reason, it is considered good practice to ensure, where
necessary, that the {<a href=
"#property-InterfaceOperation.name">name</a>} property of <a href=
"#component-InterfaceOperation">Interface Operation</a> components
within a namespace SHOULD be unique, thus allowing such derivation
to occur without inadvertent error.<sup><a href=
"#InterfaceOperation-1021-summary" title=
"Link to assertion InterfaceOperation-1021 summary">†</a></sup></span></p>
<p>More than one <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} property of an <a href=
"#component-InterfaceOperation">Interface Operation</a> component
may refer to the same message label. In that case, the listed fault
types define alternative fault messages. This allows one to
indicate that there is more than one type of fault that is related
to that message.</p>
<a name="zed-InterfaceOperationParent" id=
"zed-InterfaceOperationParent"></a><a name=
"zed-InterfaceOperationCM" id="zed-InterfaceOperationCM"></a>
<div class="div4">
<h5><a name="MessageExchangePattern" id=
"MessageExchangePattern"></a>2.4.1.1 Message Exchange Pattern</h5>
<p>This section describes some aspects of message exchange patterns
in more detail. Refer to the <em>Web Services Description Language
(WSDL) Version 2.0 Part 2: Adjuncts</em> specification
[<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>] for a
complete discussion of the semantics of message exchange patterns
in general, as well as the definitions of the message exchange
patterns that are predefined by WSDL 2.0.</p>
<p>A <em>placeholder message</em> is a template for an actual
message as described by an <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component. Although a placeholder message is not
itself a component, it is useful to regard it as having both a
{<a href="#property-InterfaceMessageReference.messagelabel">message
label</a>} and a {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
property which define the values of the actual <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component that corresponds to it. A placeholder
message is also associated with some node that exchanges the
message with the service. Furthermore, a placeholder message may be
designated as optional in the exchange.</p>
<a name="zed-Node" id="zed-Node"></a><a name=
"zed-PlaceholderMessage" id="zed-PlaceholderMessage"></a>
<p>A <em>fault propagation ruleset</em> specifies the relation
between the <a href="#component-InterfaceFaultReference">Interface
Fault Reference</a> and <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> components of an <a href=
"#component-InterfaceOperation">Interface Operation</a> component.
The <em>Web Services Description Language (WSDL) Version 2.0 Part
2: Adjuncts</em> specification [<cite><a href="#WSDL-PART2">WSDL
2.0 Adjuncts</a></cite>] defines three fault propagation rulesets
which we will refer to as <em>fault-replaces-message</em>,
<em>message-triggers-fault</em>, and <em>no-faults</em>. These
three fault propagation rulesets are used by the predefined message
exchange patterns defined in [<cite><a href="#WSDL-PART2">WSDL 2.0
Adjuncts</a></cite>]. Other message exchange patterns can define
additional fault propagation rulesets.</p>
<a name="zed-FaultPropagationRuleset" id=
"zed-FaultPropagationRuleset"></a>
<p>A <em>message exchange pattern</em> is a template for the
exchange of one or more messages, and their associated faults,
between the service and one or more other nodes as described by an
<a href="#component-InterfaceOperation">Interface Operation</a>
component. The service and the other nodes are referred to as the
<em>participants</em> in the exchange. More specifically, a message
exchange pattern consists of a sequence of one or more placeholder
messages. Each placeholder message within this sequence is uniquely
identified by its {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property. <span id="MEP-1022" class=
"test-assertion-tr">A message exchange pattern is itself uniquely
identified by an absolute IRI, which is used as the value of the
{<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} property of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component,
and which specifies the fault propagation ruleset that its faults
obey.<sup><a href="#MEP-1022-summary" title=
"Link to assertion MEP-1022 summary">†</a></sup></span></p>
<a name="zed-MessageExchangePattern" id=
"zed-MessageExchangePattern"></a></div>
<div class="div4">
<h5><a name="InterfaceOperationStyle" id=
"InterfaceOperationStyle"></a>2.4.1.2 Operation Style</h5>
<p>An operation style specifies additional information about an
operation. For example, an operation style may define structural
constraints on the element declarations of the interface message
reference or interface fault components used by the operation. This
additional information in no way affects the messages and faults
exchanged with the service and it can therefore be safely ignored
in that context. However, the additional information can be used
for other purposes, for example, improved code generation. The
{<a href="#property-InterfaceOperation.style">style</a>} property
of the <a href="#component-InterfaceOperation">Interface
Operation</a> component contains a set of zero or more IRIs that
identify operation styles. <span id="InterfaceOperation-1023"
class="test-assertion-tr">An <a href=
"#component-InterfaceOperation">Interface Operation</a> component
MUST satisfy the specification defined by each operation style
identified by its {<a href=
"#property-InterfaceOperation.style">style</a>} property.
<sup><a href="#InterfaceOperation-1023-summary" title=
"Link to assertion InterfaceOperation-1023 summary">†</a></sup></span>
If no <a href="#component-InterfaceOperation">Interface
Operation</a> component can simultaneously satisfy all of the
styles, the document is invalid.</p>
<p>If the {<a href="#property-InterfaceOperation.style">style</a>}
property of an <a href="#component-InterfaceOperation">Interface
Operation</a> component does have a value, then that value (a set
of IRIs) specifies the rules that were used to define the element
declarations (or other properties that define the message and fault
contents; see <a href="#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>) of the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> or <a href="#component-InterfaceFault">Interface
Fault</a> components used by the operation. Although a given
operation style has the ability to constrain <em>all</em> input and
output messages and faults of an operation, it MAY choose to
constrain any combination thereof, e.g. only the messages, or only
the inputs.</p>
<p>Please refer to the <em>Web Services Description Language (WSDL)
Version 2.0 Part 2: Adjuncts</em> specification [<cite><a href=
"#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>] for particular
operation style definitions.</p>
</div>
</div>
<div class="div3">
<h4><a name="InterfaceOperation_XMLRep" id=
"InterfaceOperation_XMLRep"></a>2.4.2 XML Representation of
Interface Operation Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;interface&gt;
&lt;<strong>operation</strong>
name="<em>xs:NCName</em>"
pattern="<em>xs:anyURI</em>"?
style="<em>list of xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
[ &lt;input /&gt; | &lt;output /&gt; | &lt;infault /&gt; | &lt;outfault /&gt; ]*
&lt;/<strong>operation</strong>&gt;
&lt;/interface&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for an <a href=
"#component-InterfaceOperation">Interface Operation</a> component
is an <em>element information item</em> with the following Infoset
properties:</p>
<ul>
<li>
<p>A [local name] of <code>operation</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>Two or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>name</code> <em>attribute information item</em>
as described below in <a href=
"#Interfaceoperation_name_attribute"><strong>2.4.2.1 name attribute
information item with operation [owner element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>pattern</code> <em>attribute information
item</em> as described below in <a href=
"#Interfaceoperation_pattern_attribute"><strong>2.4.2.2 pattern
attribute information item with operation [owner
element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>style</code> <em>attribute information
item</em> as described below in <a href=
"#InterfaceOperation_style_attribute"><strong>2.4.2.3 style
attribute information item with operation [owner
element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>One or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>One or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>One or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>Zero or more <code>input</code> <em>element information
item</em>s (see <a href=
"#InterfaceMessageReference_XMLRep"><strong>2.5.2 XML
Representation of Interface Message Reference
Component</strong></a>).</p>
</li>
<li>
<p>Zero or more <code>output</code> <em>element information
item</em>s (see <a href=
"#InterfaceMessageReference_XMLRep"><strong>2.5.2 XML
Representation of Interface Message Reference
Component</strong></a>).</p>
</li>
<li>
<p>Zero or more <code>infault</code> <em>element information
item</em>s (see <a href=
"#InterfaceFaultReference_XMLRep"><strong>2.6.2 XML Representation
of Interface Fault Reference</strong></a>).</p>
</li>
<li>
<p>Zero or more <code>outfault</code> <em>element information
item</em>s (see <a href=
"#InterfaceFaultReference_XMLRep"><strong>2.6.2 XML Representation
of Interface Fault Reference</strong></a>).</p>
</li>
</ul>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Interfaceoperation_name_attribute" id=
"Interfaceoperation_name_attribute"></a>2.4.2.1 <code>name</code>
<em>attribute information item</em> with <code>operation</code>
[owner element]</h5>
<p>The <code>name</code> <em>attribute information item</em>
identifies a given <code>operation</code> <em>element information
item</em> inside a given <code>interface</code> <em>element
information item</em>.</p>
<p>The <code>name</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>name</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>name</code> <em>attribute information
item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Interfaceoperation_pattern_attribute" id=
"Interfaceoperation_pattern_attribute"></a>2.4.2.2
<code>pattern</code> <em>attribute information item</em> with
<code>operation</code> [owner element]</h5>
<p>The <code>pattern</code> <em>attribute information item</em>
identifies the message exchange pattern a given operation uses.</p>
<p>The <code>pattern</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>pattern</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>pattern</code> <em>attribute information
item</em> is <em>xs:anyURI</em>. Note that its value must be an
absolute IRI (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]).</p>
</div>
<div class="div4">
<h5><a name="InterfaceOperation_style_attribute" id=
"InterfaceOperation_style_attribute"></a>2.4.2.3 <code>style</code>
<em>attribute information item</em> with <code>operation</code>
[owner element]</h5>
<p>The <code>style</code> <em>attribute information item</em>
indicates the rules that were used to construct the {<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} properties of the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> components which are members of the {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} property of the [owner element]
operation.</p>
<p>The <code>style</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>style</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>style</code> <em>attribute information
item</em> is <em>list of xs:anyURI</em>. Note that its value must
be an absolute IRI (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]).</p>
</div>
</div>
<div class="div3">
<h4><a name="InterfaceOperation_Mapping" id=
"InterfaceOperation_Mapping"></a>2.4.3 Mapping Interface
Operation's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>operation</code> <em>element information item</em> (see
<a href="#InterfaceOperation_XMLRep"><strong>2.4.2 XML
Representation of Interface Operation Component</strong></a>) to
the properties of the Interface Operation component (see <a href=
"#InterfaceOperation_details"><strong>2.4.1 The Interface Operation
Component</strong></a>) is as described in <a href=
"#tab_InterfaceOperation_Mapping">Table 2-4</a>.</p>
<a name="tab_InterfaceOperation_Mapping" id=
"tab_InterfaceOperation_Mapping"></a>
<table border="1">
<caption>Table 2-4. Mapping from XML Representation to Interface
Operation Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.name">name</a>}</td>
<td rowspan="1" colspan="1">The QName whose local name is the
actual value of the <code>name</code> <em>attribute information
item</em> and whose namespace name is the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the [parent] <code>description</code> <em>element information
item</em> of the [parent] <code>interface</code> <em>element
information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>}</td>
<td rowspan="1" colspan="1">The actual value of the
<code>pattern</code> <em>attribute information item</em>; otherwise
'http://www.w3.org/ns/wsdl/in-out'.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>}</td>
<td rowspan="1" colspan="1">The set of message references
corresponding to the <code>input</code> and <code>output</code>
<em>element information item</em>s in [children], if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>}</td>
<td rowspan="1" colspan="1">The set of interface fault references
corresponding to the <code>infault</code> and <code>outfault</code>
<em>element information item</em>s in [children], if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.style">style</a>}</td>
<td rowspan="1" colspan="1">The set containing the IRIs in the
actual value of the <code>style</code> <em>attribute information
item</em>, if present; otherwise the set containing the IRIs in the
actual value of the <code>styleDefault</code> <em>attribute
information item</em> of the [parent] <code>interface</code>
<em>element information item</em>, if present; otherwise
empty.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Interface">Interface</a> component corresponding to the
<code>interface</code> <em>element information item</em> in
[parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="InterfaceMessageReference" id=
"InterfaceMessageReference"></a>2.5 Interface Message
Reference</h3>
<div class="div3">
<h4><a name="InterfaceMessageReference_details" id=
"InterfaceMessageReference_details"></a>2.5.1 The Interface Message
Reference Component</h4>
<p>An <a href="#component-InterfaceMessageReference">Interface
Message Reference</a> component defines the content, or
<em>payload</em>, of a message exchanged in an operation. By
default, the message content is defined by an XML-based type system
such as XML Schema. Other type systems may be used via the WSDL 2.0
type system extension mechanism.</p>
<p>A message exchange pattern defines a set of placeholder messages
that participate in the pattern and assigns them unique message
labels within the pattern (e.g. 'In', 'Out'). The purpose of an
<a href="#component-InterfaceMessageReference">Interface Message
Reference</a> component is to associate an actual message element
(XML element declaration or some other declaration (see <a href=
"#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>)) with a message in the pattern, as
identified by its message label. Later, when the message exchange
pattern is instantiated, messages corresponding to that particular
label will follow the element assignment made by the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component.</p>
<p>The properties of the <a name=
"component-InterfaceMessageReference" id=
"component-InterfaceMessageReference">Interface Message
Reference</a> component are as follows:</p>
<ul>
<li>
<p>{<a name="property-InterfaceMessageReference.messagelabel" id=
"property-InterfaceMessageReference.messagelabel">message
label</a>} REQUIRED. An <em>xs:NCName</em>. This property
identifies the role this message plays in the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
this message is contained within. <span id="MessageLabel-1024"
class="test-assertion-tr">The value of this property MUST match the
name of a placeholder message defined by the message exchange
pattern.<sup><a href="#MessageLabel-1024-summary" title=
"Link to assertion MessageLabel-1024 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name="property-InterfaceMessageReference.direction" id=
"property-InterfaceMessageReference.direction">direction</a>}
REQUIRED. <span id="InterfaceMessageReference-1025" class=
"test-assertion-tr">An <em>xs:token</em> with one of the values
<em>in</em> or <em>out</em>, indicating whether the message is
coming to the service or going from the service,
respectively.<sup><a href="#InterfaceMessageReference-1025-summary"
title=
"Link to assertion InterfaceMessageReference-1025 summary">†</a></sup></span>&#160;
<span id="InterfaceMessageReference-1026" class=
"test-assertion-tr">The direction MUST be the same as the direction
of the message identified by the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property in the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
this is contained within.<sup><a href=
"#InterfaceMessageReference-1026-summary" title=
"Link to assertion InterfaceMessageReference-1026 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name=
"property-InterfaceMessageReference.messagecontentmodel" id=
"property-InterfaceMessageReference.messagecontentmodel">message
content model</a>} REQUIRED. <span id=
"InterfaceMessageReference-1027" class="test-assertion-tr">An
<em>xs:token</em> with one of the values <em>#any</em>,
<em>#none</em>, <em>#other</em>, or <em>#element</em>.<sup><a href=
"#InterfaceMessageReference-1027-summary" title=
"Link to assertion InterfaceMessageReference-1027 summary">†</a></sup></span>
A value of <em>#any</em> indicates that the message content is any
single element. A value of <em>#none</em> indicates there is no
message content. A value of <em>#other</em> indicates that the
message content is described by some other extension property that
references a declaration in a non-XML extension type system. A
value of <em>#element</em> indicates that the message consists of a
single element described by the global element declaration
referenced by the {<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} property. This property is used only when the
message is described using an XML-based data model.</p>
</li>
<li>
<p>{<a name="property-InterfaceMessageReference.elementdeclaration"
id="property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} OPTIONAL. A reference to an <a href=
"#component-ElementDeclaration">Element Declaration</a> component
in the {<a href="#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component. This element
represents the content or “payload” of the message. <span id=
"InterfaceMessageReference-1028" class="test-assertion-tr">When the
{<a href=
"#property-InterfaceMessageReference.messagecontentmodel">message
content model</a>} property has the value <em>#any</em> or
<em>#none</em>, the {<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} property MUST be empty.<sup><a href=
"#InterfaceMessageReference-1028-summary" title=
"Link to assertion InterfaceMessageReference-1028 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name="property-InterfaceMessageReference.parent" id=
"property-InterfaceMessageReference.parent">parent</a>} REQUIRED.
The <a href="#component-InterfaceOperation">Interface Operation</a>
component that contains this component in its {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} property.</p>
</li>
</ul>
<a name="zed-Direction" id="zed-Direction"></a><a name=
"zed-MessageContentModel" id="zed-MessageContentModel"></a><a name=
"zed-InterfaceMessageReference" id=
"zed-InterfaceMessageReference"></a><a name=
"zed-InterfaceMessageReferenceRI" id=
"zed-InterfaceMessageReferenceRI"></a>
<p><span id="InterfaceMessageReference-1029" class=
"test-assertion-tr">For each <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component in the {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} property of an <a href=
"#component-InterfaceOperation">Interface Operation</a> component,
its {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property MUST be unique.<sup><a href=
"#InterfaceMessageReference-1029-summary" title=
"Link to assertion InterfaceMessageReference-1029 summary">†</a></sup></span></p>
<a name="zed-InterfaceMessageReferenceKey" id=
"zed-InterfaceMessageReferenceKey"></a>
<p>If a type system not based upon the XML Infoset is in use (as
considered in <a href="#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>), then additional properties would need to
be added to the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component (along with extension attributes to its XML
representation) to allow associating such message types with the
message reference.</p>
<a name="zed-InterfaceMessageReferenceCM" id=
"zed-InterfaceMessageReferenceCM"></a></div>
<div class="div3">
<h4><a name="InterfaceMessageReference_XMLRep" id=
"InterfaceMessageReference_XMLRep"></a>2.5.2 XML Representation of
Interface Message Reference Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;interface&gt;
&lt;operation&gt;
&lt;<strong>input</strong>
messageLabel="<em>xs:NCName</em>"?
element="<em>union of xs:QName, xs:token</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>input</strong>&gt;
&lt;<strong>output</strong>
messageLabel="<em>xs:NCName</em>"?
element="<em>union of xs:QName, xs:token</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>output</strong>&gt;
&lt;/operation&gt;
&lt;/interface&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for an <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component is an <em>element information item</em>
with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>input</code> or <code>output</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>Zero or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>An OPTIONAL <code>messageLabel</code> <em>attribute information
item</em> as described below in <a href=
"#InterfaceMessageReference_messageReference_attribute"><strong>2.5.2.1
messageLabel attribute information item with input or output [owner
element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>element</code> <em>attribute information
item</em> as described below in <a href=
"#InterfaceMessageReference_element_attribute"><strong>2.5.2.2
element attribute information item with input or output [owner
element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="InterfaceMessageReference_messageReference_attribute"
id=
"InterfaceMessageReference_messageReference_attribute"></a>2.5.2.1
<code>messageLabel</code> <em>attribute information item</em> with
<code>input</code> or <code>output</code> [owner element]</h5>
<p>The <code>messageLabel</code> <em>attribute information
item</em> identifies the role of this message in the message
exchange pattern of the given <code>operation</code> <em>element
information item</em>.</p>
<p>The <code>messageLabel</code> <em>attribute information
item</em> has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>messageLabel</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>messageLabel</code> <em>attribute
information item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="InterfaceMessageReference_element_attribute" id=
"InterfaceMessageReference_element_attribute"></a>2.5.2.2
<code>element</code> <em>attribute information item</em> with
<code>input</code> or <code>output</code> [owner element]</h5>
<p>The <code>element</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>element</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>element</code> <em>attribute information
item</em> is a union of <em>xs:QName</em> and <em>xs:token</em>
where the allowed token values are <em>#any</em>, <em>#none</em>,
or <em>#other</em>.</p>
</div>
</div>
<div class="div3">
<h4><a name="InterfaceMessageReference_Mapping" id=
"InterfaceMessageReference_Mapping"></a>2.5.3 Mapping Interface
Message Reference's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the interface message
reference <em>element information item</em> (see <a href=
"#InterfaceMessageReference_XMLRep"><strong>2.5.2 XML
Representation of Interface Message Reference
Component</strong></a>) to the properties of the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component (see <a href=
"#InterfaceMessageReference_details"><strong>2.5.1 The Interface
Message Reference Component</strong></a>) is as described in
<a href="#tab_InterfaceMessageReference_Mapping">Table 2-5</a> and
uses the definitions below.</p>
<p>Define the <em>message exchange pattern</em> of the <em>element
information item</em> to be the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the parent <a href=
"#component-InterfaceOperation">Interface Operation</a>
component.</p>
<p>Define the <em>message direction</em> of the <em>element
information item</em> to be <em>in</em> if its local name is
<code>input</code>, and <em>out</em> if its local name is
<code>output</code>.</p>
<p>Note that the <code>messageLabel</code> <em>attribute
information item</em> of an interface message reference <em>element
information item</em> must be present if the message exchange
pattern has more than one placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</p>
<p><span id="MessageLabel-1030" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of an
interface message reference <em>element information item</em> is
present, then its actual value MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1030-summary" title=
"Link to assertion MessageLabel-1030 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1031" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of an
interface message reference <em>element information item</em> is
absent then there MUST be a unique placeholder message with
{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1031-summary" title=
"Link to assertion MessageLabel-1031 summary">†</a></sup></span></p>
<p>Define the <em>effective message label</em> of an interface
message reference <em>element information item</em> to be either
the actual value of the <code>messageLabel</code> <em>attribute
information item</em> if it is present, or the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of the unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction if the <em>attribute information
item</em> is absent.</p>
<p><span id="MessageLabel-1032" class="test-assertion-tr">If the
local name is <code>input</code> then the message exchange pattern
MUST have at least one placeholder message with direction
"In".<sup><a href="#MessageLabel-1032-summary" title=
"Link to assertion MessageLabel-1032 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1033" class="test-assertion-tr">If the
local name is <code>output</code> then the message exchange pattern
MUST have at least one placeholder message with direction
"Out".<sup><a href="#MessageLabel-1033-summary" title=
"Link to assertion MessageLabel-1033 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1034" class="test-assertion-tr">If the
local name is <code>infault</code> then the message exchange
pattern MUST support at least one fault in the "In"
direction.<sup><a href="#MessageLabel-1034-summary" title=
"Link to assertion MessageLabel-1034 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1035" class="test-assertion-tr">If the
local name is <code>outfault</code> then the message exchange
pattern MUST support at least one fault in the "Out"
direction.<sup><a href="#MessageLabel-1035-summary" title=
"Link to assertion MessageLabel-1035 summary">†</a></sup></span></p>
<a name="tab_InterfaceMessageReference_Mapping" id=
"tab_InterfaceMessageReference_Mapping"></a>
<table border="1">
<caption>Table 2-5. Mapping from XML Representation to Interface
Message Reference Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>}</td>
<td rowspan="1" colspan="1">The effective message label.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}</td>
<td rowspan="1" colspan="1">The message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceMessageReference.messagecontentmodel">message
content model</a>}</td>
<td rowspan="1" colspan="1">If the <code>element</code>
<em>attribute information item</em> is present and its value is a
QName, then <em>#element</em>; otherwise the actual value of the
<code>element</code> <em>attribute information item</em>, if any;
otherwise <em>#other</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>}</td>
<td rowspan="1" colspan="1">If the <code>element</code>
<em>attribute information item</em> is present and its value is a
QName, then the <a href="#component-ElementDeclaration">Element
Declaration</a> component from the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component resolved to by
the value of the <code>element</code> <em>attribute information
item</em> (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>); otherwise empty. <span id=
"InterfaceMessageReference-1036" class="test-assertion-tr">If the
<code>element</code> <em>attribute information item</em> has a
value, then it MUST resolve to an <a href=
"#component-ElementDeclaration">Element Declaration</a> component
from the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component.<sup><a href=
"#InterfaceMessageReference-1036-summary" title=
"Link to assertion InterfaceMessageReference-1036 summary">†</a></sup></span></td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceMessageReference.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceOperation">Interface Operation</a> component
corresponding to the <code>interface</code> <em>element information
item</em> in [parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="InterfaceFaultReference" id=
"InterfaceFaultReference"></a>2.6 Interface Fault Reference</h3>
<div class="div3">
<h4><a name="InterfaceFaultReference_details" id=
"InterfaceFaultReference_details"></a>2.6.1 The Interface Fault
Reference Component</h4>
<p>An <a href="#component-InterfaceFaultReference">Interface Fault
Reference</a> component associates a defined type, specified by an
<a href="#component-InterfaceFault">Interface Fault</a> component,
to a fault message exchanged in an operation.</p>
<p>A message exchange pattern defines a set of placeholder messages
that participate in the pattern and assigns them unique message
labels within the pattern (e.g. 'In', 'Out'). The purpose of an
<a href="#component-InterfaceFaultReference">Interface Fault
Reference</a> component is to associate an actual message type (XML
element declaration or some other declaration (see <a href=
"#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>) for message content, as specified by an
<a href="#component-InterfaceFault">Interface Fault</a> component)
with a fault message occurring in the pattern. In order to identify
the fault message it describes, the <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component uses the message label of the message the fault is
associated with, as a key.</p>
<p>As indicated earlier, the companion specification
[<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>] defines
several <em>fault propagation rulesets</em> that a given message
exchange pattern may use. For the ruleset
<em>fault-replaces-message</em>, the message that the fault relates
to identifies the message <em>in place of which</em> the declared
fault message will occur. Thus, the fault message will travel in
the <em>same</em> direction as the message it replaces in the
pattern. For the ruleset <em>message-triggers-fault</em>, the
message that the fault relates to identifies the message <em>after
which</em> the indicated fault may occur, in the opposite direction
of the referred to message. That is, the fault message will travel
in the <em>opposite</em> direction of the message it comes after in
the message exchange pattern.</p>
<p>The properties of the <a name=
"component-InterfaceFaultReference" id=
"component-InterfaceFaultReference">Interface Fault Reference</a>
component are as follows:</p>
<ul>
<li>
<p>{<a name="property-InterfaceFaultReference.interfacefault" id=
"property-InterfaceFaultReference.interfacefault">interface
fault</a>} REQUIRED. An <a href=
"#component-InterfaceFault">Interface Fault</a> component in the
{<a href="#property-Interface.interfacefaults">interface
faults</a>} property of the [parent] <a href=
"#component-InterfaceOperation">Interface Operation</a> component's
[parent] <a href="#component-Interface">Interface</a> component, or
an <a href="#component-Interface">Interface</a> component that it
directly or indirectly extends. Identifying the <a href=
"#component-InterfaceFault">Interface Fault</a> component therefore
indirectly defines the actual content or payload of the fault
message.</p>
</li>
<li>
<p>{<a name="property-InterfaceFaultReference.messagelabel" id=
"property-InterfaceFaultReference.messagelabel">message label</a>}
REQUIRED. An <em>xs:NCName</em>. This property identifies the
message this fault relates to among those defined in the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} property of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
it is contained within. <span id="InterfaceFaultReference-1037"
class="test-assertion-tr">The value of this property MUST match the
name of a placeholder message defined by the message exchange
pattern.<sup><a href="#InterfaceFaultReference-1037-summary" title=
"Link to assertion InterfaceFaultReference-1037 summary">†</a></sup></span></p>
</li>
<li>
<p>{<a name="property-InterfaceFaultReference.direction" id=
"property-InterfaceFaultReference.direction">direction</a>}
REQUIRED. A <em>xs:token</em> with one of the values <em>in</em> or
<em>out</em>, indicating whether the fault is coming to the service
or going from the service, respectively. <span id=
"InterfaceFaultReference-1038" class="test-assertion-tr">The
direction MUST be consistent with the direction implied by the
fault propagation ruleset used in the message exchange pattern of
the operation.<sup><a href="#InterfaceFaultReference-1038-summary"
title=
"Link to assertion InterfaceFaultReference-1038 summary">†</a></sup></span>
For example, if the ruleset <em>fault-replaces-message</em> is
used, then a fault that refers to an outgoing message would have a
{<a href=
"#property-InterfaceFaultReference.direction">direction</a>}
property value of <em>out</em>. On the other hand, if the ruleset
<em>message-triggers-fault</em> is used, then a fault that refers
to an outgoing message would have a {<a href=
"#property-InterfaceFaultReference.direction">direction</a>}
property value of <em>in</em> as the fault travels in the opposite
direction of the message.</p>
</li>
<li>
<p>{<a name="property-InterfaceFaultReference.parent" id=
"property-InterfaceFaultReference.parent">parent</a>} REQUIRED. The
<a href="#component-InterfaceOperation">Interface Operation</a>
component that contains this component in its {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} property.</p>
</li>
</ul>
<a name="zed-InterfaceFaultReference" id=
"zed-InterfaceFaultReference"></a><a name=
"zed-InterfaceFaultReferenceRI" id=
"zed-InterfaceFaultReferenceRI"></a>
<p><span id="InterfaceFaultReference-1039" class=
"test-assertion-tr">For each <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} property of an <a href=
"#component-InterfaceOperation">Interface Operation</a> component,
the combination of its {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} and {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
properties MUST be unique.<sup><a href=
"#InterfaceFaultReference-1039-summary" title=
"Link to assertion InterfaceFaultReference-1039 summary">†</a></sup></span></p>
<a name="zed-InterfaceFaultReferenceKey" id=
"zed-InterfaceFaultReferenceKey"></a><a name=
"zed-InterfaceFaultReferenceConsistent" id=
"zed-InterfaceFaultReferenceConsistent"></a><a name=
"zed-InterfaceFaultReferenceCM" id=
"zed-InterfaceFaultReferenceCM"></a></div>
<div class="div3">
<h4><a name="InterfaceFaultReference_XMLRep" id=
"InterfaceFaultReference_XMLRep"></a>2.6.2 XML Representation of
Interface Fault Reference</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;interface&gt;
&lt;operation&gt;
&lt;<strong>infault</strong>
ref="<em>xs:QName</em>"
messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>infault</strong>&gt;*
&lt;<strong>outfault</strong>
ref="<em>xs:QName</em>"
messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>outfault</strong>&gt;*
&lt;/operation&gt;
&lt;/interface&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for an <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component is an <em>element information item</em> with the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>infault</code> or
<code>outfault</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>ref</code> <em>attribute information item</em>
as described below in <a href=
"#InterfaceFaultReference_ref_attribute"><strong>2.6.2.1 ref
attribute information item with infault, or outfault [owner
element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>messageLabel</code> <em>attribute information
item</em> as described below in <a href=
"#InterfaceFaultReference_messageReference_attribute"><strong>2.6.2.2
messageLabel attribute information item with infault, or outfault
[owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="InterfaceFaultReference_ref_attribute" id=
"InterfaceFaultReference_ref_attribute"></a>2.6.2.1
<code>ref</code> <em>attribute information item</em> with
<code>infault</code>, or <code>outfault</code> [owner element]</h5>
<p>The <code>ref</code> <em>attribute information item</em> refers
to a fault component.</p>
<p>The <code>ref</code> <em>attribute information item</em> has the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>ref</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>ref</code> <em>attribute information
item</em> is <em>xs:QName</em>.</p>
</div>
<div class="div4">
<h5><a name="InterfaceFaultReference_messageReference_attribute"
id="InterfaceFaultReference_messageReference_attribute"></a>2.6.2.2
<code>messageLabel</code> <em>attribute information item</em> with
<code>infault</code>, or <code>outfault</code> [owner element]</h5>
<p>The <code>messageLabel</code> <em>attribute information
item</em> identifies the message in the message exchange pattern of
the given <code>operation</code> <em>element information item</em>
that is associated with this fault.</p>
<p>The <code>messageLabel</code> <em>attribute information
item</em> has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>messageLabel</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>messageLabel</code> <em>attribute
information item</em> is <em>xs:NCName</em>.</p>
<p><span id="InterfaceFaultReference-1040" class=
"test-assertion-tr">The <code>messageLabel</code> <em>attribute
information item</em> MUST be present in the XML representation of
an <a href="#component-InterfaceFaultReference">Interface Fault
Reference</a> component with a given {<a href=
"#property-InterfaceFaultReference.direction">direction</a>}, if
the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the parent <a href=
"#component-InterfaceOperation">Interface Operation</a> component
has more than one fault with that direction.<sup><a href=
"#InterfaceFaultReference-1040-summary" title=
"Link to assertion InterfaceFaultReference-1040 summary">†</a></sup></span>
Recall that the <em>fault propagation ruleset</em> of the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} specifies the relation between faults and
messages. For example, the <em>fault-replaces-message</em> ruleset
specifies that the faults have the same direction as the messages,
while the <em>message-triggers-fault</em> ruleset specifies that
the faults have the opposite direction from the messages.</p>
</div>
</div>
<div class="div3">
<h4><a name="InterfaceFaultReference_Mapping" id=
"InterfaceFaultReference_Mapping"></a>2.6.3 Mapping Interface Fault
Reference's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the message reference
<em>element information item</em> (see <a href=
"#InterfaceFaultReference_XMLRep"><strong>2.6.2 XML Representation
of Interface Fault Reference</strong></a>) to the properties of the
Interface Fault Reference component (see <a href=
"#InterfaceFaultReference_details"><strong>2.6.1 The Interface
Fault Reference Component</strong></a>) is as described in <a href=
"#tab_InterfaceFaultReference_Mapping">Table 2-6</a> and uses the
definitions below.</p>
<p>Define the <em>message exchange pattern</em> of the <em>element
information item</em> to be the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the parent <a href=
"#component-InterfaceOperation">Interface Operation</a>
component.</p>
<p>Define the <em>fault direction</em> of the <em>element
information item</em> to be <em>in</em> if its local name is
<code>infault</code> and <em>out</em> if its local name is
<code>outfault</code>.</p>
<p>Define the <em>message direction</em> of the <em>element
information item</em> to be the {<a href=
"#property-InterfaceMessageReference.direction">direction</a>} of
the placeholder message associated with the fault as specified by
the fault propagation ruleset of the message exchange pattern.</p>
<p><span id="MessageLabel-1041" class="test-assertion-tr">The
<code>messageLabel</code> <em>attribute information item</em> of an
interface fault reference <em>element information item</em> MUST be
present if the message exchange pattern has more than one
placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1041-summary" title=
"Link to assertion MessageLabel-1041 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1042" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of an
interface fault reference <em>element information item</em> is
present then its actual value MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1042-summary" title=
"Link to assertion MessageLabel-1042 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1043" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of an
interface fault reference <em>element information item</em> is
absent then there MUST be a unique placeholder message with
{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1043-summary" title=
"Link to assertion MessageLabel-1043 summary">†</a></sup></span></p>
<p>Define the <em>effective message label</em> of an interface
fault reference <em>element information item</em> to be either the
actual value of the <code>messageLabel</code> <em>attribute
information item</em> if it is present, or the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of the unique placeholder message whose {<a href=
"#property-InterfaceMessageReference.direction">direction</a>} is
equal to the message direction if the <em>attribute information
item</em> is absent.</p>
<a name="tab_InterfaceFaultReference_Mapping" id=
"tab_InterfaceFaultReference_Mapping"></a>
<table border="1">
<caption>Table 2-6. Mapping from XML Representation to Interface
Fault Reference Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceFault">Interface Fault</a> component from
{<a href="#property-Interface.interfacefaults">interface
faults</a>} property of the parent <a href=
"#component-Interface">Interface</a> component, or an <a href=
"#component-Interface">Interface</a> component that it directly or
indirectly extends, with {<a href=
"#property-InterfaceFault.name">name</a>} equal to the actual value
of the <code>ref</code> <em>attribute information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFaultReference.messagelabel">message
label</a>}</td>
<td rowspan="1" colspan="1">The effective message label.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFaultReference.direction">direction</a>}</td>
<td rowspan="1" colspan="1">The fault direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFaultReference.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceOperation">Interface Operation</a> component
corresponding to the <code>interface</code> <em>element information
item</em> in [parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Binding" id="Binding"></a>2.7 Binding</h3>
<div class="div3">
<h4><a name="Binding_details" id="Binding_details"></a>2.7.1 The
Binding Component</h4>
<p>A <a href="#component-Binding">Binding</a> component describes a
concrete message format and transmission protocol which may be used
to define an endpoint (see <a href="#Endpoint"><strong>2.13
Endpoint</strong></a>). That is, a <a href=
"#component-Binding">Binding</a> component defines the
implementation details necessary to access the service.</p>
<p><a href="#component-Binding">Binding</a> components can be used
to describe such information in a reusable manner for any interface
or specifically for a given interface. Furthermore, binding
information MAY be specified on a per-operation basis (see <a href=
"#Binding_Operation_details"><strong>2.9.1 The Binding Operation
Component</strong></a>) within an interface, in addition to across
all operations of an interface.</p>
<p><span id="Binding-1044" class="test-assertion-tr">If a <a href=
"#component-Binding">Binding</a> component specifies any
operation-specific binding details (by including <a href=
"#component-BindingOperation">Binding Operation</a> components) or
any fault binding details (by including <a href=
"#component-BindingFault">Binding Fault</a> components), then it
MUST specify an interface the <a href=
"#component-Binding">Binding</a> component applies to, so as to
indicate which interface the operations come from.<sup><a href=
"#Binding-1044-summary" title=
"Link to assertion Binding-1044 summary">†</a></sup></span></p>
<p>Conversely, a <a href="#component-Binding">Binding</a> component
which omits any operation-specific binding details and any fault
binding details MAY omit specifying an interface. <a href=
"#component-Binding">Binding</a> components that do not specify an
interface MAY be used to specify operation-independent binding
details for <a href="#component-Service">Service</a> components
with different interfaces. That is, such <a href=
"#component-Binding">Binding</a> components are reusable across one
or more interfaces.</p>
<p>No concrete binding details are given in this specification. The
companion specification, <em>Web Services Description Language
(WSDL) Version 2.0 Part 2: Adjuncts</em> [<cite><a href=
"#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>] defines such bindings
for SOAP 1.2 [<cite><a href="#SOAP12-PART1">SOAP 1.2 Part 1:
Messaging Framework (Second Edition)</a></cite>] and HTTP
[<cite><a href="#RFC2616">IETF RFC 2616</a></cite>]. Other
specifications MAY define additional binding details. Such
specifications are expected to annotate the <a href=
"#component-Binding">Binding</a> component (and its sub-components)
with additional properties and specify the mapping from the XML
representation to these properties.</p>
<p><span id="Binding-1045" class="test-assertion-tr">A <a href=
"#component-Binding">Binding</a> component that defines bindings
for an <a href="#component-Interface">Interface</a> component MUST
define bindings for all the operations of that <a href=
"#component-Interface">Interface</a> component.<sup><a href=
"#Binding-1045-summary" title=
"Link to assertion Binding-1045 summary">†</a></sup></span> The
bindings can occur via defaulting rules which allow one to specify
default bindings for all operations and faults (see, for example
[<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>]) or by
defining bindings for each <a href=
"#component-InterfaceOperation">Interface Operation</a> and
<a href="#component-InterfaceFault">Interface Fault</a> component
of the <a href="#component-Interface">Interface</a> component.</p>
<p><span id="Binding-1046" class="test-assertion-tr">Similarly,
whenever a reusable <a href="#component-Binding">Binding</a>
component (i.e. one that does not specify an <a href=
"#component-Interface">Interface</a> component) is applied to a
specific <a href="#component-Interface">Interface</a> component in
the context of an <a href="#component-Endpoint">Endpoint</a>
component (see <a href="#Endpoint_details"><strong>2.13.1 The
Endpoint Component</strong></a>), the <a href=
"#component-Binding">Binding</a> component MUST define bindings for
each <a href="#component-InterfaceOperation">Interface
Operation</a> and <a href="#component-InterfaceFault">Interface
Fault</a> component of the <a href=
"#component-Interface">Interface</a> component, via a combination
of properties defined on the <a href=
"#component-Binding">Binding</a> component itself and default
binding rules specific to its binding type.<sup><a href=
"#Binding-1046-summary" title=
"Link to assertion Binding-1046 summary">†</a></sup></span></p>
<p><span id="Binding-1047" class="test-assertion-tr">A <a href=
"#component-Binding">Binding</a> component that defines bindings
for an <a href="#component-Interface">Interface</a> component MUST
define bindings for all the faults of that <a href=
"#component-Interface">Interface</a> component that are referenced
from any of the operations in that <a href=
"#component-Interface">Interface</a> component.<sup><a href=
"#Binding-1047-summary" title=
"Link to assertion Binding-1047 summary">†</a></sup></span> As for
the case of operations, the binding can be defined by defaulting
rules. Note that only the faults actually referenced by operations
are required to have bindings.</p>
<p>Bindings are named constructs and can be referred to by QName
(see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>). For instance, <a href=
"#component-Endpoint">Endpoint</a> components refer to bindings in
this way.</p>
<p>The properties of the <a name="component-Binding" id=
"component-Binding">Binding</a> component are as follows:</p>
<ul>
<li>
<p>{<a name="property-Binding.name" id=
"property-Binding.name">name</a>} REQUIRED. An
<em>xs:QName</em>.</p>
</li>
<li>
<p>{<a name="property-Binding.interface" id=
"property-Binding.interface">interface</a>} OPTIONAL. An <a href=
"#component-Interface">Interface</a> component indicating the
interface for which binding information is being specified.</p>
</li>
<li>
<p>{<a name="property-Binding.type" id=
"property-Binding.type">type</a>} REQUIRED. An <em>xs:anyURI</em>.
<span id="Binding-1048" class="test-assertion-tr">This
<em>xs:anyURI</em> MUST be an absolute IRI as defined by
[<cite><a href="#RFC3987">IETF RFC 3987</a></cite>].<sup><a href=
"#Binding-1048-summary" title=
"Link to assertion Binding-1048 summary">†</a></sup></span> The
value of this IRI indicates what kind of concrete binding details
are contained within this <a href="#component-Binding">Binding</a>
component. Specifications (such as [<cite><a href=
"#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>]) that define such
concrete binding details MUST specify appropriate values for this
property. The value of this property MAY be the namespace name of
the extension elements or attributes which define those concrete
binding details.</p>
</li>
<li>
<p>{<a name="property-Binding.bindingfaults" id=
"property-Binding.bindingfaults">binding faults</a>} OPTIONAL. A
set of <a href="#component-BindingFault">Binding Fault</a>
components.</p>
</li>
<li>
<p>{<a name="property-Binding.bindingoperations" id=
"property-Binding.bindingoperations">binding operations</a>}
OPTIONAL. A set of <a href="#component-BindingOperation">Binding
Operation</a> components.</p>
</li>
</ul>
<a name="zed-Binding" id="zed-Binding"></a><a name="zed-BindingRI"
id="zed-BindingRI"></a>
<p><span id="Binding-1049" class="test-assertion-tr">For each
<a href="#component-Binding">Binding</a> component in the {<a href=
"#property-Description.bindings">bindings</a>} property of a
<a href="#component-Description">Description</a> component, the
{<a href="#property-Binding.name">name</a>} property MUST be
unique.<sup><a href="#Binding-1049-summary" title=
"Link to assertion Binding-1049 summary">†</a></sup></span></p>
<a name="zed-BindingKey" id="zed-BindingKey"></a><a name=
"zed-BindingParent" id="zed-BindingParent"></a><a name=
"zed-BindingCM" id="zed-BindingCM"></a></div>
<div class="div3">
<h4><a name="Binding_XMLRep" id="Binding_XMLRep"></a>2.7.2 XML
Representation of Binding Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;<strong>binding</strong>
name="<em>xs:NCName</em>"
interface="<em>xs:QName</em>"?
type="<em>xs:anyURI</em>" &gt;
&lt;documentation /&gt;*
[ &lt;fault /&gt; | &lt;operation /&gt; ]*
&lt;/<strong>binding</strong>&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-Binding">Binding</a> component is an <em>element
information item</em> with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>binding</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>Two or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>name</code> <em>attribute information item</em>
as described below in <a href=
"#Binding_name_attribute"><strong>2.7.2.1 name attribute
information item with binding [owner element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>interface</code> <em>attribute information
item</em> as described below in <a href=
"#Binding_interface_attribute"><strong>2.7.2.2 interface attribute
information item with binding [owner element]</strong></a>.</p>
</li>
<li>
<p>An REQUIRED <code>type</code> <em>attribute information
item</em> as described below in <a href=
"#Binding_type_attribute"><strong>2.7.2.3 type attribute
information item with binding [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em>s amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>Zero or more <code>fault</code> <em>element information
item</em>s (see <a href="#Binding_Fault_XMLRep"><strong>2.8.2 XML
Representation of Binding Fault Component</strong></a>).</p>
</li>
<li>
<p>Zero or more <code>operation</code> <em>element information
item</em>s (see <a href="#Binding_Operation_XMLRep"><strong>2.9.2
XML Representation of Binding Operation
Component</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl". Such <em>element information
item</em>s are considered to be binding extension elements(see
<a href="#Binding_extension_elements"><strong>2.7.2.4 Binding
extension elements</strong></a>).</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Binding_name_attribute" id=
"Binding_name_attribute"></a>2.7.2.1 <code>name</code>
<em>attribute information item</em> with <code>binding</code>
[owner element]</h5>
<p>The <code>name</code> <em>attribute information item</em>
together with the <code>targetNamespace</code> <em>attribute
information item</em> of the <code>description</code> <em>element
information item</em> forms the QName of the binding.</p>
<p>The <code>name</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>name</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>name</code> <em>attribute information
item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_interface_attribute" id=
"Binding_interface_attribute"></a>2.7.2.2 <code>interface</code>
<em>attribute information item</em> with <code>binding</code>
[owner element]</h5>
<p>The <code>interface</code> <em>attribute information item</em>
refers, by QName, to an <a href=
"#component-Interface">Interface</a> component.</p>
<p>The <code>interface</code> <em>attribute information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>interface</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>interface</code> <em>attribute information
item</em> is <em>xs:QName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_type_attribute" id=
"Binding_type_attribute"></a>2.7.2.3 <code>type</code>
<em>attribute information item</em> with <code>binding</code>
[owner element]</h5>
<p>The <code>type</code> <em>attribute information item</em>
identifies the kind of binding details contained in the <a href=
"#component-Binding">Binding</a> component.</p>
<p>The <code>type</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>type</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>type</code> <em>attribute information
item</em> is <em>xs:anyURI</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_extension_elements" id=
"Binding_extension_elements"></a>2.7.2.4 Binding extension
elements</h5>
<p>Binding extension elements are used to provide information
specific to a particular binding. The semantics of such <em>element
information item</em>s are defined by the specification for those
<em>element information item</em>s. Such specifications are
expected to annotate the <a href="#component-Binding">Binding</a>
component with additional properties and specify the mapping from
the XML representation to those properties.</p>
</div>
</div>
<div class="div3">
<h4><a name="Binding_Mapping" id="Binding_Mapping"></a>2.7.3
Mapping Binding's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>binding</code> <em>element information item</em> (see
<a href="#Binding_XMLRep"><strong>2.7.2 XML Representation of
Binding Component</strong></a>) to the properties of the <a href=
"#component-Binding">Binding</a> component (see <a href=
"#Binding_details"><strong>2.7.1 The Binding
Component</strong></a>) is as described in <a href=
"#tab_Binding_Mapping">Table 2-7</a>.</p>
<a name="tab_Binding_Mapping" id="tab_Binding_Mapping"></a>
<table border="1">
<caption>Table 2-7. Mapping from XML Representation to Binding
Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Binding.name">name</a>}</td>
<td rowspan="1" colspan="1">The QName whose local name is the
actual value of the <code>name</code> <em>attribute information
item</em> and whose namespace name is the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the [parent] <code>description</code> <em>element information
item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Binding.interface">interface</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Interface">Interface</a> component resolved to by the
actual value of the <code>interface</code> <em>attribute
information item</em> (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>), if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Binding.type">type</a>}</td>
<td rowspan="1" colspan="1">The actual value of the
<code>type</code> <em>attribute information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Binding.bindingfaults">binding faults</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-BindingFault">Binding Fault</a> components
corresponding to the <code>fault</code> <em>element information
item</em>s in [children], if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Binding.bindingoperations">binding operations</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-BindingOperation">Binding Operation</a> components
corresponding to the <code>operation</code> <em>element information
item</em>s in [children], if any.</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Binding_Fault" id="Binding_Fault"></a>2.8 Binding
Fault</h3>
<div class="div3">
<h4><a name="Binding_Fault_details" id=
"Binding_Fault_details"></a>2.8.1 The Binding Fault Component</h4>
<p>A <a href="#component-BindingFault">Binding Fault</a> component
describes a concrete binding of a particular fault within an
interface to a particular concrete message format. A particular
fault of an interface is uniquely identified by its {<a href=
"#property-InterfaceFault.name">name</a>} property.</p>
<p>Note that the fault does not occur by itself -it occurs as part
of a message exchange as defined by an <a href=
"#component-InterfaceOperation">Interface Operation</a> component
(and its binding counterpart the <a href=
"#component-BindingOperation">Binding Operation</a> component).
Thus, the fault binding information specified in a <a href=
"#component-BindingFault">Binding Fault</a> component describes how
faults that occur within a message exchange of an operation will be
formatted and carried in the transport.</p>
<p>The properties of the <a name="component-BindingFault" id=
"component-BindingFault">Binding Fault</a> component are as
follows:</p>
<ul>
<li>
<p>{<a name="property-BindingFault.interfacefault" id=
"property-BindingFault.interfacefault">interface fault</a>}
REQUIRED. An <a href="#component-InterfaceFault">Interface
Fault</a> component in the {<a href=
"#property-Interface.interfacefaults">interface faults</a>}
property of the <a href="#component-Interface">Interface</a>
component identified by the {<a href=
"#property-Binding.interface">interface</a>} property of the parent
<a href="#component-Binding">Binding</a> component, or an <a href=
"#component-Interface">Interface</a> component that that <a href=
"#component-Interface">Interface</a> component directly or
indirectly extends. This is the <a href=
"#component-InterfaceFault">Interface Fault</a> component for which
binding information is being specified.</p>
</li>
<li>
<p>{<a name="property-BindingFault.parent" id=
"property-BindingFault.parent">parent</a>} REQUIRED. The <a href=
"#component-Binding">Binding</a> component that contains this
component in its {<a href="#property-Binding.bindingfaults">binding
faults</a>} property.</p>
</li>
</ul>
<a name="zed-BindingFault" id="zed-BindingFault"></a><a name=
"zed-BindingFaultRI" id="zed-BindingFaultRI"></a>
<p><span id="BindingFault-1050" class="test-assertion-tr">For each
<a href="#component-BindingFault">Binding Fault</a> component in
the {<a href="#property-Binding.bindingfaults">binding faults</a>}
property of a <a href="#component-Binding">Binding</a> component,
the {<a href="#property-BindingFault.interfacefault">interface
fault</a>} property MUST be unique.<sup><a href=
"#BindingFault-1050-summary" title=
"Link to assertion BindingFault-1050 summary">†</a></sup></span>
That is, one cannot define multiple bindings for the same fault
within a given <a href="#component-Binding">Binding</a>
component.</p>
<a name="zed-BindingFaultKey" id="zed-BindingFaultKey"></a><a name=
"zed-BindingFaultConsistent" id=
"zed-BindingFaultConsistent"></a><a name="zed-BindingFaultCM" id=
"zed-BindingFaultCM"></a></div>
<div class="div3">
<h4><a name="Binding_Fault_XMLRep" id=
"Binding_Fault_XMLRep"></a>2.8.2 XML Representation of Binding
Fault Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;binding&gt;
&lt;<strong>fault</strong>
ref="<em>xs:QName</em>" &gt;
&lt;documentation /&gt;*
&lt;/<strong>fault</strong>&gt;
&lt;/binding&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-BindingFault">Binding Fault</a> component is an
<em>element information item</em> with the following Infoset
properties:</p>
<ul>
<li>
<p>A [local name] of <code>fault</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>ref</code> <em>attribute information item</em>
as described below in <a href=
"#Binding_Fault_ref_attribute"><strong>2.8.2.1 ref attribute
information item with fault [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl". Such <em>element information
item</em>s are considered to be binding fault extension elements as
described further below (see <a href=
"#Binding_Fault_extension_elements"><strong>2.8.2.2 Binding Fault
extension elements</strong></a>).</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Binding_Fault_ref_attribute" id=
"Binding_Fault_ref_attribute"></a>2.8.2.1 <code>ref</code>
<em>attribute information item</em> with <code>fault</code> [owner
element]</h5>
<p>The <code>ref</code> <em>attribute information item</em> has the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>ref</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>ref</code> <em>attribute information
item</em> is <em>xs:QName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_Fault_extension_elements" id=
"Binding_Fault_extension_elements"></a>2.8.2.2 Binding Fault
extension elements</h5>
<p>Binding Fault extension elements are used to provide information
specific to a particular fault in a binding. The semantics of such
<em>element information item</em>s are defined by the specification
for those <em>element information item</em>s. Such specifications
are expected to annotate the <a href=
"#component-BindingFault">Binding Fault</a> component with
additional properties and specify the mapping from the XML
representation to those properties.</p>
</div>
</div>
<div class="div3">
<h4><a name="Binding_Fault_Mapping" id=
"Binding_Fault_Mapping"></a>2.8.3 Mapping Binding Fault's XML
Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>fault</code> <em>element information item</em> (see <a href=
"#Binding_Fault_XMLRep"><strong>2.8.2 XML Representation of Binding
Fault Component</strong></a>) to the properties of the <a href=
"#component-BindingFault">Binding Fault</a> component (see <a href=
"#Binding_Fault_details"><strong>2.8.1 The Binding Fault
Component</strong></a>) is as described in <a href=
"#tab_Binding_Fault_Mapping">Table 2-8</a>.</p>
<a name="tab_Binding_Fault_Mapping" id=
"tab_Binding_Fault_Mapping"></a>
<table border="1">
<caption>Table 2-8. Mapping from XML Representation to Binding
Fault Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingFault.interfacefault">interface fault</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceFault">Interface Fault</a> component
corresponding to the actual value of the <code>ref</code>
<em>attribute information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingFault.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Binding">Binding</a> component corresponding to the
<code>binding</code> <em>element information item</em> in
[parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Binding_Operation" id="Binding_Operation"></a>2.9
Binding Operation</h3>
<div class="div3">
<h4><a name="Binding_Operation_details" id=
"Binding_Operation_details"></a>2.9.1 The Binding Operation
Component</h4>
<p>The <a href="#component-BindingOperation">Binding Operation</a>
component describes the concrete message format(s) and protocol
interaction(s) associated with a particular interface operation for
a given endpoint. A particular operation of an interface is
uniquely identified by its {<a href=
"#property-InterfaceOperation.name">name</a>} property.</p>
<p>The properties of the <a name="component-BindingOperation" id=
"component-BindingOperation">Binding Operation</a> component are as
follows:</p>
<ul>
<li>
<p>{<a name="property-BindingOperation.interfaceoperation" id=
"property-BindingOperation.interfaceoperation">interface
operation</a>} REQUIRED. An <a href=
"#component-InterfaceOperation">Interface Operation</a> component
in the {<a href="#property-Interface.interfaceoperations">interface
operations</a>} property of the <a href=
"#component-Interface">Interface</a> component identified by the
{<a href="#property-Binding.interface">interface</a>} property of
the [parent] <a href="#component-Binding">Binding</a> component, or
an Interface component that that <a href=
"#component-Interface">Interface</a> component directly or
indirectly extends. This is the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
for which binding information is being specified.</p>
</li>
<li>
<p>{<a name="property-BindingOperation.bindingmessagereferences"
id="property-BindingOperation.bindingmessagereferences">binding
message references</a>} OPTIONAL. A set of <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
components.</p>
</li>
<li>
<p>{<a name="property-BindingOperation.bindingfaultreferences" id=
"property-BindingOperation.bindingfaultreferences">binding fault
references</a>} OPTIONAL. A set of <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
components.</p>
</li>
<li>
<p>{<a name="property-BindingOperation.parent" id=
"property-BindingOperation.parent">parent</a>} REQUIRED. The
<a href="#component-Binding">Binding</a> component that contains
this component in its {<a href=
"#property-Binding.bindingoperations">binding operations</a>}
property.</p>
</li>
</ul>
<a name="zed-BindingOperation" id=
"zed-BindingOperation"></a><a name="zed-BindingOperationRI" id=
"zed-BindingOperationRI"></a>
<p><span id="BindingOperation-1051" class="test-assertion-tr">For
each <a href="#component-BindingOperation">Binding Operation</a>
component in the {<a href=
"#property-Binding.bindingoperations">binding operations</a>}
property of a <a href="#component-Binding">Binding</a> component,
the {<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>} property MUST be unique.<sup><a href=
"#BindingOperation-1051-summary" title=
"Link to assertion BindingOperation-1051 summary">†</a></sup></span>
That is, one cannot define multiple bindings for the same operation
within a given <a href="#component-Binding">Binding</a>
component.</p>
<a name="zed-BindingOperationKey" id=
"zed-BindingOperationKey"></a><a name="zed-BindingOperationParent"
id="zed-BindingOperationParent"></a><a name=
"zed-BindingOperationConsistent" id=
"zed-BindingOperationConsistent"></a><a name=
"zed-BindingOperationCM" id="zed-BindingOperationCM"></a></div>
<div class="div3">
<h4><a name="Binding_Operation_XMLRep" id=
"Binding_Operation_XMLRep"></a>2.9.2 XML Representation of Binding
Operation Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;binding&gt;
&lt;<strong>operation</strong>
ref="<em>xs:QName</em>" &gt;
&lt;documentation /&gt;*
[ &lt;input /&gt; | &lt;output /&gt; | &lt;infault /&gt; | &lt;outfault /&gt; ]*
&lt;/<strong>operation</strong>&gt;
&lt;/binding&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-BindingOperation">Binding Operation</a> component is an
<em>element information item</em> with the following Infoset
properties:</p>
<ul>
<li>
<p>A [local name] of <code>operation</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>ref</code> <em>attribute information item</em>
as described below in <a href=
"#Binding_Operation_ref_attribute"><strong>2.9.2.1 ref attribute
information item with operation [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em>s amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>Zero or more <code>input</code> <em>element information
item</em>s (see <a href="#Binding_Message_Reference"><strong>2.10
Binding Message Reference</strong></a>)</p>
</li>
<li>
<p>Zero or more <code>output</code> <em>element information
item</em>s (see <a href="#Binding_Message_Reference"><strong>2.10
Binding Message Reference</strong></a>)</p>
</li>
<li>
<p>Zero or more <code>infault</code> <em>element information
item</em>s (see <a href="#Binding_Fault_Reference"><strong>2.11
Binding Fault Reference</strong></a>)</p>
</li>
<li>
<p>Zero or more <code>outfault</code> <em>element information
item</em>s (see <a href="#Binding_Fault_Reference"><strong>2.11
Binding Fault Reference</strong></a>)</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em> whose [namespace name] is NOT " http://www.w3.org/ns/wsdl
". Such <em>element information item</em>s are considered to be
binding operation extension elements as described below (see
<a href="#Binding_Operation_extension_elements"><strong>2.9.2.2
Binding Operation extension elements</strong></a>).</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Binding_Operation_ref_attribute" id=
"Binding_Operation_ref_attribute"></a>2.9.2.1 <code>ref</code>
<em>attribute information item</em> with <code>operation</code>
[owner element]</h5>
<p>The <code>ref</code> <em>attribute information item</em> has the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>ref</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>ref</code> <em>attribute information
item</em> is <em>xs:QName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_Operation_extension_elements" id=
"Binding_Operation_extension_elements"></a>2.9.2.2 Binding
Operation extension elements</h5>
<p>Binding Operation extension elements are used to provide
information specific to a particular operation in a binding. The
semantics of such <em>element information item</em>s are defined by
the specification for those <em>element information item</em>s.
Such specifications are expected to annotate the <a href=
"#component-BindingOperation">Binding Operation</a> component with
additional properties and specify the mapping from the XML
representation to those properties.</p>
</div>
</div>
<div class="div3">
<h4><a name="Binding_Operation_Mapping" id=
"Binding_Operation_Mapping"></a>2.9.3 Mapping Binding Operation's
XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>operation</code> <em>element information item</em> (see
<a href="#Binding_Operation_XMLRep"><strong>2.9.2 XML
Representation of Binding Operation Component</strong></a>) to the
properties of the <a href="#component-BindingOperation">Binding
Operation</a> component is as described in <a href=
"#tab_Binding_Operation_Mapping">Table 2-9</a>.</p>
<a name="tab_Binding_Operation_Mapping" id=
"tab_Binding_Operation_Mapping"></a>
<table border="1">
<caption>Table 2-9. Mapping from XML Representation to Binding
Operation Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceOperation">Interface Operation</a> component
corresponding to the actual value of the <code>ref</code>
<em>attribute information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingOperation.bindingmessagereferences">binding
message references</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
components corresponding to the <code>input</code> and
<code>output</code> <em>element information item</em>s in
[children], if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingOperation.bindingfaultreferences">binding fault
references</a>}</td>
<td rowspan="1" colspan="1">The set of <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
components corresponding to the <code>infault</code> and
<code>outfault</code> <em>element information item</em>s in
[children], if any.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingOperation.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Binding">Binding</a> component corresponding to the
<code>binding</code> <em>element information item</em> in
[parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Binding_Message_Reference" id=
"Binding_Message_Reference"></a>2.10 Binding Message Reference</h3>
<div class="div3">
<h4><a name="Binding_Message_Reference_details" id=
"Binding_Message_Reference_details"></a>2.10.1 The Binding Message
Reference Component</h4>
<p>A <a href="#component-BindingMessageReference">Binding Message
Reference</a> component describes a concrete binding of a
particular message participating in an operation to a particular
concrete message format.</p>
<p>The properties of the <a name=
"component-BindingMessageReference" id=
"component-BindingMessageReference">Binding Message Reference</a>
component are as follows:</p>
<ul>
<li>
<p>{<a name=
"property-BindingMessageReference.interfacemessagereference" id=
"property-BindingMessageReference.interfacemessagereference">interface
message reference</a>} REQUIRED. An <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component among those in the {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} property of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
being bound by the containing <a href=
"#component-BindingOperation">Binding Operation</a> component.</p>
</li>
<li>
<p>{<a name="property-BindingMessageReference.parent" id=
"property-BindingMessageReference.parent">parent</a>} REQUIRED. The
<a href="#component-BindingOperation">Binding Operation</a>
component that contains this component in its {<a href=
"#property-BindingOperation.bindingmessagereferences">binding
message references</a>} property.</p>
</li>
</ul>
<a name="zed-BindingMessageReference" id=
"zed-BindingMessageReference"></a><a name=
"zed-BindingMessageReferenceRI" id=
"zed-BindingMessageReferenceRI"></a>
<p><span id="BindingMessageReference-1052" class=
"test-assertion-tr">For each <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
component in the {<a href=
"#property-BindingOperation.bindingmessagereferences">binding
message references</a>} property of a <a href=
"#component-BindingOperation">Binding Operation</a> component, the
{<a href=
"#property-BindingMessageReference.interfacemessagereference">interface
message reference</a>} property MUST be unique.<sup><a href=
"#BindingMessageReference-1052-summary" title=
"Link to assertion BindingMessageReference-1052 summary">†</a></sup></span>
That is, the same message cannot be bound twice within the same
operation.</p>
<a name="zed-BindingMessageReferenceKey" id=
"zed-BindingMessageReferenceKey"></a><a name=
"zed-BindingMessageReferenceConsistent" id=
"zed-BindingMessageReferenceConsistent"></a><a name=
"zed-BindingMessageReferenceCM" id=
"zed-BindingMessageReferenceCM"></a></div>
<div class="div3">
<h4><a name="Binding_Message_Reference_XMLRep" id=
"Binding_Message_Reference_XMLRep"></a>2.10.2 XML Representation of
Binding Message Reference Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;binding&gt;
&lt;operation&gt;
&lt;<strong>input</strong>
messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>input</strong>&gt;
&lt;<strong>output</strong>
messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>output</strong>&gt;
&lt;/operation&gt;
&lt;/binding&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
component is an <em>element information item</em> with the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>input</code> or <code>output</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>Zero or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>An OPTIONAL <code>messageLabel</code> <em>attribute information
item</em> as described below in <a href=
"#Binding_Message_Reference_name_attribute"><strong>2.10.2.1
messageLabel attribute information item with input or output [owner
element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl". Such <em>element information
item</em>s are considered to be binding message reference extension
elements as described below (see <a href=
"#Binding_Message_Reference_extension_elements"><strong>2.10.2.2
Binding Message Reference extension elements</strong></a>).</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Binding_Message_Reference_name_attribute" id=
"Binding_Message_Reference_name_attribute"></a>2.10.2.1
<code>messageLabel</code> <em>attribute information item</em> with
<code>input</code> or <code>output</code> [owner element]</h5>
<p>The <code>messageLabel</code> <em>attribute information
item</em> has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>messageLabel</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>messageLabel</code> <em>attribute
information item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_Message_Reference_extension_elements" id=
"Binding_Message_Reference_extension_elements"></a>2.10.2.2 Binding
Message Reference extension elements</h5>
<p>Binding Message Reference extension elements are used to provide
information specific to a particular message in an operation. The
semantics of such <em>element information item</em>s are defined by
the specification for those <em>element information item</em>s.
Such specifications are expected to annotate the <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
component with additional properties and specify the mapping from
the XML representation to those properties.</p>
</div>
</div>
<div class="div3">
<h4><a name="Binding_Message_Reference_Mapping" id=
"Binding_Message_Reference_Mapping"></a>2.10.3 Mapping Binding
Message Reference's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>binding</code> <em>element information item</em> (see
<a href="#Binding_Message_Reference_XMLRep"><strong>2.10.2 XML
Representation of Binding Message Reference Component</strong></a>)
to the properties of the <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
component is as described in <a href=
"#tab_Binding_Message_Reference_Mapping">Table 2-10</a> and uses
the definitions below.</p>
<p>Define the <em>message exchange pattern</em> of the <em>element
information item</em> to be the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
being bound.</p>
<p>Define the <em>message direction</em> of the <em>element
information item</em> to be <em>in</em> if its local name is
<code>input</code> and <em>out</em> if its local name is
<code>output</code>.</p>
<p>Note that the <code>messageLabel</code> <em>attribute
information item</em> of a binding message reference <em>element
information item</em> must be present if the message exchange
pattern has more than one placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</p>
<p><span id="MessageLabel-1053" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of a
binding message reference <em>element information item</em> is
present then its actual value MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1053-summary" title=
"Link to assertion MessageLabel-1053 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1054" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of a
binding message reference <em>element information item</em> is
absent then there MUST be a unique placeholder message with
{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1054-summary" title=
"Link to assertion MessageLabel-1054 summary">†</a></sup></span></p>
<p>Define the <em>effective message label</em> of a binding message
reference <em>element information item</em> to be either the actual
value of the <code>messageLabel</code> <em>attribute information
item</em> if it is present, or the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of the unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction if the <em>attribute information
item</em> is absent.</p>
<a name="tab_Binding_Message_Reference_Mapping" id=
"tab_Binding_Message_Reference_Mapping"></a>
<table border="1">
<caption>Table 2-10. Mapping from XML Representation to Binding
Message Reference Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingMessageReference.interfacemessagereference">interface
message reference</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component in the {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
being bound with {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} equal to the effective message label.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{parent}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-BindingOperation">Binding Operation</a> component
corresponding to the <code>operation</code> <em>element information
item</em> in [parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Binding_Fault_Reference" id=
"Binding_Fault_Reference"></a>2.11 Binding Fault Reference</h3>
<div class="div3">
<h4><a name="Binding_Fault_Reference_details" id=
"Binding_Fault_Reference_details"></a>2.11.1 The Binding Fault
Reference Component</h4>
<p>A <a href="#component-BindingFaultReference">Binding Fault
Reference</a> component describes a concrete binding of a
particular fault participating in an operation to a particular
concrete message format.</p>
<p>The properties of the <a name="component-BindingFaultReference"
id="component-BindingFaultReference">Binding Fault Reference</a>
component are as follows:</p>
<ul>
<li>
<p>{<a name=
"property-BindingFaultReference.interfacefaultreference" id=
"property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>} REQUIRED. An <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component among those in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} property of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
being bound by the parent <a href=
"#component-BindingOperation">Binding Operation</a> component.</p>
</li>
<li>
<p>{<a name="property-BindingFaultReference.parent" id=
"property-BindingFaultReference.parent">parent</a>} REQUIRED. The
<a href="#component-BindingOperation">Binding Operation</a>
component that contains this component in its {<a href=
"#property-BindingOperation.bindingfaultreferences">binding fault
references</a>} property.</p>
</li>
</ul>
<a name="zed-BindingFaultReference" id=
"zed-BindingFaultReference"></a><a name=
"zed-BindingFaultReferenceRI" id="zed-BindingFaultReferenceRI"></a>
<p><span id="BindingFaultReference-1055" class=
"test-assertion-tr">For each <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component in the {<a href=
"#property-BindingOperation.bindingfaultreferences">binding fault
references</a>} property of a <a href=
"#component-BindingOperation">Binding Operation</a> component, the
{<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>} property MUST be unique.<sup><a href=
"#BindingFaultReference-1055-summary" title=
"Link to assertion BindingFaultReference-1055 summary">†</a></sup></span>
That is, the same fault cannot be bound twice within the same
operation.</p>
<a name="zed-BindingFaultReferenceKey" id=
"zed-BindingFaultReferenceKey"></a><a name=
"zed-BindingFaultReferenceConsistent" id=
"zed-BindingFaultReferenceConsistent"></a><a name=
"zed-BindingFaultReferenceCM" id=
"zed-BindingFaultReferenceCM"></a></div>
<div class="div3">
<h4><a name="Binding_Fault_Reference_XMLRep" id=
"Binding_Fault_Reference_XMLRep"></a>2.11.2 XML Representation of
Binding Fault Reference Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;binding&gt;
&lt;operation&gt;
&lt;<strong>infault</strong>
ref="<em>xs:QName</em>"
messageLabel="<em>xs:NCName</em>"?&gt;
&lt;documentation /&gt;*
&lt;/<strong>infault</strong>&gt;
&lt;<strong>outfault</strong>
ref="<em>xs:QName</em>"
messageLabel="<em>xs:NCName</em>"?&gt;
&lt;documentation /&gt;*
&lt;/<strong>outfault</strong>&gt;
&lt;/operation&gt;
&lt;/binding&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component is an <em>element information item</em> with the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>infault</code> or
<code>outfault</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>ref</code> <em>attribute information item</em>
as described below in <a href=
"#Binding_Fault_Reference_ref_attribute"><strong>2.11.2.1 ref
attribute information item with infault or outfault [owner
element]</strong></a>.</p>
<p>An OPTIONAL <code>messageLabel</code> <em>attribute information
item</em> as described below in <a href=
"#Binding_Fault_Reference_messageLabel_attribute"><strong>2.11.2.2
messageLabel attribute information item with infault or outfault
[owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl". Such <em>element information
item</em>s are considered to be binding fault reference extension
elements as described below (see <a href=
"#Binding_Fault_Reference_extension_elements"><strong>2.11.2.3
Binding Fault Reference extension elements</strong></a>).</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Binding_Fault_Reference_ref_attribute" id=
"Binding_Fault_Reference_ref_attribute"></a>2.11.2.1
<code>ref</code> <em>attribute information item</em> with
<code>infault</code> or <code>outfault</code> [owner element]</h5>
<p>The <code>ref</code> <em>attribute information item</em> has the
following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>ref</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>ref</code> <em>attribute information
item</em> is <em>xs:QName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_Fault_Reference_messageLabel_attribute" id=
"Binding_Fault_Reference_messageLabel_attribute"></a>2.11.2.2
<code>messageLabel</code> <em>attribute information item</em> with
<code>infault</code> or <code>outfault</code> [owner element]</h5>
<p>The <code>messageLabel</code> <em>attribute information
item</em> has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>messageLabel</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>messageLabel</code> <em>attribute
information item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Binding_Fault_Reference_extension_elements" id=
"Binding_Fault_Reference_extension_elements"></a>2.11.2.3 Binding
Fault Reference extension elements</h5>
<p>Binding Fault Reference extension elements are used to provide
information specific to a particular fault in an operation. The
semantics of such <em>element information item</em>s are defined by
the specification for those <em>element information item</em>s.
Such specifications are expected to annotate the <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component with additional properties and specify the mapping from
the XML representation to those properties.</p>
</div>
</div>
<div class="div3">
<h4><a name="Binding_Fault_Reference_Mapping" id=
"Binding_Fault_Reference_Mapping"></a>2.11.3 Mapping Binding Fault
Reference's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>binding</code> <em>element information item</em> (see
<a href="#Binding_Fault_Reference_XMLRep"><strong>2.11.2 XML
Representation of Binding Fault Reference Component</strong></a>)
to the properties of the <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component is as described in <a href=
"#tab_Binding_Fault_Reference_Mapping">Table 2-11</a> and uses the
definitions below.</p>
<p>Define the <em>message exchange pattern</em> of the <em>element
information item</em> to be the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
being bound.</p>
<p>Define the <em>fault direction</em> of the <em>element
information item</em> to be <em>in</em> if its local name is
<code>infault</code> and <em>out</em> if its local name is
<code>outfault</code>.</p>
<p>Define the <em>message direction</em> of the <em>element
information item</em> to be the {<a href=
"#property-InterfaceMessageReference.direction">direction</a>} of
the placeholder message associated with the fault as specified by
the fault propagation ruleset of the message exchange pattern.</p>
<p><span id="MessageLabel-1056" class="test-assertion-tr">The
<code>messageLabel</code> <em>attribute information item</em> of a
binding fault reference <em>element information item</em> MUST be
present if the message exchange pattern has more than one
placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1056-summary" title=
"Link to assertion MessageLabel-1056 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1057" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of a
binding fault reference <em>element information item</em> is
present then its actual value MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1057-summary" title=
"Link to assertion MessageLabel-1057 summary">†</a></sup></span></p>
<p><span id="MessageLabel-1058" class="test-assertion-tr">If the
<code>messageLabel</code> <em>attribute information item</em> of a
binding fault reference <em>element information item</em> is absent
then there MUST be a unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction. <sup><a href=
"#MessageLabel-1058-summary" title=
"Link to assertion MessageLabel-1058 summary">†</a></sup></span></p>
<p>Define the <em>effective message label</em> of a binding fault
reference <em>element information item</em> to be either the actual
value of the <code>messageLabel</code> <em>attribute information
item</em> if it is present, or the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of the unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction if the <em>attribute information
item</em> is absent.</p>
<p><span id="BindingFaultReference-1059" class=
"test-assertion-tr">There MUST be an <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> being bound
with {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
equal to the effective message label and with {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} equal to an <a href=
"#component-InterfaceFault">Interface Fault</a> component with
{<a href="#property-InterfaceFault.name">name</a>} equal to the
actual value of the <code>ref</code> <em>attribute information
item</em>.<sup><a href="#BindingFaultReference-1059-summary" title=
"Link to assertion BindingFaultReference-1059 summary">†</a></sup></span></p>
<a name="tab_Binding_Fault_Reference_Mapping" id=
"tab_Binding_Fault_Reference_Mapping"></a>
<table border="1">
<caption>Table 2-11. Mapping from XML Representation to Binding
Fault Reference Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> being bound
with {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
equal to the effective message label, and with {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} equal to an <a href=
"#component-InterfaceFault">Interface Fault</a> component with
{<a href="#property-InterfaceFault.name">name</a>} equal to the
actual value of the <code>ref</code> <em>attribute information
item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{parent}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-BindingOperation">Binding Operation</a> component
corresponding to the <code>operation</code> <em>element information
item</em> in [parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Service" id="Service"></a>2.12 Service</h3>
<div class="div3">
<h4><a name="Service_details" id="Service_details"></a>2.12.1 The
Service Component</h4>
<p>A <a href="#component-Service">Service</a> component describes a
set of endpoints (see <a href="#Endpoint"><strong>2.13
Endpoint</strong></a>) at which a particular deployed
implementation of the service is provided. The endpoints thus are
in effect alternate places at which the service is provided.</p>
<p>Services are named constructs and can be referred to by QName
(see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>).</p>
<p>The properties of the <a name="component-Service" id=
"component-Service">Service</a> component are as follows:</p>
<ul>
<li>
<p>{<a name="property-Service.name" id=
"property-Service.name">name</a>} REQUIRED. An
<em>xs:QName</em>.</p>
</li>
<li>
<p>{<a name="property-Service.interface" id=
"property-Service.interface">interface</a>} REQUIRED. An <a href=
"#component-Interface">Interface</a> component.</p>
</li>
<li>
<p>{<a name="property-Service.endpoints" id=
"property-Service.endpoints">endpoints</a>} REQUIRED. A non-empty
set of <a href="#component-Endpoint">Endpoint</a> components.</p>
</li>
</ul>
<a name="zed-Service" id="zed-Service"></a><a name="zed-ServiceRI"
id="zed-ServiceRI"></a>
<p><span id="Service-1060" class="test-assertion-tr">For each
<a href="#component-Service">Service</a> component in the {<a href=
"#property-Description.services">services</a>} property of a
<a href="#component-Description">Description</a> component, the
{<a href="#property-Service.name">name</a>} property MUST be
unique.<sup><a href="#Service-1060-summary" title=
"Link to assertion Service-1060 summary">†</a></sup></span></p>
<a name="zed-ServiceKey" id="zed-ServiceKey"></a><a name=
"zed-ServiceParent" id="zed-ServiceParent"></a><a name=
"zed-ServiceCM" id="zed-ServiceCM"></a></div>
<div class="div3">
<h4><a name="Service_XMLRep" id="Service_XMLRep"></a>2.12.2 XML
Representation of Service Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;<strong>service</strong>
name="<em>xs:NCName</em>"
interface="<em>xs:QName</em>" &gt;
&lt;documentation /&gt;*
&lt;endpoint /&gt;+
&lt;/<strong>service</strong>&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-Service">Service</a> component is an <em>element
information item</em> with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>service</code></p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl"</p>
</li>
<li>
<p>Two or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>name</code> <em>attribute information item</em>
as described below in <a href=
"#Service_name_attribute"><strong>2.12.2.1 name attribute
information item with service [owner element]</strong></a>.</p>
</li>
<li>
<p>A REQUIRED <code>interface</code> <em>attribute information
item</em> as described below in <a href=
"#Service_interface_attribute"><strong>2.12.2.2 interface attribute
information item with service [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>One or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>One or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p>One or more <code>endpoint</code> <em>element information
item</em>s (see <a href="#Endpoint_XMLRep"><strong>2.13.2 XML
Representation of Endpoint Component</strong></a></p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Service_name_attribute" id=
"Service_name_attribute"></a>2.12.2.1 <code>name</code>
<em>attribute information item</em> with <code>service</code>
[owner element]</h5>
<p>The <code>name</code> <em>attribute information item</em>
together with the <code>targetNamespace</code> <em>attribute
information item</em> of the <code>description</code> <em>element
information item</em> forms the QName of the service.</p>
<p>The <code>name</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>name</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>name</code> <em>attribute information
item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Service_interface_attribute" id=
"Service_interface_attribute"></a>2.12.2.2 <code>interface</code>
<em>attribute information item</em> with <code>service</code>
[owner element]</h5>
<p>The <code>interface</code> <em>attribute information item</em>
identifies the interface that the service is an instance of.</p>
<p>The <code>interface</code> <em>attribute information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>interface</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>interface</code> <em>attribute information
item</em> is <em>xs:QName.</em>.</p>
</div>
</div>
<div class="div3">
<h4><a name="Service_Mapping" id="Service_Mapping"></a>2.12.3
Mapping Service's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>service</code> <em>element information item</em> (see
<a href="#Service_XMLRep"><strong>2.12.2 XML Representation of
Service Component</strong></a>) to the properties of the <a href=
"#component-Service">Service</a> component is as described in
<a href="#tab_Service_Mapping">Table 2-12</a>.</p>
<a name="tab_Service_Mapping" id="tab_Service_Mapping"></a>
<table border="1">
<caption>Table 2-12. Mapping from XML Representation to Service
Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Service.name">name</a>}</td>
<td rowspan="1" colspan="1">The QName whose local name is the
actual value of the <code>name</code> <em>attribute information
item</em>, and whose namespace name is the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the [parent] <code>description</code> <em>element information
item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Service.interface">interface</a>}</td>
<td rowspan="1" colspan="1"><span>The <a href=
"#component-Interface">Interface</a> component resolved to by the
actual value of the <code>interface</code> <em>attribute
information item</em> (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>).</span></td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Service.endpoints">endpoints</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Endpoint">Endpoint</a> components corresponding to the
<code>endpoint</code> <em>element information item</em>s in
[children].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="Endpoint" id="Endpoint"></a>2.13 Endpoint</h3>
<div class="div3">
<h4><a name="Endpoint_details" id="Endpoint_details"></a>2.13.1 The
Endpoint Component</h4>
<p>An <a href="#component-Endpoint">Endpoint</a> component defines
the particulars of a specific endpoint at which a given service is
available.</p>
<p><a href="#component-Endpoint">Endpoint</a> components are local
to a given <a href="#component-Service">Service</a> component (see
<a href="#frag-ids"><strong>A.2 Fragment
Identifiers</strong></a>).</p>
<p>The <a href="#component-Binding">Binding</a> component specified
by the {<a href="#property-Endpoint.binding">binding</a>} property
of an <a href="#component-Endpoint">Endpoint</a> component is said
to be <em>applied</em> to the <a href=
"#component-Interface">Interface</a> component which is the value
of the {<a href="#property-Service.interface">interface</a>}
property of the parent <a href="#component-Service">Service</a>
component of the <a href="#component-Endpoint">Endpoint</a>.
According to the constraints given below, if this <a href=
"#component-Binding">Binding</a> component has an {<a href=
"#property-Binding.interface">interface</a>} property, its value
must be the <a href="#component-Interface">Interface</a> component
the <a href="#component-Binding">Binding</a> component is applied
to.</p>
<p>The {<a href="#property-Endpoint.address">address</a>} property
is optional to allow for means other than IRIs to be used, e.g. a
WS-Addressing Endpoint Reference [<cite><a href="#WSA-Core">WSA 1.0
Core</a></cite>]. It is also possible that, in certain scenarios,
an address will not be required, in which case this property may be
absent.</p>
<p>The properties of the <a name="component-Endpoint" id=
"component-Endpoint">Endpoint</a> component are as follows:</p>
<ul>
<li>
<p>{<a name="property-Endpoint.name" id=
"property-Endpoint.name">name</a>} REQUIRED. An
<em>xs:NCName</em>.</p>
</li>
<li>
<p>{<a name="property-Endpoint.binding" id=
"property-Endpoint.binding">binding</a>} REQUIRED. A <a href=
"#component-Binding">Binding</a> component.</p>
</li>
<li>
<p>{<a name="property-Endpoint.address" id=
"property-Endpoint.address">address</a>} OPTIONAL. An
<em>xs:anyURI</em>. <span id="Endpoint-1061" class=
"test-assertion-tr">This <em>xs:anyURI</em> MUST be an absolute IRI
as defined by [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>].<sup><a href="#Endpoint-1061-summary" title=
"Link to assertion Endpoint-1061 summary">†</a></sup></span> If
present, the value of this attribute represents the network address
at which the service indicated by the parent <a href=
"#component-Service">Service</a> component's {<a href=
"#property-Service.interface">interface</a>} property is offered
via the binding referred to by the {<a href=
"#property-Endpoint.binding">binding</a>} property.
<strong>Note</strong> that the presence in this property of the
characters "?" and "#" can conflict with those potentially added by
the query string serialization mechanism, as defined in <a href=
"http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626/#_http_x-www-form-urlencoded">
Serialization as "application/x-www-form-urlencoded"</a>
([<cite><a href="#WSDL-PART2">WSDL 2.0 Adjuncts</a></cite>],
section 6.8.2).</p>
</li>
<li>
<p>{<a name="property-Endpoint.parent" id=
"property-Endpoint.parent">parent</a>} REQUIRED. The <a href=
"#component-Service">Service</a> component that contains this
component in its {<a href=
"#property-Service.endpoints">endpoints</a>} property.</p>
</li>
</ul>
<a name="zed-Endpoint" id="zed-Endpoint"></a><a name=
"zed-EndpointRI" id="zed-EndpointRI"></a>
<p>For each <a href="#component-Endpoint">Endpoint</a> component in
the {<a href="#property-Service.endpoints">endpoints</a>} property
of a <a href="#component-Service">Service</a> component, the
{<a href="#property-Endpoint.name">name</a>} property MUST be
unique. Note that this constraint is enforced by the normative WSDL
2.0 XML schema.</p>
<a name="zed-EndpointKey" id="zed-EndpointKey"></a>
<p><span id="Endpoint-1062" class="test-assertion-tr">For each
<a href="#component-Endpoint">Endpoint</a> component in the
{<a href="#property-Service.endpoints">endpoints</a>} property of a
<a href="#component-Service">Service</a> component, the {<a href=
"#property-Endpoint.binding">binding</a>} property MUST either be a
<a href="#component-Binding">Binding</a> component with an
unspecified {<a href="#property-Binding.interface">interface</a>}
property or a <a href="#component-Binding">Binding</a> component
with an {<a href="#property-Binding.interface">interface</a>}
property equal to the {<a href=
"#property-Service.interface">interface</a>} property of the
<a href="#component-Service">Service</a> component.<sup><a href=
"#Endpoint-1062-summary" title=
"Link to assertion Endpoint-1062 summary">†</a></sup></span></p>
<a name="zed-EndpointConsistent" id=
"zed-EndpointConsistent"></a><a name="zed-EndpointCM" id=
"zed-EndpointCM"></a></div>
<div class="div3">
<h4><a name="Endpoint_XMLRep" id="Endpoint_XMLRep"></a>2.13.2 XML
Representation of Endpoint Component</h4>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;service&gt;
&lt;<strong>endpoint</strong>
name="<em>xs:NCName</em>"
binding="<em>xs:QName</em>"
address="<em>xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>endpoint</strong>&gt;+
&lt;/service&gt;
&lt;/description&gt;
</pre></div>
<p>The XML representation for a <a href=
"#component-Endpoint">Endpoint</a> component is an <em>element
information item</em> with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>endpoint</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>Two or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>name</code> <em>attribute information item</em>
as described below in <a href=
"#Endpoint_name_attribute"><strong>2.13.2.1 name attribute
information item with endpoint [owner element]</strong></a>.</p>
</li>
<li>
<p>A REQUIRED <code>binding</code> <em>attribute information
item</em> as described below in <a href=
"#Endpoint_binding_attribute"><strong>2.13.2.2 binding attribute
information item with endpoint [owner element]</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>address</code> <em>attribute information
item</em> as described below in <a href=
"#Endpoint_address_attribute"><strong>2.13.2.3 address attribute
information item with endpoint [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], in order, as follows:</p>
<ol class="enumar">
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl". Such <em>element information
item</em>s are considered to be endpoint extension elements as
described below (see <a href=
"#Endpoint_extension_elements"><strong>2.13.2.4 Endpoint extension
elements</strong></a>).</p>
</li>
</ol>
</li>
</ul>
<div class="div4">
<h5><a name="Endpoint_name_attribute" id=
"Endpoint_name_attribute"></a>2.13.2.1 <code>name</code>
<em>attribute information item</em> with <code>endpoint</code>
[owner element]</h5>
<p>The <code>name</code> <em>attribute information item</em>
together with the <code>targetNamespace</code> <em>attribute
information item</em> of the <code>description</code> <em>element
information item</em> forms the QName of the endpoint.</p>
<p>The <code>name</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>name</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>name</code> <em>attribute information
item</em> is <em>xs:NCName</em>.</p>
</div>
<div class="div4">
<h5><a name="Endpoint_binding_attribute" id=
"Endpoint_binding_attribute"></a>2.13.2.2 <code>binding</code>
<em>attribute information item</em> with <code>endpoint</code>
[owner element]</h5>
<p>The <code>binding</code> <em>attribute information item</em>
refers, by QName, to a <a href="#component-Binding">Binding</a>
component</p>
<p>The <code>binding</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>binding</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>binding</code> <em>attribute information
item</em> is <em>xs:QName</em>.</p>
</div>
<div class="div4">
<h5><a name="Endpoint_address_attribute" id=
"Endpoint_address_attribute"></a>2.13.2.3 <code>address</code>
<em>attribute information item</em> with <code>endpoint</code>
[owner element]</h5>
<p>The <code>address</code> <em>attribute information item</em>
specifies the address of the endpoint.</p>
<p>The <code>address</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>address</code></p>
</li>
<li>
<p>A [namespace name] which has no value</p>
</li>
</ul>
<p>The type of the <code>address</code> <em>attribute information
item</em> is <em>xs:anyURI</em>.</p>
</div>
<div class="div4">
<h5><a name="Endpoint_extension_elements" id=
"Endpoint_extension_elements"></a>2.13.2.4 Endpoint extension
elements</h5>
<p>Endpoint extension elements are used to provide information
specific to a particular endpoint in a server. The semantics of
such <em>element information item</em>s are defined by the
specification for those <em>element information item</em>s. Such
specifications are expected to annotate the <a href=
"#component-Endpoint">Endpoint</a> component with additional
properties and specify the mapping from the XML representation to
those properties.</p>
</div>
</div>
<div class="div3">
<h4><a name="Endpoint_Mapping" id="Endpoint_Mapping"></a>2.13.3
Mapping Endpoint's XML Representation to Component Properties</h4>
<p>The mapping from the XML Representation of the
<code>endpoint</code> <em>element information item</em> (see
<a href="#Endpoint_XMLRep"><strong>2.13.2 XML Representation of
Endpoint Component</strong></a>) to the properties of the <a href=
"#component-Endpoint">Endpoint</a> component is as described in
<a href="#tab_Endpoint_Mapping">Table 2-13</a>.</p>
<a name="tab_Endpoint_Mapping" id="tab_Endpoint_Mapping"></a>
<table border="1">
<caption>Table 2-13. Mapping from XML Representation to Endpoint
Component Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Value</th>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Endpoint.name">name</a>}</td>
<td rowspan="1" colspan="1">The actual value of the
<code>name</code> <em>attribute information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Endpoint.binding">binding</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Binding">Binding</a> component resolved to by the
actual value of the <code>binding</code> <em>attribute information
item</em> (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a> ).</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Endpoint.address">address</a>}</td>
<td rowspan="1" colspan="1">The actual value of the
<code>address</code> <em>attribute information item</em> if
present; otherwise empty.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">{<a href=
"#property-Endpoint.parent">parent</a>}</td>
<td rowspan="1" colspan="1">The <a href=
"#component-Service">Service</a> component corresponding to the
<code>service</code> <em>element information item</em> in
[parent].</td>
</tr>
</tbody>
</table>
<br /></div>
</div>
<div class="div2">
<h3><a name="simpletypes" id="simpletypes"></a>2.14 XML Schema 1.0
Simple Types Used in the Component Model</h3>
<p>The XML Schema 1.0 simple types [<cite><a href=
"#XMLSchemaP2">XML Schema: Datatypes</a></cite>] used in this
specification are:</p>
<ul>
<li>
<p><em>xs:token</em></p>
</li>
<li>
<p><em>xs:NCName</em></p>
</li>
<li>
<p><em>xs:anyURI</em></p>
</li>
<li>
<p><em>xs:QName</em></p>
</li>
<li>
<p><em>xs:boolean</em></p>
</li>
</ul>
<a name="zed-NCName" id="zed-NCName"></a><a name="zed-URI" id=
"zed-URI"></a><a name="zed-AbsoluteURI" id=
"zed-AbsoluteURI"></a><a name="zed-QName" id=
"zed-QName"></a><a name="zed-Boolean" id="zed-Boolean"></a></div>
<div class="div2">
<h3><a name="compequiv" id="compequiv"></a>2.15 Equivalence of
Components</h3>
<p>Two component instances of the same type are considered
equivalent if, for each property value of the first component,
there is a corresponding property with an equivalent value on the
second component, and vice versa.</p>
<ul>
<li>
<p>For values of a simple type (see <a href=
"#simpletypes"><strong>2.14 XML Schema 1.0 Simple Types Used in the
Component Model</strong></a>) this means that they contain the same
values. For instance, two string values are equivalent if they
contain the same sequence of Unicode characters, as described in
[<cite><a href="#CHARMOD">Character Model for the WWW</a></cite>],
or two boolean values are equivalent if they contain the same
canonical value (<code>true</code> or <code>false</code>).</p>
</li>
<li>
<p>Values which are references to other components are considered
equivalent when they refer to equivalent components (as determined
above).</p>
</li>
<li>
<p>List-based values are considered equivalent if they have the
same length and their elements at corresponding positions are
equivalent.</p>
</li>
<li>
<p>Finally, set-based values are considered equivalent if, for each
value in the first, there is an equivalent value in the second, and
vice versa.</p>
</li>
</ul>
<p><span id="Equivalence-1063" class="test-assertion-tr">Extension
properties which are not string values, sets of strings or
references MUST describe their values' equivalence
rules.<sup><a href="#Equivalence-1063-summary" title=
"Link to assertion Equivalence-1063 summary">†</a></sup></span></p>
<p>Because different top-level components (e.g., <a href=
"#component-Interface">Interface</a>, <a href=
"#component-Binding">Binding</a>, and <a href=
"#component-Service">Service</a>) are required to have different
names, it is possible to determine whether two top-level components
of a given type are equivalent by simply examining their {name}
property.</p>
<p>The <a href="#component-Binding">Binding</a> component specified
by the {<a href="#property-Endpoint.binding">binding</a>} property
of an <a href="#component-Endpoint">Endpoint</a> is said to be
applied to the <a href="#component-Interface">Interface</a>
component which is the value of the {<a href=
"#property-Service.interface">interface</a>} property of the
{<a href="#property-Endpoint.parent">parent</a>} <a href=
"#component-Service">Service</a> component for the <a href=
"#component-Endpoint">Endpoint</a>. Note that, if this <a href=
"#component-Binding">Binding</a> component has an {<a href=
"#property-Binding.interface">interface</a>} property, then its
value MUST be the <a href="#component-Interface">Interface</a>
component that the <a href="#component-Binding">Binding</a>
component is applied to.</p>
</div>
<div class="div2">
<h3><a name="symbolspaces" id="symbolspaces"></a>2.16 Symbol
Spaces</h3>
<p>This specification defines three symbol spaces, one for each
top-level component type (<a href=
"#component-Interface">Interface</a>, <a href=
"#component-Binding">Binding</a> and <a href=
"#component-Service">Service</a>).</p>
<p>Within a symbol space, all qualified names (that is, the
{<a name="property-.name" id="property-.name">name</a>} property)
are unique. Between symbol spaces, the names need not be unique.
Thus it is perfectly coherent to have, for example, a binding and
an interface that have the same name.</p>
<p>When XML Schema is being used as one of the type systems for a
WSDL 2.0 description, then six other symbol spaces also exist, one
for each of: global element declarations, global attribute
declarations, named model groups, named attribute groups, type
definitions and key constraints, as defined by [<cite><a href=
"#XMLSchemaP1">XML Schema: Structures</a></cite>]. Other type
systems may define additional symbol spaces.</p>
</div>
<div class="div2">
<h3><a name="qnameres" id="qnameres"></a>2.17 QName resolution</h3>
<p>In its serialized form WSDL 2.0 makes significant use of
references between components. Such references are made using the
Qualified Name, or QName, of the component being referred to.
QNames are a tuple, consisting of two parts; a namespace name and a
local name. The namespace name for a component is represented by
the value of the <code>targetNamespace</code> <em>attribute
information item</em> of the [parent] <code>description</code>
<em>element information item</em>. The local name is represented by
the {<a href="#property-.name">name</a>} property of the
component.</p>
<p>QName references are resolved by looking in the appropriate
property of the <a href="#component-Description">Description</a>
component. For example, to resolve a QName of an interface (as
referred to by the <code>interface</code> <em>attribute information
item</em> on a binding), the {<a href=
"#property-Description.interfaces">interfaces</a>} property of the
<a href="#component-Description">Description</a> component would be
inspected.</p>
<p>If the appropriate property of the <a href=
"#component-Description">Description</a> component does not contain
a component with the required QName, then the reference is a broken
reference. <span id="QName-resolution-1064" class=
"test-assertion-tr">A <a href=
"#component-Description">Description</a> component MUST NOT have
such broken references.<sup><a href=
"#QName-resolution-1064-summary" title=
"Link to assertion QName-resolution-1064 summary">†</a></sup></span></p>
</div>
<div class="div2">
<h3><a name="uricompare" id="uricompare"></a>2.18 Comparing URIs
and IRIs</h3>
<p>This specification uses absolute URIs and IRIs to identify
several components and components characteristics (for example,
operation message exchange patterns and styles). <span id=
"Compare-URI-IRI-1065" class="test-assertion-tr">When such absolute
URIs and IRIs are being compared to determine equivalence (see
<a href="#compequiv"><strong>2.15 Equivalence of
Components</strong></a>), they MUST be compared
character-by-character as indicated in [<cite><a href=
"#RFC3987">IETF RFC 3987</a></cite>].<sup><a href=
"#Compare-URI-IRI-1065-summary" title=
"Link to assertion Compare-URI-IRI-1065 summary">†</a></sup></span></p>
</div>
</div>
<div class="div1">
<h2><a name="eii-types" id="eii-types"></a>3. Types</h2>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;<strong>types</strong>&gt;
&lt;documentation /&gt;*
[ &lt;xs:import namespace="<em>xs:anyURI</em>" schemaLocation="<em>xs:anyURI</em>"? /&gt; |
&lt;xs:schema targetNamespace="<em>xs:anyURI</em>"? /&gt; |
<em>other extension elements</em> ]*
&lt;/<strong>types</strong>&gt;
&lt;/description&gt;
</pre></div>
<p>The content of messages and faults may be constrained using type
system components. These constraints are based upon a specific data
model, and expressed using a particular schema language.</p>
<p>Although a variety of data models can be accommodated (through
WSDL 2.0 extensions), this specification only defines a means of
expressing constraints based upon the XML Infoset [<cite><a href=
"#XMLInfoSet">XML Information Set</a></cite>]. Furthermore,
although a number of alternate schema languages can be used to
constrain the XML Infoset (as long as they support the semantics of
either inlining or importing schema), this specification only
defines the use of XML Schema [<cite><a href="#XMLSchemaP1">XML
Schema: Structures</a></cite>], [<cite><a href="#XMLSchemaP2">XML
Schema: Datatypes</a></cite>].</p>
<p>Specifically, the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} and {<a href=
"#property-Description.typedefinitions">type definitions</a>}
properties of the <a href="#component-Description">Description</a>
component are collections of imported and inlined schema components
that describe Infoset <em>element information item</em>s.</p>
<p>When extensions are used to enable the use of a non-Infoset data
model, or a non-Schema constraint language, the
<code>wsdl:required</code> attribute information item MAY be used
to require support for that extension.</p>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>Support for the W3C XML Schema [<cite><a href="#XMLSchemaP1">XML
Schema: Structures</a></cite>], [<cite><a href="#XMLSchemaP2">XML
Schema: Datatypes</a></cite>] is included in the conformance
criteria for WSDL 2.0 documents (see <a href=
"#xsd-types"><strong>3.1 Using W3C XML Schema Definition
Language</strong></a> ).</p>
</div>
<p>The schema components contained in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component provide the type
system used for <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> and <a href="#component-InterfaceFault">Interface
Fault</a> components. <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> components indicate their structure and content by
using the standard <em>attribute information item</em>s
<code>element</code>, or for alternate schema languages in which
these concepts do not map well, by using alternative <em>attribute
information item</em> extensions. <a href=
"#component-InterfaceFault">Interface Fault</a> components behave
similarly. Such extensions should define how they reference type
system components. Such type system components MAY appear in
additional collection properties on the <a href=
"#component-Description">Description</a> component.</p>
<p>Extensions in the form of <em>attribute information item</em>s
can be used to refer to constraints (type definitions or analogous
constructs) described using other schema languages or type systems.
Such components MAY appear in additional collection properties on
the <a href="#component-Description">Description</a> component.</p>
<p>The <code>types</code> <em>element information item</em>
encloses data type definitions, based upon the XML Infoset, used to
define messages and has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>types</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
http://www.w3.org/ns/wsdl</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s amongst its
[children] as follows:</p>
<ul>
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>) in its [children] property.</p>
</li>
<li>
<p>Zero or more <em>element information item</em>s from among the
following, in any order:</p>
<ul>
<li>
<p><code>xs:import</code> <em>element information item</em>s</p>
</li>
<li>
<p><code>xs:schema</code> <em>element information item</em>s</p>
</li>
<li>
<p>Other namespace qualified <em>element information item</em>s
whose namespace is NOT http://www.w3.org/ns/wsdl</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="div2">
<h3><a name="xsd-types" id="xsd-types"></a>3.1 Using W3C XML Schema
Definition Language</h3>
<p>XML Schema MAY be used as the schema language via import or
inlining.</p>
<p><span id="Schema-1066" class="test-assertion-tr">A WSDL 2.0
document MUST NOT refer to XML Schema components in a given
namespace UNLESS an <code>xs:import</code> or
<code>xs:schema</code> <em>element information item</em> for that
namespace is present OR the namespace is the XML Schema namespace,
http://www.w3.org/2001/XMLSchema, which contains built-in types as
defined in XML Schema Part 2: Datatypes Second Edition
[<cite><a href="#XMLSchemaP2">XML Schema:
Datatypes</a></cite>].<sup><a href="#Schema-1066-summary" title=
"Link to assertion Schema-1066 summary">†</a></sup></span> That is,
using the <code>xs:import</code> or <code>xs:schema</code>
<em>element information item</em> is a necessary condition for
making XML Schema components, other than the built-in components,
referenceable within a WSDL 2.0 document. The built-in XML Schema
datatypes are built-in to the WSDL 2.0 component model and are
contained in the {<a href=
"#property-Description.typedefinitions">type definitions</a>}
property of the <a href="#component-Description">Description</a>
component. A WSDL 2.0 document that refers to any element
declaration or type definition component of the XML Schema
namespace, except the built-in primitive and derived types, MUST
import http://www.w3.org/2001/XMLSchema.</p>
<p><a href="#tab_SchemaVisibility">Table 3-1</a> summarizes the
referenceability of schema components.</p>
<a name="tab_SchemaVisibility" id="tab_SchemaVisibility"></a>
<table border="1">
<caption>Table 3-1. Referenceability of schema components</caption>
<col width="20%" span="1" />
<col width="40%" span="1" />
<col width="40%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1"></th>
<th rowspan="1" colspan="1">XML Representation</th>
<th rowspan="1" colspan="1">Referenceability of XML Schema
Components</th>
</tr>
<tr>
<td rowspan="1" colspan="1">Including description</td>
<td rowspan="1" colspan="1">description/include</td>
<td rowspan="1" colspan="1">XML Schema components in the included
<a href="#component-Description">Description</a> component's
{<a href="#property-Description.elementdeclarations">element
declarations</a>} and {<a href=
"#property-Description.typedefinitions">type definitions</a>}
properties are referenceable.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">Importing description</td>
<td rowspan="1" colspan="1">description/import</td>
<td rowspan="1" colspan="1">None of the XML Schema Components in
the imported <a href="#component-Description">Description</a>
component are referenceable.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">Importing XML Schema</td>
<td rowspan="1" colspan="1">description/types/xs:import</td>
<td rowspan="1" colspan="1"><a href=
"#component-ElementDeclaration">Element Declaration</a> and
<a href="#component-TypeDefinition">Type Definition</a> components
in the imported namespace are referenceable.</td>
</tr>
<tr>
<td rowspan="1" colspan="1">Inlined XML Schema</td>
<td rowspan="1" colspan="1">description/types/xs:schema</td>
<td rowspan="1" colspan="1"><a href=
"#component-ElementDeclaration">Element Declaration</a> and
<a href="#component-TypeDefinition">Type Definition</a> components
in the inlined XML Schema are referenceable.</td>
</tr>
</tbody>
</table>
<br />
<div class="div3">
<h4><a name="import-xsd" id="import-xsd"></a>3.1.1 Importing XML
Schema</h4>
<p>Importing an XML Schema uses the syntax and semantics of the
<code>xs:import</code> mechanism defined by XML Schema
[<cite><a href="#XMLSchemaP1">XML Schema: Structures</a></cite>],
[<cite><a href="#XMLSchemaP2">XML Schema: Datatypes</a></cite>],
with the differences defined in this section and the following one.
The schema components defined in the imported namespace are
referenceable by QName (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>). Only components in the imported namespace
are referenceable in the WSDL 2.0 document. <span id=
"Description-1067" class="test-assertion-tr">For each component in
the imported namespace, a corresponding <a href=
"#component-ElementDeclaration">Element Declaration</a> component
or <a href="#component-TypeDefinition">Type Definition</a>
component MUST appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
property respectively of the <a href=
"#component-Description">Description</a> component corresponding to
the WSDL document that imports the schema, or that imports directly
or indirectly a WSDL document that imports the schema.<sup><a href=
"#Description-1067-summary" title=
"Link to assertion Description-1067 summary">†</a></sup></span>
<span id="Description-1068" class="test-assertion-tr">Schema
components not in an imported namespace MUST NOT appear in the
{<a href="#property-Description.elementdeclarations">element
declarations</a>} or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
properties.<sup><a href="#Description-1068-summary" title=
"Link to assertion Description-1068 summary">†</a></sup></span></p>
<p>A child <em>element information item</em> of the
<code>types</code> <em>element information item</em> is defined
with the Infoset properties as follows:</p>
<ul>
<li>
<p>A [local name] of "import".</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/2001/XMLSchema".</p>
</li>
<li>
<p>One or two <em>attribute information item</em>s as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>namespace</code> <em>attribute information
item</em> as described below.</p>
</li>
<li>
<p>An OPTIONAL <code>schemaLocation</code> <em>attribute
information item</em> as described below.</p>
</li>
</ul>
</li>
</ul>
<div class="div4">
<h5><a name="namespace-attribute" id=
"namespace-attribute"></a>3.1.1.1 <code>namespace</code>
<em>attribute information item</em></h5>
<p>The <code>namespace</code> <em>attribute information item</em>
defines the namespace of the element declarations and type
definitions imported from the referenced schema. <span id=
"Schema-1069" class="test-assertion-tr">The referenced schema MUST
contain a <code>targetNamespace</code> <em>attribute information
item</em> on its <code>xs:schema</code> <em>element information
item</em>.<sup><a href="#Schema-1069-summary" title=
"Link to assertion Schema-1069 summary">†</a></sup></span>
<span id="Schema-1070" class="test-assertion-tr">The value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the <code>xs:schema</code> <em>element information item</em> of an
imported schema MUST equal the value of the <code>namespace</code>
of the <code>import</code> <em>element information item</em> in the
importing WSDL 2.0 document.<sup><a href="#Schema-1070-summary"
title="Link to assertion Schema-1070 summary">†</a></sup></span>
Note that a WSDL 2.0 document must not import a schema that does
not have a <code>targetNamespace</code> <em>attribute information
item</em> on its <code>xs:schema</code> <em>element information
item</em>. Such schemas must first be included (using
<code>xs:include</code>) in a schema that contains a
<code>targetNamespace</code> <em>attribute information item</em> on
its <code>xs:schema</code> <em>element information item</em>, which
can then be either imported or inlined in the WSDL 2.0
document.</p>
<p>The <code>namespace</code> <em>attribute information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of namespace</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>namespace</code> <em>attribute information
item</em> is <em>xs:anyURI</em>.</p>
</div>
<div class="div4">
<h5><a name="schemaLocation-attribute" id=
"schemaLocation-attribute"></a>3.1.1.2 <code>schemaLocation</code>
<em>attribute information item</em></h5>
<p>The <code>schemaLocation</code> <em>attribute information
item</em>, if present, provides a hint to the XML Schema processor
as to where the schema may be located. Caching and cataloging
technologies may provide better information than this hint. The
<code>schemaLocation</code> <em>attribute information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of schemaLocation.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The type of the <code>schemaLocation</code> <em>attribute
information item</em> is <em>xs:anyURI.</em></p>
<p>Every QName reference must resolve (see <a href=
"#qnameres"><strong>2.17 QName resolution</strong></a>). Note that,
when resolving QNames references for schema definitions, the
namespace must be imported by the referring WSDL 2.0 document (see
<a href="#xsd-types"><strong>3.1 Using W3C XML Schema Definition
Language</strong></a>).</p>
</div>
</div>
<div class="div3">
<h4><a name="inlining-xsd" id="inlining-xsd"></a>3.1.2 Inlining XML
Schema</h4>
<p>Inlining an XML schema uses the existing top-level
<code>xs:schema</code> <em>element information item</em> defined by
XML Schema [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>]. Conceptually, inlining can be viewed as
simply cutting and pasting an existing schema document to a
location inside the types <em>element information item</em>.</p>
<p>The schema components defined and declared in the inlined schema
document are referenceable by QName (see <a href=
"#qnameres"><strong>2.17 QName resolution</strong></a>). Only
components defined and declared in the schema itself and components
included by it via <code>xs:include</code> are referenceable.
<span id="Description-1071" class="test-assertion-tr">For each
component defined and declared in the inlined schema document or
included by <code>xs:include</code>, a corresponding <a href=
"#component-ElementDeclaration">Element Declaration</a> component
or <a href="#component-TypeDefinition">Type Definition</a>
component MUST appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
property respectively of the <a href=
"#component-Description">Description</a> component corresponding to
the WSDL document that contains the schema, or that imports
directly or indirectly a WSDL document that contains the
schema.<sup><a href="#Description-1071-summary" title=
"Link to assertion Description-1071 summary">†</a></sup></span><span id="Description-1072"
class="test-assertion-tr">Schema components not defined or declared
in the inlined schema document or included by
<code>xs:include</code> MUST NOT appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
properties.<sup><a href="#Description-1072-summary" title=
"Link to assertion Description-1072 summary">†</a></sup></span></p>
<p>Note that components in the namespace that the inline schema
imports via <code>xs:import</code> are not automatically
referenceable from the WSDL 2.0 document that contains the inline
schema. If the namespace referenced in a QName is contained in an
inline schema, it MAY be imported without a
<code>schemaLocation</code> attribute, so long as the inline schema
has been resolved in the current component model.</p>
<p>Note that components defined in an inlined XML schema are not
automatically referenceable within the WSDL 2.0 document that
imported (using <code>wsdl:import</code>) the WSDL 2.0 document
that inlines the schema (see <a href="#imports"><strong>4.2
Importing Descriptions</strong></a> for more details). For this
reason, it is recommended that XML schema documents intended to be
shared across several WSDL 2.0 documents be placed in separate XML
schema documents and imported using <code>xs:import</code>, rather
than inlined inside a WSDL 2.0 document.</p>
<p>Inside an inlined XML schema, the <code>xs:import</code> and
<code>xs:include</code> <em>element information item</em>s MAY be
used to refer to other XML schemas inlined in the same or other
WSDL 2.0 document, provided that an appropriate value, such as a
fragment identifier (see [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>] 4.3.1) is specified for their
<code>schemaLocation</code> <em>attribute information item</em>s.
For <code>xs:import</code>, the <code>schemaLocation</code>
attribute is not required so long as the namespace has been
resolved in the current component model. The semantics of such
<em>element information item</em>s are governed solely by the XML
Schema specification [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>].</p>
<p>A WSDL 2.0 document MAY inline two or more schemas from the same
<code>targetNamespace</code>. For example, two or more inlined
schemas can have the same <code>targetNamespace</code> provided
that they do not define the same elements or types. <span id=
"Schema-1073" class="test-assertion-tr">A WSDL 2.0 document MUST
NOT define the same element or type in more than one inlined
schema.<sup><a href="#Schema-1073-summary" title=
"Link to assertion Schema-1073 summary">†</a></sup></span> Note
that it is the responsibility of the underlying XML Schema
processor to sort out a coherent set of schema components.</p>
<p>The <code>xs:schema</code> <em>element information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of schema.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/2001/XMLSchema".</p>
</li>
<li>
<p>Additional OPTIONAL <em>attribute information item</em>s as
specified for the <code>xs:schema</code> <em>element information
item</em> by the XML Schema specification.</p>
</li>
<li>
<p>Zero or more child <em>element information item</em>s as
specified for the <code>xs:schema</code> <em>element information
item</em> by the XML Schema specification.</p>
</li>
</ul>
</div>
<div class="div3">
<h4><a name="references-definitions" id=
"references-definitions"></a>3.1.3 References to Element
Declarations and Type Definitions</h4>
<p>Whether inlined or imported, the global element declarations
present in a schema are referenceable from an <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> or <a href="#component-InterfaceFault">Interface
Fault</a> component. Similarly, regardless of whether they are
inlined or imported, the global type definitions present in a
schema are referenceable from other components.</p>
<p>A named, global <code>xs:element</code> declaration is
referenceable from the <code>element</code> <em>attribute
information item</em> of an <code>input</code>, <code>output</code>
(see <a href="#InterfaceMessageReference_XMLRep"><strong>2.5.2 XML
Representation of Interface Message Reference
Component</strong></a>) or <code>fault</code> <em>element
information item</em> (see <a href=
"#InterfaceFault_XMLRep"><strong>2.3.2 XML Representation of
Interface Fault Component</strong></a>). The QName of the element
declaration is constructed from the <code>targetNamespace</code> of
the schema and the value of the <code>name</code> <em>attribute
information item</em> of the <code>xs:element</code> <em>element
information item</em>. Note that the <code>element</code>
<em>attribute information item</em> cannot refer to a global
<code>xs:simpleType</code> or <code>xs:complexType</code>
definition, since these are in a different symbol space than global
element declarations. If the <code>element</code> <em>attribute
information item</em> erroneously contains the QName of a type
definition then this would result in a failure to resolve the
element declaration.</p>
</div>
</div>
<div class="div2">
<h3><a name="other-types" id="other-types"></a>3.2 Using Other
Schema Languages</h3>
<p>Since it is unreasonable to expect that a single schema language
can be used to describe all possible <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> and <a href="#component-InterfaceFault">Interface
Fault</a> component contents and their constraints, WSDL 2.0 allows
alternate schema languages to be specified via extension elements.
An extension <em>element information item</em> MAY appear under the
<code>types</code> <em>element information item</em> to identify
the schema language employed, and to locate the schema instance
defining the grammar for <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> and <a href="#component-InterfaceFault">Interface
Fault</a> components. Depending upon the schema language used, an
<em>element information item</em> MAY be defined to allow inlining,
if and only if the schema language can be expressed in XML.</p>
<p><span id="Types-1074" class="test-assertion-tr">A specification
of extension syntax for an alternative schema language MUST include
the declaration of an <em>element information item</em>, intended
to appear as a child of the <code>wsdl:types</code> <em>element
information item</em>, which references, names, and locates the
schema instance (an <code>import</code> <em>element information
item</em>).<sup><a href="#Types-1074-summary" title=
"Link to assertion Types-1074 summary">†</a></sup></span> The
extension specification SHOULD, if necessary, define additional
properties of the <a href="#component-Description">Description</a>
component (and extension attributes) to hold the components of the
referenced type system. It is expected that additional extension
attributes for <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> and <a href="#component-InterfaceFault">Interface
Fault</a> components will also be defined, along with a mechanism
for resolving the values of those attributes to a particular
imported type system component.</p>
<p><span id="Schema-1075" class="test-assertion-tr">A specification
of extension syntax for an alternative schema language MUST use a
namespace that is different than the namespace of XML
Schema.<sup><a href="#Schema-1075-summary" title=
"Link to assertion Schema-1075 summary">†</a></sup></span> The
namespace of the alternative schema language is used for
<em>element information item</em>s that are children of the
<code>wsdl:types</code> <em>element information item</em> and for
any extension <em>attribute information item</em>s that appear on
other components. <span id="Schema-1076" class=
"test-assertion-tr">The namespace used for an alternate schema
language MUST be an absolute IRI.<sup><a href=
"#Schema-1076-summary" title=
"Link to assertion Schema-1076 summary">†</a></sup></span></p>
<p>See [<cite><a href="#WSDL2-OTHER-SCHEMA">WSDL 2.0 Alternative
Schema Languages Support</a></cite>] for examples of using other
schema languages. These examples reuse the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component and the
<code>element</code> <em>attribute information item</em>s of the
<code>wsdl:input</code>, <code>wsdl:output</code> and
<code>wsdl:fault</code> <em>element information item</em>s.</p>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>This specification does not define the behavior of a WSDL 2.0
document that uses multiple schema languages for describing type
system components simultaneously.</p>
</div>
</div>
<div class="div2">
<h3><a name="wsdlx-references" id="wsdlx-references"></a>3.3
Describing Messages that Refer to Services and Endpoints</h3>
<p>Web services can exchange messages that refer to other Web
services or Web service endpoints. If the interface or binding of
these referenced services or endpoints are known at description
time, then it may be useful to include this information in the WSDL
2.0 document that describes the Web service. WSDL 2.0 provides two
global <em>attribute information item</em>s,
<code>wsdlx:interface</code> and <code>wsdlx:binding</code> that
may be used to annotate XML Schema components or components from
other type description languages.</p>
<p>WSDL 2.0 defines the use of these global <em>attribute
information item</em>s to annotate XML Schema components that use
the <code>xs:anyURI</code> simple type in an <em>element
information item</em> or <em>attribute information item</em> for
endpoint addresses that correspond to the {<a href=
"#property-Endpoint.address">address</a>} property of the <a href=
"#component-Endpoint">Endpoint</a> component. However, the use of
these global <em>attribute information item</em>s is not limited to
simple types based on <code>xs:anyURI</code>. They may be used for
any other types that are used to refer to Web services or Web
service endpoints, e.g. a WS-Addressing Endpoint Reference
[<cite><a href="#WSA-Core">WSA 1.0 Core</a></cite>]. See the primer
[<cite><a href="#WSDL-PART0">WSDL 2.0 Primer</a></cite>] for more
information and examples.</p>
<div class="div3">
<h4><a name="wsdlx-interface-aii" id=
"wsdlx-interface-aii"></a>3.3.1 <code>wsdlx:interface</code>
<em>attribute information item</em></h4>
<p>WSDL 2.0 provides a global <em>attribute information item</em>
with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>interface</code>.</p>
</li>
<li>
<p>A [namespace name] of " http://www.w3.org/ns/wsdl-extensions
".</p>
</li>
</ul>
<p><span id="Types-1077" class="test-assertion-tr">The type of the
<code>wsdlx:interface</code> <em>attribute information item</em> is
an <em>xs:QName</em> that specifies the {<a href=
"#property-Interface.name">name</a>} property of an <a href=
"#component-Interface">Interface</a> component.<sup><a href=
"#Types-1077-summary" title=
"Link to assertion Types-1077 summary">†</a></sup></span></p>
</div>
<div class="div3">
<h4><a name="wsdlx-binding-aii" id="wsdlx-binding-aii"></a>3.3.2
<code>wsdlx:binding</code> <em>attribute information item</em></h4>
<p>WSDL 2.0 provides a global <em>attribute information item</em>
with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>binding</code>.</p>
</li>
<li>
<p>A [namespace name] of " http://www.w3.org/ns/wsdl-extensions
".</p>
</li>
</ul>
<p><span id="Types-1078" class="test-assertion-tr">The type of the
<code>wsdlx:binding</code> <em>attribute information item</em> is
an <em>xs:QName</em> that specifies the {<a href=
"#property-Binding.name">name</a>} property of a <a href=
"#component-Binding">Binding</a> component.<sup><a href=
"#Types-1078-summary" title=
"Link to assertion Types-1078 summary">†</a></sup></span></p>
</div>
<div class="div3">
<h4><a name="wsdlx-consistency" id="wsdlx-consistency"></a>3.3.3
<code>wsdlx:interface</code> and <code>wsdlx:binding</code>
Consistency</h4>
<p>The <code>wsdlx:interface</code> and <code>wsdlx:binding</code>
attributes may be used either independently or together. <span id=
"Schema-1079" class="test-assertion-tr">If
<code>wsdlx:interface</code> and <code>wsdlx:binding</code> are
used together then they MUST satisfy the same consistency rules
that apply to the {<a href=
"#property-Service.interface">interface</a>} property of a <a href=
"#component-Service">Service</a> component and the {<a href=
"#property-Endpoint.binding">binding</a>} property of a nested
<a href="#component-Endpoint">Endpoint</a> component, that is
either the binding refers the interface of the service or the
binding refers to no interface.<sup><a href="#Schema-1079-summary"
title=
"Link to assertion Schema-1079 summary">†</a></sup></span></p>
</div>
<div class="div3">
<h4><a name="wsdlx-xsanyuri" id="wsdlx-xsanyuri"></a>3.3.4 Use of
<code>wsdlx:interface</code> and <code>wsdlx:binding</code> with
<code>xs:anyURI</code></h4>
<p><code>wsdlx:interface</code> and <code>wsdlx:binding</code> are
used to describe <em>element information item</em>s and
<em>attribute information item</em>s whose type is
<code>xs:anyURI</code> or a restriction of it, as well messages
that contain the {<a href="#property-Endpoint.address">address</a>}
property of an <a href="#component-Endpoint">Endpoint</a>. This is
accomplished by including the <code>wsdlx:interface</code> and/or
<code>wsdlx:binding</code> <em>attribute information item</em> in
the <code>xs:element</code>, <code>xs:simpleType</code>, or
<code>xs:attribute</code> <em>element information item</em> of the
corresponding XML Schema component.</p>
</div>
</div>
</div>
<div class="div1">
<h2><a name="modularize" id="modularize"></a>4. Modularizing WSDL
2.0 descriptions</h2>
<p>WSDL 2.0 provides two mechanisms for modularizing WSDL 2.0
descriptions. These mechanisms help to make Web service
descriptions clearer by allowing separation of the various
components of a description. Such separation can be performed
according to the level of abstraction of a given set of components,
or according to the namespace affiliation required of a given set
of components or even according to some other grouping such as
application applicability.</p>
<p>Both mechanisms work at the level of WSDL 2.0 components and NOT
at the level of XML Information Sets or XML 1.0 serializations.</p>
<div class="div2">
<h3><a name="includes" id="includes"></a>4.1 Including
Descriptions</h3>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;<strong>include</strong>
location="<em>xs:anyURI</em>" &gt;
&lt;documentation /&gt;*
&lt;/<strong>include</strong>&gt;
&lt;/description&gt;
</pre></div>
<p>The WSDL 2.0 <code>include</code> <em>element information
item</em> allows separating the different components of a service
definition, belonging to the same target namespace, into
independent WSDL 2.0 documents.</p>
<p>The WSDL 2.0 <code>include</code> <em>element information
item</em> is modeled after the XML Schema <code>include</code>
<em>element information item</em> (see [<cite><a href=
"#XMLSchemaP1">XML Schema: Structures</a></cite>], section 4.2.3
"References to schema components in the same namespace").
Specifically, it can be used to include components from WSDL 2.0
descriptions that share a target namespace with the including
description. Components in the transitive closure of the included
WSDL 2.0 documents become part of the <a href=
"#component-Description">Description</a> component of the including
WSDL 2.0 document. The included components can be referenced by
QName. Note that because all WSDL 2.0 descriptions have a target
namespace, no-namespace includes (sometimes known as “chameleon
includes”) never occur in WSDL 2.0.</p>
<p>A mutual include is the direct inclusion by one WSDL 2.0
document of another WSDL 2.0 document which includes the first
document. A circular include achieves the same effect with greater
indirection (for example, A includes B, B includes C, and C
includes A). Multiple inclusion of a single WSDL 2.0 document
resolves to a single set of components, as if the document was
included only once. Mutual, multiple, and circular includes are
explicitly permitted, and do not represent multiple redefinitions
of the same components.</p>
<p>The <code>include</code> <em>element information item</em>
has:</p>
<ul>
<li>
<p>A [local name] of <code>include</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>location</code> <em>attribute information
item</em> as described below in <a href=
"#include_location_attribute"><strong>4.1.1 location attribute
information item with include [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em> amongst its
[children], as follows:</p>
<ul>
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
</ul>
<div class="div3">
<h4><a name="include_location_attribute" id=
"include_location_attribute"></a>4.1.1 <code>location</code>
<em>attribute information item</em> with <code>include</code>
[owner element]</h4>
<p>The <code>location</code> <em>attribute information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>location</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>A <code>location</code> <em>attribute information item</em> is
of type <code>xs:anyURI</code>. Its actual value is the location of
some information about the namespace identified by the
<code>targetNamespace</code> <em>attribute information item</em> of
the containing <code>description</code> <em>element information
item</em>.</p>
<p><span id="Include-1080" class="test-assertion-tr">The IRI
indicated by <code>location</code> MUST resolve to a WSDL 2.0
document.<sup><a href="#Include-1080-summary" title=
"Link to assertion Include-1080 summary">†</a></sup></span> (see
<a href="#wsdllocation"><strong>7. Locating WSDL 2.0
Documents</strong></a>)</p>
<p><span id="Include-1081" class="test-assertion-tr">The actual
value of the <code>targetNamespace</code> <em>attribute information
item</em> of the included WSDL 2.0 document MUST match the actual
value of the <code>targetNamespace</code> <em>attribute information
item</em> of the <code>description</code> <em>element information
item</em> which is the [parent] of the <code>include</code>
<em>element information item</em>.<sup><a href=
"#Include-1081-summary" title=
"Link to assertion Include-1081 summary">†</a></sup></span></p>
</div>
</div>
<div class="div2">
<h3><a name="imports" id="imports"></a>4.2 Importing
Descriptions</h3>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description&gt;
&lt;<strong>import</strong>
namespace="<em>xs:anyURI</em>" location="<em>xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
&lt;/<strong>import</strong>&gt;
&lt;/description&gt;
</pre></div>
<p>Every top-level WSDL 2.0 component is associated with a
namespace. Every WSDL 2.0 document carries a
<code>targetNamespace</code> <em>attribute information item</em> on
its <code>wsdl:description</code> <em>element information
item</em>. This attribute associates the document with a target
namespace, which consequently also becomes the namespace of each
top-level WSDL 2.0 component defined in that document. Any
namespace other than the document's target namespace is referred to
as a <em>foreign namespace</em>. Any component associated with a
foreign namespace is referred to as a <em>foreign component</em>.
This section describes the syntax and mechanisms by which
references may be made from within a WSDL 2.0 document to foreign
components. In addition to this syntax, there is an optional
facility for suggesting the IRI of a WSDL 2.0 document that
contains definitions of foreign components.</p>
<p>The WSDL 2.0 <code>import</code> <em>element information
item</em> is modeled after the XML Schema <code>import</code>
<em>element information item</em> (see [<cite><a href=
"#XMLSchemaP1">XML Schema: Structures</a></cite>], section 4.2.3
"References to schema components across namespaces"). Specifically,
it can be used to import WSDL 2.0 components from a foreign
namespace. The WSDL 2.0 <code>import</code> <em>element information
item</em> identifies a foreign namespace. The presence of a WSDL
2.0 <code>import</code> <em>element information item</em> signals
that the WSDL 2.0 document may contain references to foreign
components. The <code>wsdl:import</code> <em>element information
item</em> is therefore like a forward declaration for foreign
namespaces.</p>
<p><span id="Import-1082" class="test-assertion-tr">As with XML
schema, any WSDL 2.0 document that references a foreign component
MUST have a <code>wsdl:import</code> <em>element information
item</em> for the associated foreign namespace (but which does not
necessarily provide a <code>location</code> <em>attribute
information item</em> that identifies the WSDL 2.0 document in
which the referenced component is defined).<sup><a href=
"#Import-1082-summary" title=
"Link to assertion Import-1082 summary">†</a></sup></span> In other
respects, the visibility of components is pervasive: if two WSDL
2.0 documents import the same namespace, then they will have access
to the same components from the imported namespace (i.e. regardless
of which, if any, <code>location</code> <em>attribute information
item</em> values are provided on the respective
<code>wsdl:import</code> <em>element information item</em>s.)</p>
<p>Using the <code>wsdl:import</code> <em>element information
item</em> is a necessary condition for making foreign components
available to a WSDL 2.0 document. That is, a WSDL 2.0 document can
only refer to foreign components, if it contains an
<code>wsdl:import</code> <em>element information item</em> for the
associated foreign namespace.</p>
<p><span id="Import-1083" class="test-assertion-tr">If a WSDL 2.0
document contains more than one <code>wsdl:import</code>
<em>element information item</em> for a given value of the
<code>namespace</code> <em>attribute information item</em>, then
they MUST provide different values for the <code>location</code>
<em>attribute information item</em>.<sup><a href=
"#Import-1083-summary" title=
"Link to assertion Import-1083 summary">†</a></sup></span>
Repeating the <code>wsdl:import</code> <em>element information
item</em> for the same <code>namespace</code> value MAY be used as
a way to provide alternate locations to find information about a
given namespace.</p>
<p>Furthermore, this specification DOES NOT require the
<code>location</code> <em>attribute information item</em> to be
dereferencable. When it is not dereferencable, no information about
the imported namespace is provided by that <code>wsdl:import</code>
<em>element information item</em>. It is possible that such lack of
information can cause QNames in other parts of a WSDL 2.0 <a href=
"#component-Description">Description</a> component to become broken
references (see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>). Such broken references are not ascribed
to the <code>wsdl:import</code> <em>element information item</em>,
but rather are failures of the QName resolution requirements which
must be detected as described in <a href="#qnameres"><strong>2.17
QName resolution</strong></a>.</p>
<p>The <code>import</code> <em>element information item</em> has
the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>import</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>One or more <em>attribute information item</em>s amongst its
[attributes] as follows:</p>
<ul>
<li>
<p>A REQUIRED <code>namespace</code> <em>attribute information
item</em> as described below in <a href=
"#import_namespace_attribute"><strong>4.2.1 namespace attribute
information item</strong></a>.</p>
</li>
<li>
<p>An OPTIONAL <code>location</code> <em>attribute information
item</em> as described below in <a href=
"#import_location_attribute"><strong>4.2.2 location attribute
information item with import [owner element]</strong></a>.</p>
</li>
<li>
<p>Zero or more namespace qualified <em>attribute information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
<li>
<p>Zero or more <em>element information item</em>s amongst its
[children], as follows:</p>
<ul>
<li>
<p>Zero or more <code>documentation</code> <em>element information
item</em>s (see <a href="#eii-documentation"><strong>5.
Documentation</strong></a>).</p>
</li>
<li>
<p>Zero or more namespace-qualified <em>element information
item</em>s whose [namespace name] is NOT
"http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
</li>
</ul>
<div class="div3">
<h4><a name="import_namespace_attribute" id=
"import_namespace_attribute"></a>4.2.1 <code>namespace</code>
<em>attribute information item</em></h4>
<p>The <code>namespace</code> <em>attribute information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>namespace</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The <code>namespace</code> <em>attribute information item</em>
is of type <code>xs:anyURI</code>. Its actual value indicates that
the containing WSDL 2.0 document MAY contain qualified references
to WSDL 2.0 components in that namespace (via one or more prefixes
declared with namespace declarations in the normal way). <span id=
"Import-1084" class="test-assertion-tr">This value MUST NOT match
the actual value of <code>targetNamespace</code> <em>attribute
information item</em> in the enclosing WSDL 2.0
document.<sup><a href="#Import-1084-summary" title=
"Link to assertion Import-1084 summary">†</a></sup></span>&#160;
<span id="Import-1085" class="test-assertion-tr">If the location
attribute in the <code>import</code> <em>element information
item</em> is dereferencable, then it MUST reference a WSDL 2.0
document.<sup><a href="#Import-1085-summary" title=
"Link to assertion Import-1085 summary">†</a></sup></span>
<span id="Import-1086" class="test-assertion-tr">If the
<code>location</code> <em>attribute information item</em> of the
<code>import</code> <em>element information item</em> is
dereferencable, then the actual value of the <code>namespace</code>
<em>attribute information item</em> MUST be identical to the actual
value of the <code>targetNamespace</code> <em>attribute information
item</em> of the referenced WSDL 2.0 document (see <a href=
"#wsdllocation"><strong>7. Locating WSDL 2.0
Documents</strong></a>).<sup><a href="#Import-1086-summary" title=
"Link to assertion Import-1086 summary">†</a></sup></span></p>
</div>
<div class="div3">
<h4><a name="import_location_attribute" id=
"import_location_attribute"></a>4.2.2 <code>location</code>
<em>attribute information item</em> with <code>import</code> [owner
element]</h4>
<p>The <code>location</code> <em>attribute information item</em>
has the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>location</code>.</p>
</li>
<li>
<p>A [namespace name] which has no value.</p>
</li>
</ul>
<p>The <code>location</code> <em>attribute information item</em> is
of type <code>xs:anyURI</code>. Its actual value, if present, gives
a hint as to where a serialization of a WSDL 2.0 document with
definitions for the imported namespace can be found.</p>
<p>The <code>location</code> <em>attribute information item</em> is
optional. This allows WSDL 2.0 components to be constructed from
information other than an XML 1.0 serialization of a WSDL 2.0
document. It also allows the development of WSDL 2.0 processors
that have <em>a prior</em> (i.e., built-in) knowledge of certain
namespaces.</p>
</div>
</div>
<div class="div2">
<h3><a name="extensions-and-modules" id=
"extensions-and-modules"></a>4.3 Extensions</h3>
<p><span id="ImportInclude-1087" class="test-assertion-tr">The
semantics of an extension MUST NOT depend on how components are
brought into a component model instance via &lt;import&gt; or
&lt;include&gt;. <sup><a href="#ImportInclude-1087-summary" title=
"Link to assertion ImportInclude-1087 summary">†</a></sup></span>
That is, the components that are defined by a WSDL 2.0 document are
determined by the contents of the document, EXCEPT for the
resolution of references to other components that may be defined in
other documents, AND any further processing, as mandated by the
extension specification, that depends on such references having
been resolved to the actual components.</p>
<p>This restriction on the behavior of extensions permits WSDL 2.0
documents to be flexibly modularized and efficiently processed. In
contrast, note that the so-called chameleon include mechanism of
XML Schema, which allows a no-namespace schema to be included in a
schema document that has a namespace, violates this restriction
since the namespace of the included XML Schema components is
determined by the including XML Schema document (see 4.2.1
Assembling a schema for a single target namespace from multiple
schema definition documents in [<cite><a href="#XMLSchemaP1">XML
Schema: Structures</a></cite>]).</p>
</div>
</div>
<div class="div1">
<h2><a name="eii-documentation" id="eii-documentation"></a>5.
Documentation</h2>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;<strong>documentation</strong>&gt;
[<em>extension elements</em>]*
&lt;/<strong>documentation</strong>&gt;
</pre></div>
<p>WSDL 2.0 uses the optional <code>documentation</code>
<em>element information item</em> as a container for human readable
or machine processable documentation. The content of the
<em>element information item</em> is arbitrary <em>character
information items</em> and <em>element information item</em>s
("mixed" content in XML Schema [<cite><a href="#XMLSchemaP1">XML
Schema: Structures</a></cite>]). The <code>documentation</code>
<em>element information item</em> is allowed inside any WSDL 2.0
<em>element information item</em>.</p>
<p>Like other <em>element information item</em>s in the
"http://www.w3.org/ns/wsdl" namespace, the
<code>documentation</code> <em>element information item</em> allows
qualified <em>attribute information item</em>s whose [namespace
name] is not "http://www.w3.org/ns/wsdl". The <code>xml:lang</code>
attribute (see [<cite><a href="#XML10">XML 1.0</a></cite>]) MAY be
used to indicate the language used in the contents of the
<code>documentation</code> <em>element information item</em>.</p>
<p>The <code>documentation</code> <em>element information item</em>
has:</p>
<ul>
<li>
<p>A [local name] of <code>documentation</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
<li>
<p>Zero or more <em>attribute information item</em>s in its
[attributes] property.</p>
</li>
<li>
<p>Zero or more child <em>element information item</em>s in its
[children] property.</p>
</li>
<li>
<p>Zero or more <em>character information item</em>s in its
[children] property.</p>
</li>
</ul>
</div>
<div class="div1">
<h2><a name="language-extensibility" id=
"language-extensibility"></a>6. Language Extensibility</h2>
<p>The schema for WSDL 2.0 has a two-part extensibility model based
on namespace-qualified elements and attributes. An extension is
identified by the QName consisting of its namespace IRI and its
element or attribute name. <span id="Extension-1088" class=
"test-assertion-tr">The meaning of an extension SHOULD be defined
(directly or indirectly) in a document that is available at its
namespace IRI.<sup><a href="#Extension-1088-summary" title=
"Link to assertion Extension-1088 summary">†</a></sup></span></p>
<div class="div2">
<h3><a name="eii-extensibility" id="eii-extensibility"></a>6.1
Element-based Extensibility</h3>
<p>WSDL 2.0 allows extensions to be defined in terms of <em>element
information item</em>s. Where indicated herein, WSDL 2.0 allows
namespace-qualified <em>element information item</em>s whose
[namespace name] is NOT "http://www.w3.org/ns/wsdl" to appear among
the [children] of specific <em>element information item</em>s whose
[namespace name] is "http://www.w3.org/ns/wsdl". Such <em>element
information item</em>s MAY be used to annotate WSDL 2.0 constructs
such as interface, operation, etc.</p>
<p>It is expected that extensions will add to the existing
properties of components in the component model. The specification
for an extension <em>element information item</em> should include
definitions of any such properties and the mapping from the XML
representation of the extension to the properties in the component
model.</p>
<p>The WSDL 2.0 schema defines a base type for use by extension
elements. <a href="#exttype">Example 6-1</a> shows the type
definition. The use of this type as a base type is optional.</p>
<div class="exampleOuter">
<p style="text-align: left" class="exampleHead"><a name="exttype"
id="exttype"></a><em><span>Example 6-1.</span> Base type for
extension elements</em></p>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;xs:complexType name='ExtensionElement' abstract='true' &gt;
&lt;xs:attribute ref='wsdl:required' use='optional' /&gt;
&lt;/xs:complexType&gt;
</pre></div>
</div>
<p>Extension elements are commonly used to specify some
technology-specific binding. They allow innovation in the area of
network and message protocols without having to revise the base
WSDL 2.0 specification. WSDL 2.0 recommends that specifications
defining such protocols also define any necessary WSDL 2.0
extensions used to describe those protocols or formats.</p>
<div class="div3">
<h4><a name="mandatoryext" id="mandatoryext"></a>6.1.1 Mandatory
extensions</h4>
<p>Extension elements can be marked as mandatory by annotating them
with a <code>wsdl:required</code> <em>attribute information
item</em> (see <a href="#required-aii"><strong>6.1.2 required
attribute information item</strong></a>) with a value of "true". A
mandatory extension is an extension that MAY change the meaning of
the element to which it is attached, such that the meaning of that
element is no longer governed by this specification. Instead, the
meaning of an element containing a mandatory extension is governed
by the meaning of that extension. Thus, the definition of the
element's meaning is <em>delegated</em> to the specification that
defines the extension.</p>
<p><span id="Extensibility-1089" class="test-assertion-tr">An
extension that is NOT marked as mandatory MUST NOT invalidate the
meaning of any part of a WSDL 2.0 document.<sup><a href=
"#Extensibility-1089-summary" title=
"Link to assertion Extensibility-1089 summary">†</a></sup></span>
Thus, a NON-mandatory extension merely provides additional
description of capabilities of the service. This specification does
not provide a mechanism to mark extension attributes as being
required. Therefore, all extension attributes are
NON-mandatory.</p>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>A mandatory extension is considered mandatory because it has the
ability to change the meaning of the element to which it is
attached. Thus, the meaning of the element may not be fully
understood without understanding the attached extension. A
NON-mandatory extension, on the other hand, can be safely ignored
without danger of misunderstanding the rest of the WSDL 2.0
document.</p>
</div>
<p><span id="Extensibility-1090" class="test-assertion-tr">If a
WSDL 2.0 document declares an extension as optional (i.e.,
NON-mandatory), then the Web service MUST NOT assume that the
client supports that extension <em>unless</em> the Web service
knows (through some other means) that the client has in fact
elected to engage and support that extension.<sup><a href=
"#Extensibility-1090-summary" title=
"Link to assertion Extensibility-1090 summary">†</a></sup></span></p>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>A key purpose of an extension is to formally indicate (i.e., in
a machine-processable way) that a particular feature or convention
is supported or required. This enables toolkits that understand the
extension to engage it automatically, while toolkits that do not
yet understand a required extension can possibly bring it to the
attention of an operator for manual support.</p>
<p>If a Web service requires a client to follow a particular
convention that is likely to be automatable in WSDL 2.0 toolkits,
then that convention SHOULD be indicated in the WSDL 2.0 document
as a <code>wsdl:required</code> extension, rather than just being
conveyed out of band, even if that convention is not currently
implemented in WSDL 2.0 toolkits.</p>
<p>This practice will help prevent interoperability problems that
could arise if one toolkit requires a particular convention that is
not indicated in the WSDL 2.0 document, while another toolkit does
not realize that that convention is required. It will also help
facilitate future automatic processing by WSDL 2.0 toolkits.</p>
</div>
<p>On the other hand, a client MAY engage an extension that is
declared as optional in the WSDL 2.0 document. <span id=
"Extensibility-1091" class="test-assertion-tr">Therefore, the Web
service MUST support every extension that is declared as optional
in the WSDL 2.0 document, in addition to supporting every extension
that is declared as mandatory.<sup><a href=
"#Extensibility-1091-summary" title=
"Link to assertion Extensibility-1091 summary">†</a></sup></span></p>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>If finer-grain, direction-sensitive control of extensions is
desired, then such extensions may be designed in a
direction-sensitive manner (from the client or from the Web
service) so that either direction may be separately marked required
or optional. For example, instead of defining a single extension
that governs both directions, two extensions could be defined -one
for each direction.</p>
</div>
<p>Validity of a WSDL 2.0 document can only be assessed within the
context of a set of supported extensions. A WSDL 2.0 document that
contains a required but unsupported extension is invalid with
respect to that set of supported extensions.</p>
</div>
<div class="div3">
<h4><a name="required-aii" id="required-aii"></a>6.1.2
<code>required</code> <em>attribute information item</em></h4>
<p>WSDL 2.0 provides a global <em>attribute information item</em>
with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>required</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl".</p>
</li>
</ul>
<p>The type of the <code>required</code> <em>attribute information
item</em> is <em>xs:boolean</em>. Its default value is "false"
(hence extensions are NOT required by default).</p>
</div>
</div>
<div class="div2">
<h3><a name="aii-extensibility" id="aii-extensibility"></a>6.2
Attribute-based Extensibility</h3>
<p>WSDL 2.0 allows qualified <em>attribute information item</em>s
whose [namespace name] is NOT "http://www.w3.org/ns/wsdl" to appear
on any <em>element information item</em> whose namespace name IS
"http://www.w3.org/ns/wsdl". Such <em>attribute information
item</em>s can be used to annotate WSDL 2.0 constructs such as
interfaces, bindings, etc.</p>
<p>WSDL 2.0 does not provide a mechanism for marking extension
<em>attribute information item</em>s as mandatory.</p>
</div>
<div class="div2">
<h3><a name="extensibility-semantics" id=
"extensibility-semantics"></a>6.3 Extensibility Semantics</h3>
<p>As indicated above, it is expected that the presence of
extension elements and attributes will result in additional
properties appearing in the component model.</p>
<p>The presence of an optional extension element or attribute MAY
therefore augment the semantics of a WSDL 2.0 document in ways that
do not invalidate the existing semantics. However, the presence of
a mandatory extension element MAY alter the semantics of a WSDL 2.0
document in ways that invalidate the existing semantics.</p>
<p>Extension elements SHOULD NOT alter the existing semantics in
ways that are likely to confuse users.</p>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>Note that, however, once the client and service both know that
an optional extension has been engaged (because the service has
received a message explicitly engaging that extension, for
example), then the semantics of that extension supersede what the
WSDL 2.0 document indicated. For example, the WSDL 2.0 document may
have specified an XML message schema to be used, but also indicated
an optional security extension that encrypts the messages. If the
security extension is engaged, then the encrypted messages will no
longer conform to the specified message schema (until they are
decrypted).</p>
</div>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>Authors of extension elements should make sure to include in the
specification of these elements a clear statement of the
requirements for document conformance (see <a href=
"#markup"><strong>1.3 Document Conformance</strong></a>).</p>
</div>
<div class="note">
<p class="prefix"><strong>Note:</strong></p>
<p>Authors of extension elements that may manifest as properties of
the <a href="#component-Description">Description</a> component
should be aware of the impact of imports on their extensions, or of
their extensions on imports. It is not possible, within the
component model, to define extensions that have an effective scope
equal to the scope of a containing file. Extensions that modify the
behavior of the components contained in a description may therefore
unexpectedly modify the behavior of components in imported
descriptions as well, unless proper care is taken.</p>
</div>
</div>
</div>
<div class="div1">
<h2><a name="wsdllocation" id="wsdllocation"></a>7. Locating WSDL
2.0 Documents</h2>
<p>A <em>WSDL 2.0 document</em> is a <code>description</code>
<em>element information item</em> that is either the document root
of an XML document or an element within an XML document. The
<em>location</em> of a WSDL 2.0 MAY therefore be specified by an
IRI for an XML resource whose document root is a
<code>description</code> <em>element information item</em> or an
IRI-reference for a <code>description</code> <em>element
information item</em> within an XML resource.</p>
<p>As an XML vocabulary, WSDL 2.0 documents, WSDL2.0 document
fragments or QName references to WSDL 2.0 components MAY appear
within other XML documents. This specification defines a global
attribute, <code>wsdlLocation</code>, to help with QName resolution
(see <a href="#qnameres"><strong>2.17 QName
resolution</strong></a>). This attribute allows an element that
contains such references to be annotated to indicate where the WSDL
2.0 documents for one or more namespaces can be found. In
particular, this attribute is expected to be useful when using
service references in message exchanges.</p>
<p>The <code>wsdlLocation</code> global attribute is defined in the
namespace "http://www.w3.org/ns/wsdl-instance" (hereafter referred
to as "wsdli:wsdlLocation", for brevity). This attribute MAY appear
on any XML element which allows attributes from other namespaces to
occur. <span id="Location-1092" class="test-assertion-tr">It MUST
NOT appear on a <code>wsdl:description</code> element or any of its
children/descendants.<sup><a href="#Location-1092-summary" title=
"Link to assertion Location-1092 summary">†</a></sup></span></p>
<p>A normative XML Schema [<cite><a href="#XMLSchemaP1">XML Schema:
Structures</a></cite>], [<cite><a href="#XMLSchemaP2">XML Schema:
Datatypes</a></cite>] document for the
"http://www.w3.org/ns/wsdl-instance" namespace can be found at
<a href=
"http://www.w3.org/ns/wsdl-instance">http://www.w3.org/ns/wsdl-instance</a>.</p>
<div class="div2">
<h3><a name="wsdlLocation-aii" id="wsdlLocation-aii"></a>7.1
<code>wsdli:wsdlLocation</code> <em>attribute information
item</em></h3>
<p>WSDL 2.0 provides a global <em>attribute information item</em>
with the following Infoset properties:</p>
<ul>
<li>
<p>A [local name] of <code>wsdlLocation</code>.</p>
</li>
<li>
<p>A [namespace name] of "http://www.w3.org/ns/wsdl-instance".</p>
</li>
</ul>
<p>The type of the <code>wsdlLocation</code> <em>attribute
information item</em> is a list <em>xs:anyURI</em>. <span id=
"Location-1093" class="test-assertion-tr">Its actual value MUST be
a list of pairs of IRIs; where the first IRI of a pair, which MUST
be an absolute IRI as defined in [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>], indicates a WSDL 2.0 (or 1.1) namespace name,
and, the second a hint as to the location of a WSDL 2.0 document
defining WSDL 2.0 components (or WSDL 1.1 elements [<cite><a href=
"#WSDL11">WSDL 1.1</a></cite>]) for that namespace
name.<sup><a href="#Location-1093-summary" title=
"Link to assertion Location-1093 summary">†</a></sup></span> The
second IRI of a pair MAY be absolute or relative. <span id=
"Location-1094" class="test-assertion-tr">For each pair of IRIs, if
the location IRI of the pair is dereferencable, then it MUST
reference a WSDL 2.0 (or 1.1) document whose target namespace is
the namespace IRI of the pair.<sup><a href="#Location-1094-summary"
title=
"Link to assertion Location-1094 summary">†</a></sup></span></p>
</div>
</div>
<div class="div1">
<h2><a name="conformance" id="conformance"></a>8. Conformance</h2>
<p>This section describes how this specification conforms to other
specifications. This is limited, at present, to the XML Information
Set specification. Refer to <a href="#markup"><strong>1.3 Document
Conformance</strong></a> for a description of the criteria that Web
service description documents must satisfy in order to conform to
this specification.</p>
<div class="div2">
<h3><a name="infoset" id="infoset"></a>8.1 XML Information Set
Conformance</h3>
<p>This specification conforms to the [<cite><a href=
"#XMLInfoSet">XML Information Set</a></cite>]. The following
information items MUST be present in the input Infosets to enable
correct processing of WSDL 2.0 documents:</p>
<ul>
<li>
<p><em>Document Information Items</em> with [<em>children</em>] and
[<em>base URI</em>] properties.</p>
</li>
<li>
<p><em>Element Information Items</em> with [<em>namespace
name</em>], [<em>local name</em>], [<em>children</em>],
[<em>attributes</em>], [<em>base URI</em>] and [<em>parent</em>]
properties.</p>
</li>
<li>
<p><em>Attribute Information Items</em> with [<em>namespace
name</em>], [<em>local name</em>] and [<em>normalized value</em>]
properties.</p>
</li>
<li>
<p><em>Character Information Items</em> with [<em>character
code</em>], [<em>element content whitespace</em>] and
[<em>parent</em>] properties.</p>
</li>
</ul>
</div>
</div>
<div class="div1">
<h2><a name="Syntax-Summary" id="Syntax-Summary"></a>9. XML Syntax
Summary (Non-Normative)</h2>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;description targetNamespace="<em>xs:anyURI</em>" &gt;
&lt;documentation /&gt;*
&lt;import namespace="<em>xs:anyURI</em>" location="<em>xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
&lt;/import&gt;*
&lt;include location="<em>xs:anyURI</em>" &gt;
&lt;documentation /&gt;*
&lt;/include&gt;*
&lt;types&gt;
&lt;documentation /&gt;*
[ &lt;xs:import namespace="<em>xs:anyURI</em>" schemaLocation="<em>xs:anyURI</em>"? /&gt; |
&lt;xs:schema targetNamespace="<em>xs:anyURI</em>"? /&gt; |
<em>other extension elements</em> ]*
&lt;/types&gt;
&lt;interface name="<em>xs:NCName</em>" extends="<em>list of xs:QName</em>"? styleDefault="<em>list of xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
&lt;fault name="<em>xs:NCName</em>" element="<em>union of xs:QName, xs:token</em>"? &gt;
&lt;documentation /&gt;*
&lt;/fault&gt;*
&lt;operation name="<em>xs:NCName</em>" pattern="<em>xs:anyURI</em>"? style="<em>list of xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
&lt;input messageLabel="<em>xs:NCName</em>"? element="<em>union of xs:QName, xs:token</em>"? &gt;
&lt;documentation /&gt;*
&lt;/input&gt;*
&lt;output messageLabel="<em>xs:NCName</em>"? element="<em>union of xs:QName, xs:token</em>"? &gt;
&lt;documentation /&gt;*
&lt;/output&gt;*
&lt;infault ref="<em>xs:QName</em>" messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/infault&gt;*
&lt;outfault ref="<em>xs:QName</em>" messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/outfault&gt;*
&lt;/operation&gt;*
&lt;/interface&gt;*
&lt;binding name="<em>xs:NCName</em>" interface="<em>xs:QName</em>"? type="<em>xs:anyURI</em>" &gt;
&lt;documentation /&gt;*
&lt;fault ref="<em>xs:QName</em>" &gt;
&lt;documentation /&gt;*
&lt;/fault&gt;*
&lt;operation ref="<em>xs:QName</em>" &gt;
&lt;documentation /&gt;*
&lt;input messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/input&gt;*
&lt;output messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/output&gt;*
&lt;infault ref="<em>xs:QName</em>" messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/infault&gt;*
&lt;outfault ref="<em>xs:QName</em>" messageLabel="<em>xs:NCName</em>"? &gt;
&lt;documentation /&gt;*
&lt;/outfault&gt;*
&lt;/operation&gt;*
&lt;/binding&gt;*
&lt;service name="<em>xs:NCName</em>" interface="<em>xs:QName</em>" &gt;
&lt;documentation /&gt;*
&lt;endpoint name="<em>xs:NCName</em>" binding="<em>xs:QName</em>" address="<em>xs:anyURI</em>"? &gt;
&lt;documentation /&gt;*
&lt;/endpoint&gt;+
&lt;/service&gt;*
&lt;/description&gt;
</pre></div>
</div>
<div class="div1">
<h2><a name="References" id="References"></a>10. References</h2>
<div class="div2">
<h3><a name="Normative-References" id=
"Normative-References"></a>10.1 Normative References</h3>
<dl>
<dt class="label"><a name="CHARMOD" id="CHARMOD"></a>[Character
Model for the WWW]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2005/REC-charmod-20050215/">Character Model
for the World Wide Web 1.0: Fundamentals</a></cite>, M. Dürst, F.
Yergeau, R. Ishida, M. Wolf, T. Texin, Editors. W3C Recommendation,
15 February 2005. Latest version available at
http://www.w3.org/TR/charmod/.</dd>
<dt class="label"><a name="RFC2119" id="RFC2119"></a>[IETF RFC
2119]</dt>
<dd><cite><a href="http://www.ietf.org/rfc/rfc2119.txt">Key words
for use in RFCs to Indicate Requirement Levels</a></cite>, S.
Bradner, Author. Internet Engineering Task Force, March 1997.
Available at http://www.ietf.org/rfc/rfc2119.txt.</dd>
<dt class="label"><a name="RFC3023" id="RFC3023"></a>[IETF RFC
3023]</dt>
<dd><cite><a href="http://www.ietf.org/rfc/rfc3023.txt">XML Media
Types</a></cite>, M. Murata, S. St. Laurent, D. Kohn, Authors.
Internet Engineering Task Force, January 2001. Available at
http://www.ietf.org/rfc/rfc3023.txt.</dd>
<dt class="label"><a name="RFC3986" id="RFC3986"></a>[IETF RFC
3986]</dt>
<dd><cite><a href="http://www.ietf.org/rfc/rfc3986.txt">Uniform
Resource Identifiers (URI): Generic Syntax</a></cite>, T.
Berners-Lee, R. Fielding, L. Masinter, Authors. Internet
Engineering Task Force, January 2005. Available at
http://www.ietf.org/rfc/rfc3986.txt.</dd>
<dt class="label"><a name="RFC3987" id="RFC3987"></a>[IETF RFC
3987]</dt>
<dd><cite><a href=
"http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
Identifiers (IRIs)</a></cite>, M. Duerst, M. Suignard, Authors.
Internet Engineering Task Force, January 2005. Available at
http://www.ietf.org/rfc/rfc3987.txt.</dd>
<dt class="label"><a name="XLink" id="XLink"></a>[XLink 1.0]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2001/REC-xlink-20010627/">XML Linking
Language (XLink) Version 1.0</a></cite>, Steve DeRose, Eve Maler,
David Orchard, Editors. World Wide Web Consortium, 27 June 2001.
This version of the XLink Recommendation is
http://www.w3.org/TR/2001/REC-xlink-20010627/ The <a href=
"http://www.w3.org/TR/xlink/">latest version of XLink</a> is
available at http://www.w3.org/TR/xlink/.</dd>
<dt class="label"><a name="XML10" id="XML10"></a>[XML 1.0]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2006/REC-xml-20060816/">Extensible Markup
Language (XML) 1.0 (Fourth Edition)</a></cite>, T. Bray, J. Paoli,
C. M. Sperberg-McQueen, E. Maler, and F. Yergeau, Editors. World
Wide Web Consortium, 10 February 1998, revised 16 August 2006. This
version of the XML 1.0 Recommendation is
http://www.w3.org/TR/2006/REC-xml-20060816/. The <a href=
"http://www.w3.org/TR/REC-xml">latest version of "Extensible Markup
Language (XML) 1.0"</a> is available at
http://www.w3.org/TR/REC-xml.</dd>
<dt class="label"><a name="XMLNS" id="XMLNS"></a>[XML
Namespaces]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2006/REC-xml-names-20060816">Namespaces in
XML (Second Edition)</a></cite>, T. Bray, D. Hollander, A. Layman,
and R. Tobin, Editors. World Wide Web Consortium, 16 August 2006.
This version of the XML Information Set Recommendation is
http://www.w3.org/TR/2006/REC-xml-names-20060816. The <a href=
"http://www.w3.org/TR/REC-xml-names">latest version of Namespaces
in XML</a> is available at http://www.w3.org/TR/REC-xml-names.</dd>
<dt class="label"><a name="XMLInfoSet" id="XMLInfoSet"></a>[XML
Information Set]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2004/REC-xml-infoset-20040204">XML
Information Set (Second Edition)</a></cite>, J. Cowan and R. Tobin,
Editors. World Wide Web Consortium, 24 October 2001, revised 4
February 2004. This version of the XML Information Set
Recommendation is
http://www.w3.org/TR/2004/REC-xml-infoset-20040204. The <a href=
"http://www.w3.org/TR/xml-infoset">latest version of XML
Information Set</a> is available at
http://www.w3.org/TR/xml-infoset.</dd>
<dt class="label"><a name="XMLSchemaP1" id="XMLSchemaP1"></a>[XML
Schema: Structures]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">XML Schema
Part 1: Structures Second Edition</a></cite>, H. Thompson, D.
Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web
Consortium, 2 May 2001, revised 28 October 2004. This version of
the XML Schema Part 1 Recommendation is
http://www.w3.org/TR/2004/REC-xmlschema-1-20041028. The <a href=
"http://www.w3.org/TR/xmlschema-1/">latest version of XML Schema
Part 1</a> is available at http://www.w3.org/TR/xmlschema-1.</dd>
<dt class="label"><a name="XMLSchemaP2" id="XMLSchemaP2"></a>[XML
Schema: Datatypes]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">XML Schema
Part 2: Datatypes Second Edition</a></cite>, P. Byron and A.
Malhotra, Editors. World Wide Web Consortium, 2 May 2001, revised
28 October 2004. This version of the XML Schema Part 2
Recommendation is
http://www.w3.org/TR/2004/REC-xmlschema-2-20041028. The <a href=
"http://www.w3.org/TR/xmlschema-2/">latest version of XML Schema
Part 2</a> is available at http://www.w3.org/TR/xmlschema-2.</dd>
<dt class="label"><a name="WSDL-PART2" id="WSDL-PART2"></a>[WSDL
2.0 Adjuncts]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626">Web
Services Description Language (WSDL) Version 2.0 Part 2:
Adjuncts</a></cite> , R. Chinnici, H. Haas, A. Lewis, J-J. Moreau,
D. Orchard, S. Weerawarana, Editors. World Wide Web Consortium, 26
June 2007. This version of the "Web Services Description Language
(WSDL) Version 2.0 Part 2: Adjuncts" Recommendation is available at
http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626. The
<a href="http://www.w3.org/TR/wsdl20-adjuncts">latest version of
"Web Services Description Language (WSDL) Version 2.0 Part 2:
Adjuncts"</a> is available at
http://www.w3.org/TR/wsdl20-adjuncts.</dd>
</dl>
</div>
<div class="div2">
<h3><a name="Informative-References" id=
"Informative-References"></a>10.2 Informative References</h3>
<dl>
<dt class="label"><a name="RFC2045" id="RFC2045"></a>[IETF RFC
2045]</dt>
<dd><cite><a href=
"http://www.ietf.org/rfc/rfc2045.txt">Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies</a></cite>, N. Freed, N. Borenstein, Authors. Internet
Engineering Task Force, November 1996. Available at
http://www.ietf.org/rfc/rfc2045.txt.</dd>
<dt class="label"><a name="RFC2616" id="RFC2616"></a>[IETF RFC
2616]</dt>
<dd><cite><a href="http://www.ietf.org/rfc/rfc2616.txt">Hypertext
Transfer Protocol -- HTTP/1.1</a></cite>, R. Fielding, J. Gettys,
J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee,
Authors. Internet Engineering Task Force, June 1999. Available at
http://www.ietf.org/rfc/rfc2616.txt.</dd>
<dt class="label"><a name="WSA-Core" id="WSA-Core"></a>[WSA 1.0
Core]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">Web Services
Addressing 1.0 - Core</a></cite> , M. Gudgin, M. Hadley, T. Rogers,
Editors. World Wide Web Consortium, 9 May 2006. This version of Web
Services Addressing 1.0 - Core Recommendation is
http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/ The latest
version of the "Web Services Addressing 1.0 - Core" document is
available from http://www.w3.org/TR/ws-addr-core.</dd>
<dt class="label"><a name="WSDL11" id="WSDL11"></a>[WSDL 1.1]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2001/NOTE-wsdl-20010315">Web Services
Description Language (WSDL) 1.1</a></cite>, E. Christensen, F.
Curbera, G. Meredith, and S. Weerawarana, Authors. World Wide Web
Consortium, 15 March 2002. This version of the Web Services
Description Language 1.1 Note is
http://www.w3.org/TR/2001/NOTE-wsdl-20010315. The <a href=
"http://www.w3.org/TR/wsdl">latest version of Web Services
Description Language 1.1</a> is available at
http://www.w3.org/TR/wsdl.</dd>
<dt class="label"><a name="WSDL-PART0" id="WSDL-PART0"></a>[WSDL
2.0 Primer]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626">Web Services
Description Language (WSDL) Version 2.0 Part 0: Primer</a></cite> ,
D.Booth, C.K. Liu , Editors. World Wide Web Consortium, 26 June
2007. This version of the "Web Services Description Language (WSDL)
Version 2.0 Part 0: Primer" Recommendation is available at
http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626. The <a href=
"http://www.w3.org/TR/wsdl20-primer">latest version of "Web
Services Description Language (WSDL) Version 2.0 Part 0:
Primer"</a> is available at
http://www.w3.org/TR/wsdl20-primer.</dd>
<dt class="label"><a name="WSDReqs" id="WSDReqs"></a>[WSDL 2.0
Requirements]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2002/WD-ws-desc-reqs-20021028">Web Services
Description Requirements</a></cite>, J. Schlimmer, Editor. World
Wide Web Consortium, 28 October 2002. This version of the Web
Services Description Requirements document is
http://www.w3.org/TR/2002/WD-ws-desc-reqs-20021028. The <a href=
"http://www.w3.org/TR/ws-desc-reqs/">latest version of Web Services
Description Requirements</a> is available at
http://www.w3.org/TR/ws-desc-reqs.</dd>
<dt class="label"><a name="WSDL2-OTHER-SCHEMA" id=
"WSDL2-OTHER-SCHEMA"></a>[WSDL 2.0 Alternative Schema Languages
Support]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2005/NOTE-wsdl20-altschemalangs-20050817/">Discussion
of Alternative Schema Languages and Type System Support in WSDL
2.0</a></cite>, A. Lewis, B. Parsia, Editors. World Wide Web
Consortium, 17 August 2005. This version of the "Discussion of
Alternative Schema Languages and Type System Support in WSDL 2.0"
Working Group Note is
http://www.w3.org/TR/2005/NOTE-wsdl20-altschemalangs-20050817/. The
<a href="http://www.w3.org/TR/wsdl20-altschemalangs">latest version
of "Discussion of Alternative Schema Languages and Type System
Support in WSDL 2.0"</a> is available at
http://www.w3.org/TR/wsdl20-altschemalangs.</dd>
<dt class="label"><a name="SOAP12-PART1" id=
"SOAP12-PART1"></a>[SOAP 1.2 Part 1: Messaging Framework (Second
Edition)]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2007/REC-soap12-part1-20070427/">SOAP Version
1.2 Part 1: Messaging Framework (Second Edition)</a></cite>, M.
Gudgin, et al., Editors. World Wide Web Consortium, 24 June 2003,
revised 27 April 2007. This version of the "SOAP Version 1.2 Part
1: Messaging Framework (Second Edition)" Recommendation is
http://www.w3.org/TR/2007/REC-soap12-part1-20070427/. The <a href=
"http://www.w3.org/TR/soap12-part1/">latest version of "SOAP
Version 1.2 Part 1: Messaging Framework"</a> is available at
http://www.w3.org/TR/soap12-part1/.</dd>
<dt class="label"><a name="XPTR" id="XPTR"></a>[XPointer]</dt>
<dd><cite><a href=
"http://www.w3.org/TR/2003/REC-xptr-framework-20030325/">XPointer
Framework</a></cite>, P. Grosso, E. Maler, J. Marsh, N. Walsh,
Editors. World Wide Web Consortium, 25 March 2003. This version of
the XPointer Framework Recommendation is
http://www.w3.org/TR/2003/REC-xptr-framework-20030325/ The <a href=
"http://www.w3.org/TR/xptr-framework/">latest version of XPointer
Framework</a> is available at
http://www.w3.org/TR/xptr-framework/.</dd>
<dt class="label"><a name="ZNotationReferenceManual" id=
"ZNotationReferenceManual"></a>[Z Notation Reference Manual]</dt>
<dd><cite><a href=
"http://spivey.oriel.ox.ac.uk/mike/zrm/index.html">The Z Notation:
A Reference Manual, Second Edition</a></cite>, J. M. Spivey,
Prentice Hall, 1992.</dd>
<dt class="label"><a name="Fuzz2000" id="Fuzz2000"></a>[Fuzz
2000]</dt>
<dd><cite><a href="http://spivey.oriel.ox.ac.uk/mike/fuzz/">Release
Notes For Fuzz 2000</a></cite>, J. M. Spivey.</dd>
</dl>
</div>
</div>
</div>
<div class="back">
<div class="div1">
<h2><a name="ietf-draft" id="ietf-draft"></a>A. The
application/wsdl+xml Media Type</h2>
<p>This appendix defines the "application/wsdl+xml" media type
which can be used to describe WSDL 2.0 documents serialized as
XML.</p>
<div class="div2">
<h3><a name="ietf-reg" id="ietf-reg"></a>A.1 Registration</h3>
<dl>
<dt class="label">MIME media type name:</dt>
<dd>
<p>application</p>
</dd>
<dt class="label">MIME subtype name:</dt>
<dd>
<p>wsdl+xml</p>
</dd>
<dt class="label">Required parameters:</dt>
<dd>
<p>none</p>
</dd>
<dt class="label">Optional parameters:</dt>
<dd>
<dl>
<dt class="label">charset</dt>
<dd>
<p>This parameter has identical semantics to the charset parameter
of the "application/xml" media type as specified in [<cite><a href=
"#RFC3023">IETF RFC 3023</a></cite>].</p>
</dd>
</dl>
</dd>
<dt class="label">Encoding considerations:</dt>
<dd>
<p>Identical to those of "application/xml" as described in
[<cite><a href="#RFC3023">IETF RFC 3023</a></cite>], section 3.2,
as applied to the WSDL document Infoset.</p>
</dd>
<dt class="label">Security considerations:</dt>
<dd>
<p>See section <a href="#ietf-sec"><strong>A.3 Security
considerations</strong></a>.</p>
</dd>
<dt class="label">Interoperability considerations:</dt>
<dd>
<p>There are no known interoperability issues.</p>
</dd>
<dt class="label">Published specifications:</dt>
<dd>
<p>This document and [<cite><a href="#WSDL-PART2">WSDL 2.0
Adjuncts</a></cite>].</p>
</dd>
<dt class="label">Applications which use this media type:</dt>
<dd>
<p>No known applications currently use this media type.</p>
</dd>
<dt class="label">Additional information:</dt>
<dd>
<dl>
<dt class="label">File extension:</dt>
<dd>
<p>wsdl</p>
</dd>
<dt class="label">Fragment identifiers:</dt>
<dd>
<p>Either a syntax identical to that of "application/xml" as
described in [<cite><a href="#RFC3023">IETF RFC 3023</a></cite>],
section 5 or the syntax defined in <a href="#frag-ids"><strong>A.2
Fragment Identifiers</strong></a>.</p>
</dd>
<dt class="label">Base URI:</dt>
<dd>
<p>As specified in [<cite><a href="#RFC3023">IETF RFC
3023</a></cite>], section 6.</p>
</dd>
<dt class="label">Macintosh File Type code:</dt>
<dd>
<p>WSDL</p>
</dd>
</dl>
</dd>
<dt class="label">Person and email address to contact for further
information:</dt>
<dd>
<p>World Wide Web Consortium &lt;web-human@w3.org&gt;</p>
</dd>
<dt class="label">Intended usage:</dt>
<dd>
<p>COMMON</p>
</dd>
<dt class="label">Author/Change controller:</dt>
<dd>
<p>The WSDL 2.0 specification set is a work product of the World
Wide Web Consortium's <a href="http://www.w3.org/2002/ws/desc/">Web
Service Description Working Group</a>. The W3C has change control
over these specifications.</p>
</dd>
</dl>
</div>
<div class="div2">
<h3><a name="frag-ids" id="frag-ids"></a>A.2 Fragment
Identifiers</h3>
<p>This section defines a fragment identifier syntax for
identifying components of a WSDL 2.0 document. This fragment
identifier syntax is compliant with the [<cite><a href=
"#XPTR">XPointer</a></cite>].</p>
<p>A WSDL 2.0 fragment identifier is an XPointer [<cite><a href=
"#XPTR">XPointer</a></cite>], augmented with WSDL 2.0 pointer parts
as defined below. Note that many of these parts require the
pre-appearance of one or more <code>xmlns</code> pointer parts (see
<em>3.4 Namespace Binding Context</em> in [<cite><a href=
"#XPTR">XPointer</a></cite>]). The pointer parts have a scheme name
that corresponds to one of the standard WSDL 2.0 component types,
and scheme data that is a path composed of names that identify the
components. The scheme names all begin with the prefix "wsdl." to
avoid name conflicts with other schemes. The names in the path are
of type either QName, NCName, IRI, URI, or Pointer Part depending
on the context. The scheme data for WSDL 2.0 extension components
is defined by the corresponding extension specification.</p>
<p><span id="FragId-1095" class="test-assertion-tr">For QNames, any
prefix MUST be defined by a preceding xmlns pointer
part.<sup><a href="#FragId-1095-summary" title=
"Link to assertion FragId-1095 summary">†</a></sup></span> If a
QName does not have a prefix then its namespace name is the target
namespace of the WSDL 2.0 document.</p>
<p>The fragment identifier is typically constructed from the
{<a href="#property-.name">name</a>} property of the component and
the {<a href="#property-.name">name</a>} properties of its
ancestors as a path according to <a href="#frag-ids-table">Table
A-1</a>. The first column of this table gives the name of the WSDL
2.0 component. Columns labeled 1 through 4 specify the identifiers
that uniquely identify the component within its context.
Identifiers are typically formed from the {<a href=
"#property-.name">name</a>} property, although in several cases
references to other components are used. These identifiers are then
used to construct the pointer part in the last column. <span id=
"FragId-1096" class="test-assertion-tr">The fragment identifier in
a WSDL 2.0 component IRI-reference MUST resolve to some component
as defined by the construction rules in <a href=
"#frag-ids-table">Table A-1</a>.<sup><a href="#FragId-1096-summary"
title=
"Link to assertion FragId-1096 summary">†</a></sup></span></p>
<a name="frag-ids-table" id="frag-ids-table"></a>
<table border="1">
<caption>Table A-1. Rules for determining pointer parts for WSDL
2.0 components</caption>
<col width="15%" span="1" />
<col width="10%" span="1" />
<col width="10%" span="1" />
<col width="10%" span="1" />
<col width="10%" span="1" />
<col width="45%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Component</th>
<th rowspan="1" colspan="1">1</th>
<th rowspan="1" colspan="1">2</th>
<th rowspan="1" colspan="1">3</th>
<th rowspan="1" colspan="1">4</th>
<th rowspan="1" colspan="1">Pointer Part</th>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Description">Description</a></td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.description">wsdl.description</a>()</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-ElementDeclaration">Element Declaration</a></td>
<td rowspan="1" colspan="1"><code><em>element</em></code>
QName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.elementDeclaration">wsdl.elementDeclaration</a>(<em>element</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-ElementDeclaration">Element Declaration</a></td>
<td rowspan="1" colspan="1"><code><em>element</em></code>
QName</td>
<td rowspan="1" colspan="1"><code><em>system</em></code> IRI</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.elementDeclaration">wsdl.elementDeclaration</a>(<em>element</em>,<em>system</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-TypeDefinition">Type Definition</a></td>
<td rowspan="1" colspan="1"><code><em>type</em></code> QName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.typeDefinition">wsdl.typeDefinition</a>(<em>type</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-TypeDefinition">Type Definition</a></td>
<td rowspan="1" colspan="1"><code><em>type</em></code> QName</td>
<td rowspan="1" colspan="1"><code><em>system</em></code> IRI</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.typeDefinition">wsdl.typeDefinition</a>(<em>type</em>,<em>system</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Interface">Interface</a></td>
<td rowspan="1" colspan="1"><code><em>interface</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.interface">wsdl.interface</a>(<em>interface</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceFault">Interface Fault</a></td>
<td rowspan="1" colspan="1"><code><em>interface</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>fault</em></code> NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.interfaceFault">wsdl.interfaceFault</a>(<em>interface</em>/<em>fault</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceOperation">Interface Operation</a></td>
<td rowspan="1" colspan="1"><code><em>interface</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>operation</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.interfaceOperation">wsdl.interfaceOperation</a>(<em>interface</em>/<em>operation</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a></td>
<td rowspan="1" colspan="1"><code><em>interface</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>operation</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>message</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.interfaceMessageReference">wsdl.interfaceMessageReference</a>(<em>interface</em>/<em>operation</em>/<em>message</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceFaultReference">Interface Fault
Reference</a></td>
<td rowspan="1" colspan="1"><code><em>interface</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>operation</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>message</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>fault</em></code> QName</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.interfaceFaultReference">wsdl.interfaceFaultReference</a>(<em>interface</em>/<em>operation</em>/<em>message</em>/<em>fault</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Binding">Binding</a></td>
<td rowspan="1" colspan="1"><code><em>binding</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.binding">wsdl.binding</a>(<em>binding</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingFault">Binding Fault</a></td>
<td rowspan="1" colspan="1"><code><em>binding</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>fault</em></code> QName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.bindingFault">wsdl.bindingFault</a>(<em>binding</em>/<em>fault</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingOperation">Binding Operation</a></td>
<td rowspan="1" colspan="1"><code><em>binding</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>operation</em></code>
QName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.bindingOperation">wsdl.bindingOperation</a>(<em>binding</em>/<em>operation</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingMessageReference">Binding Message
Reference</a></td>
<td rowspan="1" colspan="1"><code><em>binding</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>operation</em></code>
QName</td>
<td rowspan="1" colspan="1"><code><em>message</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.bindingMessageReference">wsdl.bindingMessageReference</a>(<em>binding</em>/<em>operation</em>/<em>message</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingFaultReference">Binding Fault Reference</a></td>
<td rowspan="1" colspan="1"><code><em>binding</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>operation</em></code>
QName</td>
<td rowspan="1" colspan="1"><code><em>message</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>fault</em></code> QName</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.bindingFaultReference">wsdl.bindingFaultReference</a>(<em>binding</em>/<em>operation</em>/<em>message</em>/<em>fault</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Service">Service</a></td>
<td rowspan="1" colspan="1"><code><em>service</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.service">wsdl.service</a>(<em>service</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Endpoint">Endpoint</a></td>
<td rowspan="1" colspan="1"><code><em>service</em></code>
NCName</td>
<td rowspan="1" colspan="1"><code><em>endpoint</em></code>
NCName</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.endpoint">wsdl.endpoint</a>(<em>service</em>/<em>endpoint</em>)</code></td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#Description">Extensions</a></td>
<td rowspan="1" colspan="1"><code><em>namespace</em></code>
URI</td>
<td rowspan="1" colspan="1"><code><em>identifier</em></code>
extension-specific-syntax</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1">n/a</td>
<td rowspan="1" colspan="1"><code><a href=
"#wsdl.extension">wsdl.extension</a>(<em>namespace</em>,<em>identifier</em>)</code></td>
</tr>
</tbody>
</table>
<br />
<p>Note that the above rules are defined in terms of component
properties rather than the XML Infoset representation of the
component model. The following sections specify in detail how the
pointer parts are constructed from the component model.</p>
<a name="zed-ComponentID" id="zed-ComponentID"></a><a name=
"zed-ComponentDesignator" id="zed-ComponentDesignator"></a><a name=
"zed-ComponentContext" id="zed-ComponentContext"></a><a name=
"zed-componentNamespace" id="zed-componentNamespace"></a><a name=
"zed-ExtensionIdentifier" id="zed-ExtensionIdentifier"></a><a name=
"zed-wsdlPointerPart" id="zed-wsdlPointerPart"></a><a name=
"zed-pointerPart" id="zed-pointerPart"></a><a name=
"zed-ComponentToDesignator" id="zed-ComponentToDesignator"></a>
<div class="div3">
<h4><a name="wsdl.description" id="wsdl.description"></a>A.2.1 The
Description Component</h4>
<p><code>wsdl.description()</code></p>
<a name="zed-wsdlDescription" id="zed-wsdlDescription"></a></div>
<div class="div3">
<h4><a name="wsdl.elementDeclaration" id=
"wsdl.elementDeclaration"></a>A.2.2 The Element Declaration
Component</h4>
<p><code>wsdl.elementDeclaration(<em>element</em>)</code></p>
<p>
<code>wsdl.elementDeclaration(<em>element</em>,<em>system</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>element</em></code> is the {<a href=
"#property-ElementDeclaration.name">name</a>} property of the
<a href="#component-ElementDeclaration">Element Declaration</a>
component.</p>
</li>
<li>
<p><code><em>system</em></code> is the namespace absolute IRI of
the extension type system used for the <a href=
"#component-ElementDeclaration">Element Declaration</a> component
(see <a href="#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>). This parameter is absent if XML Schema is
the type system.</p>
</li>
</ol>
<a name="zed-xmlSchemaNamespaceURI" id=
"zed-xmlSchemaNamespaceURI"></a><a name="zed-ElementDeclArgs" id=
"zed-ElementDeclArgs"></a><a name="zed-ElementDeclDesignator" id=
"zed-ElementDeclDesignator"></a><a name=
"zed-wsdlElementDeclaration" id=
"zed-wsdlElementDeclaration"></a></div>
<div class="div3">
<h4><a name="wsdl.typeDefinition" id=
"wsdl.typeDefinition"></a>A.2.3 The Type Definition Component</h4>
<p><code>wsdl.typeDefinition(<em>type</em>)</code></p>
<p>
<code>wsdl.typeDefinition(<em>type</em>,<em>system</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>type</em></code> is the {<a href=
"#property-TypeDefinition.name">name</a>} property of the <a href=
"#component-TypeDefinition">Type Definition</a> component.</p>
</li>
<li>
<p><code><em>system</em></code> is the namespace absolute IRI of
the extension type system used for the <a href=
"#component-TypeDefinition">Type Definition</a> component (see
<a href="#other-types"><strong>3.2 Using Other Schema
Languages</strong></a>). This parameter is absent if XML Schema is
the type system.</p>
</li>
</ol>
<a name="zed-TypeDefArgs" id="zed-TypeDefArgs"></a><a name=
"zed-TypeDefDesignator" id="zed-TypeDefDesignator"></a><a name=
"zed-wsdlTypeDefinition" id="zed-wsdlTypeDefinition"></a></div>
<div class="div3">
<h4><a name="wsdl.interface" id="wsdl.interface"></a>A.2.4 The
Interface Component</h4>
<p><code>wsdl.interface(<em>interface</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>interface</em></code> is the local name of the
{<a href="#property-Interface.name">name</a>} property of the
<a href="#component-Interface">Interface</a> component.</p>
</li>
</ol>
<a name="zed-InterfaceArgs" id="zed-InterfaceArgs"></a><a name=
"zed-InterfaceDesignator" id="zed-InterfaceDesignator"></a><a name=
"zed-wsdlInterface" id="zed-wsdlInterface"></a></div>
<div class="div3">
<h4><a name="wsdl.interfaceFault" id=
"wsdl.interfaceFault"></a>A.2.5 The Interface Fault Component</h4>
<p>
<code>wsdl.interfaceFault(<em>interface</em>/<em>fault</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>interface</em></code> is the local name of the
{<a href="#property-Interface.name">name</a>} property of the
parent <a href="#component-Interface">Interface</a> component.</p>
</li>
<li>
<p><code><em>fault</em></code> is the local name of the {<a href=
"#property-InterfaceFault.name">name</a>} property of the <a href=
"#component-InterfaceFault">Interface Fault</a> component.</p>
</li>
</ol>
<a name="zed-InterfaceFaultArgs" id=
"zed-InterfaceFaultArgs"></a><a name="zed-InterfaceFaultDesignator"
id="zed-InterfaceFaultDesignator"></a><a name=
"zed-wsdlInterfaceFault" id="zed-wsdlInterfaceFault"></a></div>
<div class="div3">
<h4><a name="wsdl.interfaceOperation" id=
"wsdl.interfaceOperation"></a>A.2.6 The Interface Operation
Component</h4>
<p>
<code>wsdl.interfaceOperation(<em>interface</em>/<em>operation</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>interface</em></code> is the local name of the
{<a href="#property-Interface.name">name</a>} property of the
parent <a href="#component-Interface">Interface</a> component.</p>
</li>
<li>
<p><code><em>operation</em></code> is the local name of the
{<a href="#property-InterfaceOperation.name">name</a>} property of
the <a href="#component-InterfaceOperation">Interface Operation</a>
component.</p>
</li>
</ol>
<a name="zed-InterfaceOpArgs" id="zed-InterfaceOpArgs"></a><a name=
"zed-InterfaceOpDesignator" id=
"zed-InterfaceOpDesignator"></a><a name=
"zed-wsdlInterfaceOperation" id=
"zed-wsdlInterfaceOperation"></a></div>
<div class="div3">
<h4><a name="wsdl.interfaceMessageReference" id=
"wsdl.interfaceMessageReference"></a>A.2.7 The Interface Message
Reference Component</h4>
<p>
<code>wsdl.interfaceMessageReference(<em>interface</em>/<em>operation</em>/<em>message</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>interface</em></code> is the local name of the
{<a href="#property-Interface.name">name</a>} property of the
grandparent <a href="#component-Interface">Interface</a>
component.</p>
</li>
<li>
<p><code><em>operation</em></code> is the local name of the
{<a href="#property-InterfaceOperation.name">name</a>} property of
the parent <a href="#component-InterfaceOperation">Interface
Operation</a> component.</p>
</li>
<li>
<p><code><em>message</em></code> is the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property of the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component.</p>
</li>
</ol>
<a name="zed-InterfaceMessageRefArgs" id=
"zed-InterfaceMessageRefArgs"></a><a name=
"zed-InterfaceMessageRefDesignator" id=
"zed-InterfaceMessageRefDesignator"></a><a name=
"zed-wsdlInterfaceMessageReference" id=
"zed-wsdlInterfaceMessageReference"></a></div>
<div class="div3">
<h4><a name="wsdl.interfaceFaultReference" id=
"wsdl.interfaceFaultReference"></a>A.2.8 The Interface Fault
Reference Component</h4>
<p>
<code>wsdl.interfaceFaultReference(<em>interface</em>/<em>operation</em>/<em>message</em>/<em>fault</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>interface</em></code> is the local name of the
{<a href="#property-Interface.name">name</a>} property of the
grandparent <a href="#component-Interface">Interface</a>
component.</p>
</li>
<li>
<p><code><em>operation</em></code> is the local name of the
{<a href="#property-InterfaceOperation.name">name</a>} property of
the parent <a href="#component-InterfaceOperation">Interface
Operation</a> component.</p>
</li>
<li>
<p><code><em>message</em></code> is the {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
property of the <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component.</p>
</li>
<li>
<p><code><em>fault</em></code> is the {<a href=
"#property-InterfaceFault.name">name</a>} property of the <a href=
"#component-InterfaceFault">Interface Fault</a> component referred
to by the {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} property of the <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component.</p>
</li>
</ol>
<a name="zed-InterfaceFaultRefArgs" id=
"zed-InterfaceFaultRefArgs"></a><a name=
"zed-InterfaceFaultRefDesignator" id=
"zed-InterfaceFaultRefDesignator"></a><a name=
"zed-wsdlInterfaceFaultReference" id=
"zed-wsdlInterfaceFaultReference"></a></div>
<div class="div3">
<h4><a name="wsdl.binding" id="wsdl.binding"></a>A.2.9 The Binding
Component</h4>
<p><code>wsdl.binding(<em>binding</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>binding</em></code> is the local name of the {<a href=
"#property-Binding.name">name</a>} property of the <a href=
"#component-Binding">Binding</a> component.</p>
</li>
</ol>
<a name="zed-BindingArgs" id="zed-BindingArgs"></a><a name=
"zed-BindingDesignator" id="zed-BindingDesignator"></a><a name=
"zed-wsdlBinding" id="zed-wsdlBinding"></a><a name=
"zed-BindingInterfaceDesignator" id=
"zed-BindingInterfaceDesignator"></a></div>
<div class="div3">
<h4><a name="wsdl.bindingFault" id="wsdl.bindingFault"></a>A.2.10
The Binding Fault Component</h4>
<p>
<code>wsdl.bindingFault(<em>binding</em>/<em>fault</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>binding</em></code> is the local name of the {<a href=
"#property-Binding.name">name</a>} property of the parent <a href=
"#component-Binding">Binding</a> component.</p>
</li>
<li>
<p><code><em>fault</em></code> is the {<a href=
"#property-InterfaceFault.name">name</a>} property of the <a href=
"#component-InterfaceFault">Interface Fault</a> component referred
to by the {<a href=
"#property-BindingFault.interfacefault">interface fault</a>}
property of the <a href="#component-BindingFault">Binding Fault</a>
component.</p>
</li>
</ol>
<a name="zed-BindingFaultArgs" id=
"zed-BindingFaultArgs"></a><a name="zed-BindingFaultDesignator" id=
"zed-BindingFaultDesignator"></a><a name="zed-wsdlBindingFault" id=
"zed-wsdlBindingFault"></a></div>
<div class="div3">
<h4><a name="wsdl.bindingOperation" id=
"wsdl.bindingOperation"></a>A.2.11 The Binding Operation
Component</h4>
<p>
<code>wsdl.bindingOperation(<em>binding</em>/<em>operation</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>binding</em></code> is the local name of the {<a href=
"#property-Binding.name">name</a>} property of the parent <a href=
"#component-Binding">Binding</a> component.</p>
</li>
<li>
<p><code><em>operation</em></code> is the {<a href=
"#property-InterfaceOperation.name">name</a>} property of the
<a href="#component-InterfaceOperation">Interface Operation</a>
component referred to by the {<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>} property of the <a href=
"#component-BindingOperation">Binding Operation</a> component.</p>
</li>
</ol>
<a name="zed-BindingOpArgs" id="zed-BindingOpArgs"></a><a name=
"zed-BindingOpDesignator" id="zed-BindingOpDesignator"></a><a name=
"zed-wsdlBindingOperation" id="zed-wsdlBindingOperation"></a></div>
<div class="div3">
<h4><a name="wsdl.bindingMessageReference" id=
"wsdl.bindingMessageReference"></a>A.2.12 The Binding Message
Reference Component</h4>
<p>
<code>wsdl.bindingMessageReference(<em>binding</em>/<em>operation</em>/<em>message</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>binding</em></code> is the local name of the {<a href=
"#property-Binding.name">name</a>} property of the grandparent
<a href="#component-Binding">Binding</a> component.</p>
</li>
<li>
<p><code><em>operation</em></code> is the {<a href=
"#property-InterfaceOperation.name">name</a>} property of the
<a href="#component-InterfaceOperation">Interface Operation</a>
component referred to by the {<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>} property of the parent <a href=
"#component-BindingOperation">Binding Operation</a> component.</p>
</li>
<li>
<p><code><em>message</em></code> is the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property of the <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component referred to by the {<a href=
"#property-BindingMessageReference.interfacemessagereference">interface
message reference</a>} property of the <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
component.</p>
</li>
</ol>
<a name="zed-BindingMessageRefArgs" id=
"zed-BindingMessageRefArgs"></a><a name=
"zed-BindingMessageRefDesignator" id=
"zed-BindingMessageRefDesignator"></a><a name=
"zed-wsdlBindingMessageReference" id=
"zed-wsdlBindingMessageReference"></a></div>
<div class="div3">
<h4><a name="wsdl.bindingFaultReference" id=
"wsdl.bindingFaultReference"></a>A.2.13 The Binding Fault Reference
Component</h4>
<p>
<code>wsdl.bindingFaultReference(<em>binding</em>/<em>operation</em>/<em>message</em>/<em>fault</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>binding</em></code> is the local name of the {<a href=
"#property-Binding.name">name</a>} property of the grandparent
<a href="#component-Binding">Binding</a> component.</p>
</li>
<li>
<p><code><em>operation</em></code> is the {<a href=
"#property-InterfaceOperation.name">name</a>} property of the
<a href="#component-InterfaceOperation">Interface Operation</a>
component referred to by the {<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>} property of the parent <a href=
"#component-BindingOperation">Binding Operation</a> component.</p>
</li>
<li>
<p><code><em>message</em></code> is the {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
property of the <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component referred to by the {<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>} property of the <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component.</p>
</li>
<li>
<p><code><em>fault</em></code> is the {<a href=
"#property-InterfaceFault.name">name</a>} property of the <a href=
"#component-InterfaceFault">Interface Fault</a> component referred
to by the {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} property of the <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component referred to by the {<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>} property of the <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component.</p>
</li>
</ol>
<a name="zed-BindingFaultRefArgs" id=
"zed-BindingFaultRefArgs"></a><a name=
"zed-BindingFaultRefDesignator" id=
"zed-BindingFaultRefDesignator"></a><a name=
"zed-wsdlBindingFaultReference" id=
"zed-wsdlBindingFaultReference"></a></div>
<div class="div3">
<h4><a name="wsdl.service" id="wsdl.service"></a>A.2.14 The Service
Component</h4>
<p><code>wsdl.service(<em>service</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>service</em></code> is the local name of the {<a href=
"#property-Service.name">name</a>} property of the <a href=
"#component-Service">Service</a> component.</p>
</li>
</ol>
<a name="zed-ServiceArgs" id="zed-ServiceArgs"></a><a name=
"zed-ServiceDesignator" id="zed-ServiceDesignator"></a><a name=
"zed-wsdlService" id="zed-wsdlService"></a></div>
<div class="div3">
<h4><a name="wsdl.endpoint" id="wsdl.endpoint"></a>A.2.15 The
Endpoint Component</h4>
<p>
<code>wsdl.endpoint(<em>service</em>/<em>endpoint</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>service</em></code> is the local name of the {<a href=
"#property-Service.name">name</a>} property of the parent <a href=
"#component-Service">Service</a> component.</p>
</li>
<li>
<p><code><em>endpoint</em></code> is the {<a href=
"#property-Endpoint.name">name</a>} property of the <a href=
"#component-Endpoint">Endpoint</a> component.</p>
</li>
</ol>
<a name="zed-EndpointArgs" id="zed-EndpointArgs"></a><a name=
"zed-EndpointDesignator" id="zed-EndpointDesignator"></a><a name=
"zed-wsdlEndpoint" id="zed-wsdlEndpoint"></a></div>
<div class="div3">
<h4><a name="wsdl.extension" id="wsdl.extension"></a>A.2.16
Extension Components</h4>
<p>WSDL 2.0 is extensible and it is possible for an extension to
define new components types. The XPointer Framework scheme for
extension components is:</p>
<p><code>wsdl.extension(<em>namespace</em>,
<em>identifier</em>)</code></p>
<ol class="enumar">
<li>
<p><code><em>namespace</em></code> is the namespace URI that
identifies the extension, e.g. for the WSDL 2.0 SOAP 1.2 Binding
the namespace is http://www.w3.org/ns/wsdl/soap.</p>
</li>
<li>
<p><code><em>identifier</em></code> is defined by the extension
using a syntax specific to the extension. The owner of the
extension must define any components contributed by the extension
and a syntax for identifying them.</p>
</li>
</ol>
<a name="zed-ExtensionArgs" id="zed-ExtensionArgs"></a><a name=
"zed-ExtensionDesignator" id="zed-ExtensionDesignator"></a><a name=
"zed-wsdlExtension" id="zed-wsdlExtension"></a></div>
</div>
<div class="div2">
<h3><a name="ietf-sec" id="ietf-sec"></a>A.3 Security
considerations</h3>
<p>This media type uses the "+xml" convention, it shares the same
security considerations as described in [<cite><a href=
"#RFC3023">IETF RFC 3023</a></cite>], section 10.</p>
</div>
</div>
<div class="div1">
<h2><a name="acknowledgments" id="acknowledgments"></a>B.
Acknowledgements (Non-Normative)</h2>
<p>This document is the work of the <a href=
"http://www.w3.org/2002/ws/desc/">W3C Web Service Description
Working Group</a>.</p>
<p>Members of the Working Group are (at the time of writing, and by
alphabetical order): Charlton Barreto (Adobe Systems, Inc), Allen
Brookes (Rogue Wave Softwave), Dave Chappell (Sonic Software),
Helen Chen (Agfa-Gevaert N. V.), Roberto Chinnici (Sun
Microsystems), Kendall Clark (University of Maryland), Glen Daniels
(Sonic Software), Paul Downey (British Telecommunications), Youenn
Fablet (Canon), Ram Jeyaraman (Microsoft), Tom Jordahl (Adobe
Systems), Anish Karmarkar (Oracle Corporation), Jacek Kopecky (DERI
Innsbruck at the Leopold-Franzens-Universität Innsbruck, Austria),
Amelia Lewis (TIBCO Software, Inc.), Philippe Le Hegaret (W3C),
Michael Liddy (Education.au Ltd.), Kevin Canyang Liu (SAP AG),
Jonathan Marsh (WSO2), Monica Martin (Sun Microsystems), Josephine
Micallef (SAIC - Telcordia Technologies), Jeff Mischkinsky (Oracle
Corporation), Dale Moberg (Cyclone Commerce), Jean-Jacques Moreau
(Canon), David Orchard (BEA Systems, Inc.), Gilbert Pilz (BEA
Systems, Inc.), Tony Rogers (Computer Associates), Arthur Ryman
(IBM), Adi Sakala (IONA Technologies), Michael Shepherd (Xerox),
Asir Vedamuthu (Microsoft Corporation), Sanjiva Weerawarana (WSO2),
Ümit Yalçınalp (SAP AG), Peter Zehler (Xerox).</p>
<p>Previous members were: Eran Chinthaka (WSO2), Mark Nottingham
(BEA Systems, Inc.), Hugo Haas (W3C), Vivek Pandey (Sun
Microsystems), Bijan Parsia (University of Maryland), Lily Liu
(webMethods, Inc.), Don Wright (Lexmark), Joyce Yang (Oracle
Corporation), Daniel Schutzer (Citigroup), Dave Solo (Citigroup),
Stefano Pogliani (Sun Microsystems), William Stumbo (Xerox),
Stephen White (SeeBeyond), Barbara Zengler (DaimlerChrysler
Research and Technology), Tim Finin (University of Maryland),
Laurent De Teneuille (L'Echangeur), Johan Pauhlsson (L'Echangeur),
Mark Jones (AT&amp;T), Steve Lind (AT&amp;T), Sandra Swearingen
(U.S. Department of Defense, U.S. Air Force), Philippe Le Hégaret
(W3C), Jim Hendler (University of Maryland), Dietmar Gaertner
(Software AG), Michael Champion (Software AG), Don Mullen (TIBCO
Software, Inc.), Steve Graham (Global Grid Forum), Steve Tuecke
(Global Grid Forum), Michael Mahan (Nokia), Bryan Thompson (Hicks
&amp; Associates), Ingo Melzer (DaimlerChrysler Research and
Technology), Sandeep Kumar (Cisco Systems), Alan Davies
(SeeBeyond), Jacek Kopecky (Systinet), Mike Ballantyne (Electronic
Data Systems), Mike Davoren (W. W. Grainger), Dan Kulp (IONA
Technologies), Mike McHugh (W. W. Grainger), Michael Mealling
(Verisign), Waqar Sadiq (Electronic Data Systems), Yaron Goland
(BEA Systems, Inc.), Ümit Yalçınalp (Oracle Corporation), Peter
Madziak (Agfa-Gevaert N. V.), Jeffrey Schlimmer (Microsoft
Corporation), Hao He (The Thomson Corporation), Erik Ackerman
(Lexmark), Jerry Thrasher (Lexmark), Prasad Yendluri (webMethods,
Inc.), William Vambenepe (Hewlett-Packard Company), David Booth
(W3C), Sanjiva Weerawarana (IBM), Asir Vedamuthu (webMethods,
Inc.), Igor Sedukhin (Computer Associates), Martin Gudgin
(Microsoft Corporation), Rebecca Bergersen (IONA Technologies), Ugo
Corda (SeeBeyond).</p>
<p>The people who have contributed to <a href=
"http://lists.w3.org/Archives/Public/www-ws-desc/">discussions on
www-ws-desc@w3.org</a> are also gratefully acknowledged.</p>
</div>
<div class="div1">
<h2><a name="wsdl-iri-references" id="wsdl-iri-references"></a>C.
IRI-References for WSDL 2.0 Components (Non-Normative)</h2>
<p>This appendix provides a syntax for IRI-references for all
components found in a WSDL 2.0 document. The IRI-references are
easy to understand and compare, while imposing no burden on the
WSDL 2.0 author.</p>
<div class="div2">
<h3><a name="wsdl-iris" id="wsdl-iris"></a>C.1 WSDL 2.0 IRIs</h3>
<p>There are two main cases for WSDL 2.0 IRIs:</p>
<ul>
<li>
<p>the IRI of a WSDL 2.0 document</p>
</li>
<li>
<p>the IRI of a WSDL 2.0 namespace</p>
</li>
</ul>
<p>The IRI of a WSDL 2.0 document can be dereferenced to give a
resource representation that contributes component definitions to a
single WSDL 2.0 namespace. If the media type is set to the WSDL 2.0
media type, then the fragment identifiers can be used to identify
the main components that are defined in the document.</p>
<p>However, in keeping with the recommendation in <a href=
"#Description_details"><strong>2.1.1 The Description
Component</strong></a> that the namespace URI be dereferencable to
a WSDL 2.0 document, this appendix specifies the use of the
namespace IRI with the WSDL 2.0 fragment identifiers to form an
IRI-reference.</p>
<p>The IRI in an IRI-reference for a WSDL 2.0 component is the
namespace name of the {<a href="#property-.name">name</a>} property
of either the component itself, in the case of <a href=
"#component-Interface">Interface</a> , <a href=
"#component-Binding">Binding</a> , and <a href=
"#component-Service">Service</a> components, or the {<a href=
"#property-.name">name</a>} property of the ancestor top-level
component. The IRI provided by the namespace name of the {<a href=
"#property-.name">name</a>} property is combined with a zero or
more <code>xmlns</code> pointer parts (see <em>3.4 Namespace
Binding Context</em> in [<cite><a href="#XPTR">XPointer</a></cite>]
) followed by a single WSDL 2.0 pointer part as defined in <a href=
"#frag-ids"><strong>A.2 Fragment Identifiers</strong></a> .</p>
</div>
<div class="div2">
<h3><a name="component-designator-canonical-form" id=
"component-designator-canonical-form"></a>C.2 Canonical Form for
WSDL 2.0 Component Designators</h3>
<p>The IRI-references described above MAY be used as WSDL 2.0
component designators. For ease of comparison, the fragment
identifier of WSDL 2.0 component designators SHOULD conform to the
following canonicalization rules:</p>
<ul>
<li>
<p><span id="CanonFragId-1097" class="test-assertion-tr">The
fragment identifier consists of a sequence zero or more
<code>xmlns()</code> pointer parts followed by exactly one
<code>wsdl.*()</code> pointer part. <sup><a href=
"#CanonFragId-1097-summary" title=
"Link to assertion CanonFragId-1097 summary">†</a></sup></span></p>
</li>
<li>
<p><span id="CanonFragId-1098" class="test-assertion-tr">Each
<code>xmlns()</code> pointer part that appears in the fragment
identifier defines a namespace that is referenced by the
<code>wsdl.*()</code> pointer part. <sup><a href=
"#CanonFragId-1098-summary" title=
"Link to assertion CanonFragId-1098 summary">†</a></sup></span></p>
</li>
<li>
<p><span id="CanonFragId-1099" class="test-assertion-tr">Each
<code>xmlns()</code> pointer part defines a unique namespace.
<sup><a href="#CanonFragId-1099-summary" title=
"Link to assertion CanonFragId-1099 summary">†</a></sup></span></p>
</li>
<li>
<p><span id="CanonFragId-1100" class="test-assertion-tr">The
<code>xmlns()</code> pointer parts define namespaces in the same
order as they are referenced in the <code>wsdl.*()</code> pointer
part. <sup><a href="#CanonFragId-1100-summary" title=
"Link to assertion CanonFragId-1100 summary">†</a></sup></span></p>
</li>
<li>
<p><span id="CanonFragId-1101" class="test-assertion-tr">The
namespace prefixes defined by the <code>xmlns()</code> pointer
parts are named <code>ns1</code> , <code>ns2</code> , etc., in the
order of their appearance. <sup><a href="#CanonFragId-1101-summary"
title=
"Link to assertion CanonFragId-1101 summary">†</a></sup></span></p>
</li>
<li>
<p><span id="CanonFragId-1102" class="test-assertion-tr">The
fragment identifier contains no optional whitespace. <sup><a href=
"#CanonFragId-1102-summary" title=
"Link to assertion CanonFragId-1102 summary">†</a></sup></span></p>
</li>
<li>
<p><span id="CanonFragId-1103" class="test-assertion-tr">No
<code>xmlns()</code> pointer part defines a namespace for the
targetNamespace of the WSDL 2.0 document. <sup><a href=
"#CanonFragId-1103-summary" title=
"Link to assertion CanonFragId-1103 summary">†</a></sup></span></p>
</li>
</ul>
</div>
<div class="div2">
<h3><a name="Iri-ref-ex" id="Iri-ref-ex"></a>C.3 Example</h3>
<p>Consider the following WSDL 2.0 document located at
http://example.org/TicketAgent.wsdl:</p>
<div class="exampleOuter">
<p style="text-align: left" class="exampleHead"><a name=
"iri-ref-example-wsdl" id=
"iri-ref-example-wsdl"></a><em><span>Example C-1.</span>
IRI-References - Example WSDL 2.0 Document</em></p>
<div class="exampleInner">
<pre xml:space="preserve">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;wsdl:description
targetNamespace="http://example.org/TicketAgent.wsdl20"
xmlns:xsTicketAgent="http://example.org/TicketAgent.xsd"
xmlns:wsdl="http://www.w3.org/ns/wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/ns/wsdl http://www.w3.org/2007/06/wsdl/wsdl20.xsd"&gt;
&lt;wsdl:types&gt;
&lt;xs:import schemaLocation="TicketAgent.xsd"
namespace="http://example.org/TicketAgent.xsd" /&gt;
&lt;/wsdl:types&gt;
&lt;wsdl:interface name="TicketAgent"&gt;
&lt;wsdl:operation name="listFlights"
pattern="http://www.w3.org/ns/wsdl/in-out"&gt;
&lt;wsdl:input element="xsTicketAgent:listFlightsRequest"/&gt;
&lt;wsdl:output element="xsTicketAgent:listFlightsResponse"/&gt;
&lt;/wsdl:operation&gt;
&lt;wsdl:operation name="reserveFlight"
pattern="http://www.w3.org/ns/wsdl/in-out"&gt;
&lt;wsdl:input element="xsTicketAgent:reserveFlightRequest"/&gt;
&lt;wsdl:output element="xsTicketAgent:reserveFlightResponse"/&gt;
&lt;/wsdl:operation&gt;
&lt;/wsdl:interface&gt;
&lt;/wsdl:description&gt;
</pre></div>
</div>
<p>Its components have the following IRI-references which follow
the above canonicalization rules except for the presence of
optional whitespace that has been added in order to improve the
formatting:</p>
<div class="exampleOuter">
<p style="text-align: left" class="exampleHead"><a name=
"iri-ref-example-iris" id=
"iri-ref-example-iris"></a><em><span>Example C-2.</span>
IRI-References - Example IRIs</em></p>
<div class="exampleInner">
<pre xml:space="preserve">
http://example.org/TicketAgent.wsdl20#
wsdl.description()
http://example.org/TicketAgent.wsdl20#
xmlns(ns1=http://example.org/TicketAgent.xsd)
wsdl.elementDeclaration(ns1:listFlightsRequest)
http://example.org/TicketAgent.wsdl20#
xmlns(ns1=http://example.org/TicketAgent.xsd)
wsdl.elementDeclaration(ns1:listFlightsResponse)
http://example.org/TicketAgent.wsdl20#
xmlns(ns1=http://example.org/TicketAgent.xsd)
wsdl.elementDeclaration(ns1:reserveFlightRequest)
http://example.org/TicketAgent.wsdl20#
xmlns(ns1=http://example.org/TicketAgent.xsd)
wsdl.elementDeclaration(ns1:reserveFlightResponse)
http://example.org/TicketAgent.wsdl20#
wsdl.interface(TicketAgent)
http://example.org/TicketAgent.wsdl20#
wsdl.interfaceOperation(TicketAgent/listFlights)
http://example.org/TicketAgent.wsdl20#
wsdl.interfaceMessageReference(TicketAgent/listFlights/In)
http://example.org/TicketAgent.wsdl20#
wsdl.interfaceMessageReference(TicketAgent/listFlights/Out)
http://example.org/TicketAgent.wsdl20#
wsdl.interfaceOperation(TicketAgent/reserveFlight)
http://example.org/TicketAgent.wsdl20#
wsdl.interfaceMessageReference(TicketAgent/reserveFlight/In)
http://example.org/TicketAgent.wsdl20#
wsdl.interfaceMessageReference(TicketAgent/reserveFlight/Out)
</pre></div>
</div>
</div>
</div>
<div class="div1">
<h2><a name="componentsummary" id="componentsummary"></a>D.
Component Summary (Non-Normative)</h2>
<p><a href="#component-summary">Table D-1</a> lists all the
components in the WSDL 2.0 abstract Component Model, and all their
properties. Note some properties have a generic definition that is
used in more than one component. In this case, the Component column
contains a "-" to indicate this generic definition of the
property.</p>
<a name="component-summary" id="component-summary"></a>
<table width="100%" border="1">
<caption>Table D-1. Summary of WSDL 2.0 Components and their
Properties</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Component</th>
<th rowspan="1" colspan="1">Defined Properties</th>
</tr>
<tr>
<td rowspan="1" colspan="1">-</td>
<td rowspan="1" colspan="1">{<a href="#property-.name">name</a>},
{<a href="#property-.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Binding">Binding</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-Binding.bindingfaults">binding faults</a>}, {<a href=
"#property-Binding.bindingoperations">binding operations</a>},
{<a href="#property-Binding.interface">interface</a>}, {<a href=
"#property-Binding.name">name</a>}, {<a href=
"#property-Binding.type">type</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingFault">Binding Fault</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingFault.interfacefault">interface fault</a>},
{<a href="#property-BindingFault.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingFaultReference">Binding Fault Reference</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>}, {<a href=
"#property-BindingFaultReference.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingMessageReference">Binding Message
Reference</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingMessageReference.interfacemessagereference">interface
message reference</a>}, {<a href=
"#property-BindingMessageReference.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-BindingOperation">Binding Operation</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-BindingOperation.bindingfaultreferences">binding fault
references</a>}, {<a href=
"#property-BindingOperation.bindingmessagereferences">binding
message references</a>}, {<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>}, {<a href=
"#property-BindingOperation.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Description">Description</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-Description.bindings">bindings</a>}, {<a href=
"#property-Description.elementdeclarations">element
declarations</a>}, {<a href=
"#property-Description.interfaces">interfaces</a>}, {<a href=
"#property-Description.services">services</a>}, {<a href=
"#property-Description.typedefinitions">type definitions</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-ElementDeclaration">Element Declaration</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-ElementDeclaration.name">name</a>}, {<a href=
"#property-ElementDeclaration.system">system</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Endpoint">Endpoint</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-Endpoint.address">address</a>}, {<a href=
"#property-Endpoint.binding">binding</a>}, {<a href=
"#property-Endpoint.name">name</a>}, {<a href=
"#property-Endpoint.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Interface">Interface</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-Interface.extendedinterfaces">extended interfaces</a>},
{<a href="#property-Interface.interfacefaults">interface
faults</a>}, {<a href=
"#property-Interface.interfaceoperations">interface
operations</a>}, {<a href="#property-Interface.name">name</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceFault">Interface Fault</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFault.elementdeclaration">element
declaration</a>}, {<a href=
"#property-InterfaceFault.messagecontentmodel">message content
model</a>}, {<a href="#property-InterfaceFault.name">name</a>},
{<a href="#property-InterfaceFault.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceFaultReference">Interface Fault
Reference</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceFaultReference.direction">direction</a>},
{<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>}, {<a href=
"#property-InterfaceFaultReference.messagelabel">message
label</a>}, {<a href=
"#property-InterfaceFaultReference.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceMessageReference.direction">direction</a>},
{<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>}, {<a href=
"#property-InterfaceMessageReference.messagecontentmodel">message
content model</a>}, {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>}, {<a href=
"#property-InterfaceMessageReference.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-InterfaceOperation">Interface Operation</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>}, {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>}, {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>}, {<a href=
"#property-InterfaceOperation.name">name</a>}, {<a href=
"#property-InterfaceOperation.parent">parent</a>}, {<a href=
"#property-InterfaceOperation.style">style</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-Service">Service</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-Service.endpoints">endpoints</a>}, {<a href=
"#property-Service.interface">interface</a>}, {<a href=
"#property-Service.name">name</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a href=
"#component-TypeDefinition">Type Definition</a></td>
<td rowspan="1" colspan="1">{<a href=
"#property-TypeDefinition.name">name</a>}, {<a href=
"#property-TypeDefinition.system">system</a>}</td>
</tr>
<tr>
<th rowspan="1" colspan="1">Property</th>
<th rowspan="1" colspan="1">Where Defined</th>
</tr>
<tr>
<td rowspan="1" colspan="1">address</td>
<td rowspan="1" colspan="1">Endpoint.{<a href=
"#property-Endpoint.address">address</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">binding</td>
<td rowspan="1" colspan="1">Endpoint.{<a href=
"#property-Endpoint.binding">binding</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">binding fault references</td>
<td rowspan="1" colspan="1">Binding Operation.{<a href=
"#property-BindingOperation.bindingfaultreferences">binding fault
references</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">binding faults</td>
<td rowspan="1" colspan="1">Binding.{<a href=
"#property-Binding.bindingfaults">binding faults</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">binding message references</td>
<td rowspan="1" colspan="1">Binding Operation.{<a href=
"#property-BindingOperation.bindingmessagereferences">binding
message references</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">binding operations</td>
<td rowspan="1" colspan="1">Binding.{<a href=
"#property-Binding.bindingoperations">binding operations</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">bindings</td>
<td rowspan="1" colspan="1">Description.{<a href=
"#property-Description.bindings">bindings</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">direction</td>
<td rowspan="1" colspan="1">Interface Fault Reference.{<a href=
"#property-InterfaceFaultReference.direction">direction</a>},
Interface Message Reference.{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">element declaration</td>
<td rowspan="1" colspan="1">Interface Fault.{<a href=
"#property-InterfaceFault.elementdeclaration">element
declaration</a>}, Interface Message Reference.{<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">element declarations</td>
<td rowspan="1" colspan="1">Description.{<a href=
"#property-Description.elementdeclarations">element
declarations</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">endpoints</td>
<td rowspan="1" colspan="1">Service.{<a href=
"#property-Service.endpoints">endpoints</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">extended interfaces</td>
<td rowspan="1" colspan="1">Interface.{<a href=
"#property-Interface.extendedinterfaces">extended
interfaces</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface</td>
<td rowspan="1" colspan="1">Binding.{<a href=
"#property-Binding.interface">interface</a>}, Service.{<a href=
"#property-Service.interface">interface</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface fault</td>
<td rowspan="1" colspan="1">Binding Fault.{<a href=
"#property-BindingFault.interfacefault">interface fault</a>},
Interface Fault Reference.{<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface fault reference</td>
<td rowspan="1" colspan="1">Binding Fault Reference.{<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface fault references</td>
<td rowspan="1" colspan="1">Interface Operation.{<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface faults</td>
<td rowspan="1" colspan="1">Interface.{<a href=
"#property-Interface.interfacefaults">interface faults</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface message reference</td>
<td rowspan="1" colspan="1">Binding Message Reference.{<a href=
"#property-BindingMessageReference.interfacemessagereference">interface
message reference</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface message references</td>
<td rowspan="1" colspan="1">Interface Operation.{<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface operation</td>
<td rowspan="1" colspan="1">Binding Operation.{<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interface operations</td>
<td rowspan="1" colspan="1">Interface.{<a href=
"#property-Interface.interfaceoperations">interface
operations</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">interfaces</td>
<td rowspan="1" colspan="1">Description.{<a href=
"#property-Description.interfaces">interfaces</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">message content model</td>
<td rowspan="1" colspan="1">Interface Fault.{<a href=
"#property-InterfaceFault.messagecontentmodel">message content
model</a>}, Interface Message Reference.{<a href=
"#property-InterfaceMessageReference.messagecontentmodel">message
content model</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">message exchange pattern</td>
<td rowspan="1" colspan="1">Interface Operation.{<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">message label</td>
<td rowspan="1" colspan="1">Interface Fault Reference.{<a href=
"#property-InterfaceFaultReference.messagelabel">message
label</a>}, Interface Message Reference.{<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">name</td>
<td rowspan="1" colspan="1">.{<a href="#property-.name">name</a>},
Binding.{<a href="#property-Binding.name">name</a>}, Element
Declaration.{<a href="#property-ElementDeclaration.name">name</a>},
Endpoint.{<a href="#property-Endpoint.name">name</a>},
Interface.{<a href="#property-Interface.name">name</a>}, Interface
Fault.{<a href="#property-InterfaceFault.name">name</a>}, Interface
Operation.{<a href="#property-InterfaceOperation.name">name</a>},
Service.{<a href="#property-Service.name">name</a>}, Type
Definition.{<a href="#property-TypeDefinition.name">name</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">parent</td>
<td rowspan="1" colspan="1">.{<a href=
"#property-.parent">parent</a>}, Binding Fault.{<a href=
"#property-BindingFault.parent">parent</a>}, Binding Fault
Reference.{<a href=
"#property-BindingFaultReference.parent">parent</a>}, Binding
Message Reference.{<a href=
"#property-BindingMessageReference.parent">parent</a>}, Binding
Operation.{<a href="#property-BindingOperation.parent">parent</a>},
Endpoint.{<a href="#property-Endpoint.parent">parent</a>},
Interface Fault.{<a href=
"#property-InterfaceFault.parent">parent</a>}, Interface Fault
Reference.{<a href=
"#property-InterfaceFaultReference.parent">parent</a>}, Interface
Message Reference.{<a href=
"#property-InterfaceMessageReference.parent">parent</a>}, Interface
Operation.{<a href=
"#property-InterfaceOperation.parent">parent</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">services</td>
<td rowspan="1" colspan="1">Description.{<a href=
"#property-Description.services">services</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">style</td>
<td rowspan="1" colspan="1">Interface Operation.{<a href=
"#property-InterfaceOperation.style">style</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">system</td>
<td rowspan="1" colspan="1">Element Declaration.{<a href=
"#property-ElementDeclaration.system">system</a>}, Type
Definition.{<a href=
"#property-TypeDefinition.system">system</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">type</td>
<td rowspan="1" colspan="1">Binding.{<a href=
"#property-Binding.type">type</a>}</td>
</tr>
<tr>
<td rowspan="1" colspan="1">type definitions</td>
<td rowspan="1" colspan="1">Description.{<a href=
"#property-Description.typedefinitions">type definitions</a>}</td>
</tr>
</tbody>
</table>
<br /></div>
<h2><a name="assertionsummary" id="assertionsummary"></a>E.
Assertion Summary (Non-Normative)</h2>
<p>This appendix summarizes assertions about WSDL 2.0 documents and
components that are not enforced by the WSDL 2.0 schema. Each
assertion is assigned a unique identifier which WSDL 2.0 processors
may use to report errors.</p>
<a name="document-assertion-summary" id=
"document-assertion-summary"></a>
<table width="100%" border="1">
<caption>Table E-1. Summary of Assertions about WSDL 2.0
Documents</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Id</th>
<th rowspan="1" colspan="1">Assertion</th>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1004-summary"
href="#Description-1004" id=
"Description-1004-summary">Description-1004</a></td>
<td rowspan="1" colspan="1">If a WSDL 2.0 document is split into
multiple WSDL 2.0 documents (which may be combined as needed via
<a href="#includes"><strong>4.1 Including
Descriptions</strong></a>), then the <code>targetNamespace</code>
<em>attribute information item</em> SHOULD resolve to a master WSDL
2.0 document that includes all the WSDL 2.0 documents needed for
that service description.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1005-summary"
href="#Description-1005" id=
"Description-1005-summary">Description-1005</a></td>
<td rowspan="1" colspan="1">Zero or more <em>element information
item</em>s amongst its [children], in order as follows:</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1006-summary"
href="#Description-1006" id=
"Description-1006-summary">Description-1006</a></td>
<td rowspan="1" colspan="1">Its value MUST be an absolute IRI (see
[<cite><a href="#RFC3987">IETF RFC 3987</a></cite>]) and should be
dereferencable.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Import-1082-summary" href=
"#Import-1082" id="Import-1082-summary">Import-1082</a></td>
<td rowspan="1" colspan="1">As with XML schema, any WSDL 2.0
document that references a foreign component MUST have a
<code>wsdl:import</code> <em>element information item</em> for the
associated foreign namespace (but which does not necessarily
provide a <code>location</code> <em>attribute information item</em>
that identifies the WSDL 2.0 document in which the referenced
component is defined).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Import-1083-summary" href=
"#Import-1083" id="Import-1083-summary">Import-1083</a></td>
<td rowspan="1" colspan="1">If a WSDL 2.0 document contains more
than one <code>wsdl:import</code> <em>element information item</em>
for a given value of the <code>namespace</code> <em>attribute
information item</em>, then they MUST provide different values for
the <code>location</code> <em>attribute information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Import-1084-summary" href=
"#Import-1084" id="Import-1084-summary">Import-1084</a></td>
<td rowspan="1" colspan="1">This value MUST NOT match the actual
value of <code>targetNamespace</code> <em>attribute information
item</em> in the enclosing WSDL 2.0 document.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Import-1085-summary" href=
"#Import-1085" id="Import-1085-summary">Import-1085</a></td>
<td rowspan="1" colspan="1">If the location attribute in the
<code>import</code> <em>element information item</em> is
dereferencable, then it MUST reference a WSDL 2.0 document.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Import-1086-summary" href=
"#Import-1086" id="Import-1086-summary">Import-1086</a></td>
<td rowspan="1" colspan="1">If the <code>location</code>
<em>attribute information item</em> of the <code>import</code>
<em>element information item</em> is dereferencable, then the
actual value of the <code>namespace</code> <em>attribute
information item</em> MUST be identical to the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the referenced WSDL 2.0 document (see <a href=
"#wsdllocation"><strong>7. Locating WSDL 2.0
Documents</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Include-1080-summary" href=
"#Include-1080" id="Include-1080-summary">Include-1080</a></td>
<td rowspan="1" colspan="1">The IRI indicated by
<code>location</code> MUST resolve to a WSDL 2.0 document.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Include-1081-summary" href=
"#Include-1081" id="Include-1081-summary">Include-1081</a></td>
<td rowspan="1" colspan="1">The actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the included WSDL 2.0 document MUST match the actual value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the <code>description</code> <em>element information item</em>
which is the [parent] of the <code>include</code> <em>element
information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Interface-1012-summary" href=
"#Interface-1012" id=
"Interface-1012-summary">Interface-1012</a></td>
<td rowspan="1" colspan="1">Its value, if present, MUST contain
absolute IRIs (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="InterfaceFault-1017-summary"
href="#InterfaceFault-1017" id=
"InterfaceFault-1017-summary">InterfaceFault-1017</a></td>
<td rowspan="1" colspan="1">If the <code>element</code>
<em>attribute information item</em> has a value, then it MUST
resolve to an <a href="#component-ElementDeclaration">Element
Declaration</a> component from the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceFaultReference-1040-summary" href=
"#InterfaceFaultReference-1040" id=
"InterfaceFaultReference-1040-summary">InterfaceFaultReference-1040</a></td>
<td rowspan="1" colspan="1">The <code>messageLabel</code>
<em>attribute information item</em> MUST be present in the XML
representation of an <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component with a given {<a href=
"#property-InterfaceFaultReference.direction">direction</a>}, if
the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the parent <a href=
"#component-InterfaceOperation">Interface Operation</a> component
has more than one fault with that direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceMessageReference-1036-summary" href=
"#InterfaceMessageReference-1036" id=
"InterfaceMessageReference-1036-summary">InterfaceMessageReference-1036</a></td>
<td rowspan="1" colspan="1">If the <code>element</code>
<em>attribute information item</em> has a value, then it MUST
resolve to an <a href="#component-ElementDeclaration">Element
Declaration</a> component from the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property of the <a href=
"#component-Description">Description</a> component.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Location-1092-summary" href=
"#Location-1092" id="Location-1092-summary">Location-1092</a></td>
<td rowspan="1" colspan="1">It MUST NOT appear on a
<code>wsdl:description</code> element or any of its
children/descendants.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Location-1094-summary" href=
"#Location-1094" id="Location-1094-summary">Location-1094</a></td>
<td rowspan="1" colspan="1">For each pair of IRIs, if the location
IRI of the pair is dereferencable, then it MUST reference a WSDL
2.0 (or 1.1) document whose target namespace is the namespace IRI
of the pair.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1030-summary"
href="#MessageLabel-1030" id=
"MessageLabel-1030-summary">MessageLabel-1030</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of an interface message
reference <em>element information item</em> is present, then its
actual value MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1031-summary"
href="#MessageLabel-1031" id=
"MessageLabel-1031-summary">MessageLabel-1031</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of an interface message
reference <em>element information item</em> is absent then there
MUST be a unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1032-summary"
href="#MessageLabel-1032" id=
"MessageLabel-1032-summary">MessageLabel-1032</a></td>
<td rowspan="1" colspan="1">If the local name is <code>input</code>
then the message exchange pattern MUST have at least one
placeholder message with direction "In".</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1033-summary"
href="#MessageLabel-1033" id=
"MessageLabel-1033-summary">MessageLabel-1033</a></td>
<td rowspan="1" colspan="1">If the local name is
<code>output</code> then the message exchange pattern MUST have at
least one placeholder message with direction "Out".</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1034-summary"
href="#MessageLabel-1034" id=
"MessageLabel-1034-summary">MessageLabel-1034</a></td>
<td rowspan="1" colspan="1">If the local name is
<code>infault</code> then the message exchange pattern MUST support
at least one fault in the "In" direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1035-summary"
href="#MessageLabel-1035" id=
"MessageLabel-1035-summary">MessageLabel-1035</a></td>
<td rowspan="1" colspan="1">If the local name is
<code>outfault</code> then the message exchange pattern MUST
support at least one fault in the "Out" direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1041-summary"
href="#MessageLabel-1041" id=
"MessageLabel-1041-summary">MessageLabel-1041</a></td>
<td rowspan="1" colspan="1">The <code>messageLabel</code>
<em>attribute information item</em> of an interface fault reference
<em>element information item</em> MUST be present if the message
exchange pattern has more than one placeholder message with
{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1042-summary"
href="#MessageLabel-1042" id=
"MessageLabel-1042-summary">MessageLabel-1042</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of an interface fault reference
<em>element information item</em> is present then its actual value
MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1043-summary"
href="#MessageLabel-1043" id=
"MessageLabel-1043-summary">MessageLabel-1043</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of an interface fault reference
<em>element information item</em> is absent then there MUST be a
unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1053-summary"
href="#MessageLabel-1053" id=
"MessageLabel-1053-summary">MessageLabel-1053</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of a binding message reference
<em>element information item</em> is present then its actual value
MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1054-summary"
href="#MessageLabel-1054" id=
"MessageLabel-1054-summary">MessageLabel-1054</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of a binding message reference
<em>element information item</em> is absent then there MUST be a
unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1056-summary"
href="#MessageLabel-1056" id=
"MessageLabel-1056-summary">MessageLabel-1056</a></td>
<td rowspan="1" colspan="1">The <code>messageLabel</code>
<em>attribute information item</em> of a binding fault reference
<em>element information item</em> MUST be present if the message
exchange pattern has more than one placeholder message with
{<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1057-summary"
href="#MessageLabel-1057" id=
"MessageLabel-1057-summary">MessageLabel-1057</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of a binding fault reference
<em>element information item</em> is present then its actual value
MUST match the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} of some placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1058-summary"
href="#MessageLabel-1058" id=
"MessageLabel-1058-summary">MessageLabel-1058</a></td>
<td rowspan="1" colspan="1">If the <code>messageLabel</code>
<em>attribute information item</em> of a binding fault reference
<em>element information item</em> is absent then there MUST be a
unique placeholder message with {<a href=
"#property-InterfaceMessageReference.direction">direction</a>}
equal to the message direction.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="QName-resolution-1064-summary"
href="#QName-resolution-1064" id=
"QName-resolution-1064-summary">QName-resolution-1064</a></td>
<td rowspan="1" colspan="1">A <a href=
"#component-Description">Description</a> component MUST NOT have
such broken references.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1066-summary" href=
"#Schema-1066" id="Schema-1066-summary">Schema-1066</a></td>
<td rowspan="1" colspan="1">A WSDL 2.0 document MUST NOT refer to
XML Schema components in a given namespace UNLESS an
<code>xs:import</code> or <code>xs:schema</code> <em>element
information item</em> for that namespace is present OR the
namespace is the XML Schema namespace,
http://www.w3.org/2001/XMLSchema, which contains built-in types as
defined in XML Schema Part 2: Datatypes Second Edition
[<cite><a href="#XMLSchemaP2">XML Schema:
Datatypes</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1069-summary" href=
"#Schema-1069" id="Schema-1069-summary">Schema-1069</a></td>
<td rowspan="1" colspan="1">The referenced schema MUST contain a
<code>targetNamespace</code> <em>attribute information item</em> on
its <code>xs:schema</code> <em>element information item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1070-summary" href=
"#Schema-1070" id="Schema-1070-summary">Schema-1070</a></td>
<td rowspan="1" colspan="1">The value of the
<code>targetNamespace</code> <em>attribute information item</em> of
the <code>xs:schema</code> <em>element information item</em> of an
imported schema MUST equal the value of the <code>namespace</code>
of the <code>import</code> <em>element information item</em> in the
importing WSDL 2.0 document.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1073-summary" href=
"#Schema-1073" id="Schema-1073-summary">Schema-1073</a></td>
<td rowspan="1" colspan="1">A WSDL 2.0 document MUST NOT define the
same element or type in more than one inlined schema.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1075-summary" href=
"#Schema-1075" id="Schema-1075-summary">Schema-1075</a></td>
<td rowspan="1" colspan="1">A specification of extension syntax for
an alternative schema language MUST use a namespace that is
different than the namespace of XML Schema.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1076-summary" href=
"#Schema-1076" id="Schema-1076-summary">Schema-1076</a></td>
<td rowspan="1" colspan="1">The namespace used for an alternate
schema language MUST be an absolute IRI.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Schema-1079-summary" href=
"#Schema-1079" id="Schema-1079-summary">Schema-1079</a></td>
<td rowspan="1" colspan="1">If <code>wsdlx:interface</code> and
<code>wsdlx:binding</code> are used together then they MUST satisfy
the same consistency rules that apply to the {<a href=
"#property-Service.interface">interface</a>} property of a <a href=
"#component-Service">Service</a> component and the {<a href=
"#property-Endpoint.binding">binding</a>} property of a nested
<a href="#component-Endpoint">Endpoint</a> component, that is
either the binding refers the interface of the service or the
binding refers to no interface.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Types-1074-summary" href=
"#Types-1074" id="Types-1074-summary">Types-1074</a></td>
<td rowspan="1" colspan="1">A specification of extension syntax for
an alternative schema language MUST include the declaration of an
<em>element information item</em>, intended to appear as a child of
the <code>wsdl:types</code> <em>element information item</em>,
which references, names, and locates the schema instance (an
<code>import</code> <em>element information item</em>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Types-1077-summary" href=
"#Types-1077" id="Types-1077-summary">Types-1077</a></td>
<td rowspan="1" colspan="1">The type of the
<code>wsdlx:interface</code> <em>attribute information item</em> is
an <em>xs:QName</em> that specifies the {<a href=
"#property-Interface.name">name</a>} property of an <a href=
"#component-Interface">Interface</a> component.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Types-1078-summary" href=
"#Types-1078" id="Types-1078-summary">Types-1078</a></td>
<td rowspan="1" colspan="1">The type of the
<code>wsdlx:binding</code> <em>attribute information item</em> is
an <em>xs:QName</em> that specifies the {<a href=
"#property-Binding.name">name</a>} property of a <a href=
"#component-Binding">Binding</a> component.</td>
</tr>
</tbody>
</table>
<br />
<a name="component-assertion-summary" id=
"component-assertion-summary"></a>
<table width="100%" border="1">
<caption>Table E-2. Summary of Assertions about WSDL 2.0
Components</caption>
<col width="20%" span="1" />
<col width="80%" span="1" />
<tbody>
<tr>
<th rowspan="1" colspan="1">Id</th>
<th rowspan="1" colspan="1">Assertion</th>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Binding-1044-summary" href=
"#Binding-1044" id="Binding-1044-summary">Binding-1044</a></td>
<td rowspan="1" colspan="1">If a <a href=
"#component-Binding">Binding</a> component specifies any
operation-specific binding details (by including <a href=
"#component-BindingOperation">Binding Operation</a> components) or
any fault binding details (by including <a href=
"#component-BindingFault">Binding Fault</a> components), then it
MUST specify an interface the <a href=
"#component-Binding">Binding</a> component applies to, so as to
indicate which interface the operations come from.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Binding-1045-summary" href=
"#Binding-1045" id="Binding-1045-summary">Binding-1045</a></td>
<td rowspan="1" colspan="1">A <a href=
"#component-Binding">Binding</a> component that defines bindings
for an <a href="#component-Interface">Interface</a> component MUST
define bindings for all the operations of that <a href=
"#component-Interface">Interface</a> component.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Binding-1046-summary" href=
"#Binding-1046" id="Binding-1046-summary">Binding-1046</a></td>
<td rowspan="1" colspan="1">Similarly, whenever a reusable <a href=
"#component-Binding">Binding</a> component (i.e. one that does not
specify an <a href="#component-Interface">Interface</a> component)
is applied to a specific <a href=
"#component-Interface">Interface</a> component in the context of an
<a href="#component-Endpoint">Endpoint</a> component (see <a href=
"#Endpoint_details"><strong>2.13.1 The Endpoint
Component</strong></a>), the <a href=
"#component-Binding">Binding</a> component MUST define bindings for
each <a href="#component-InterfaceOperation">Interface
Operation</a> and <a href="#component-InterfaceFault">Interface
Fault</a> component of the <a href=
"#component-Interface">Interface</a> component, via a combination
of properties defined on the <a href=
"#component-Binding">Binding</a> component itself and default
binding rules specific to its binding type.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Binding-1047-summary" href=
"#Binding-1047" id="Binding-1047-summary">Binding-1047</a></td>
<td rowspan="1" colspan="1">A <a href=
"#component-Binding">Binding</a> component that defines bindings
for an <a href="#component-Interface">Interface</a> component MUST
define bindings for all the faults of that <a href=
"#component-Interface">Interface</a> component that are referenced
from any of the operations in that <a href=
"#component-Interface">Interface</a> component.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Binding-1048-summary" href=
"#Binding-1048" id="Binding-1048-summary">Binding-1048</a></td>
<td rowspan="1" colspan="1">This <em>xs:anyURI</em> MUST be an
absolute IRI as defined by [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Binding-1049-summary" href=
"#Binding-1049" id="Binding-1049-summary">Binding-1049</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-Binding">Binding</a> component in the {<a href=
"#property-Description.bindings">bindings</a>} property of a
<a href="#component-Description">Description</a> component, the
{<a href="#property-Binding.name">name</a>} property MUST be
unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="BindingFault-1050-summary"
href="#BindingFault-1050" id=
"BindingFault-1050-summary">BindingFault-1050</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-BindingFault">Binding Fault</a> component in the
{<a href="#property-Binding.bindingfaults">binding faults</a>}
property of a <a href="#component-Binding">Binding</a> component,
the {<a href="#property-BindingFault.interfacefault">interface
fault</a>} property MUST be unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"BindingFaultReference-1055-summary" href=
"#BindingFaultReference-1055" id=
"BindingFaultReference-1055-summary">BindingFaultReference-1055</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-BindingFaultReference">Binding Fault Reference</a>
component in the {<a href=
"#property-BindingOperation.bindingfaultreferences">binding fault
references</a>} property of a <a href=
"#component-BindingOperation">Binding Operation</a> component, the
{<a href=
"#property-BindingFaultReference.interfacefaultreference">interface
fault reference</a>} property MUST be unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"BindingFaultReference-1059-summary" href=
"#BindingFaultReference-1059" id=
"BindingFaultReference-1059-summary">BindingFaultReference-1059</a></td>
<td rowspan="1" colspan="1">There MUST be an <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> being bound
with {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
equal to the effective message label and with {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} equal to an <a href=
"#component-InterfaceFault">Interface Fault</a> component with
{<a href="#property-InterfaceFault.name">name</a>} equal to the
actual value of the <code>ref</code> <em>attribute information
item</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"BindingMessageReference-1052-summary" href=
"#BindingMessageReference-1052" id=
"BindingMessageReference-1052-summary">BindingMessageReference-1052</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-BindingMessageReference">Binding Message Reference</a>
component in the {<a href=
"#property-BindingOperation.bindingmessagereferences">binding
message references</a>} property of a <a href=
"#component-BindingOperation">Binding Operation</a> component, the
{<a href=
"#property-BindingMessageReference.interfacemessagereference">interface
message reference</a>} property MUST be unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="BindingOperation-1051-summary"
href="#BindingOperation-1051" id=
"BindingOperation-1051-summary">BindingOperation-1051</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-BindingOperation">Binding Operation</a> component in
the {<a href="#property-Binding.bindingoperations">binding
operations</a>} property of a <a href=
"#component-Binding">Binding</a> component, the {<a href=
"#property-BindingOperation.interfaceoperation">interface
operation</a>} property MUST be unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1097-summary"
href="#CanonFragId-1097" id=
"CanonFragId-1097-summary">CanonFragId-1097</a></td>
<td rowspan="1" colspan="1">The fragment identifier consists of a
sequence zero or more <code>xmlns()</code> pointer parts followed
by exactly one <code>wsdl.*()</code> pointer part.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1098-summary"
href="#CanonFragId-1098" id=
"CanonFragId-1098-summary">CanonFragId-1098</a></td>
<td rowspan="1" colspan="1">Each <code>xmlns()</code> pointer part
that appears in the fragment identifier defines a namespace that is
referenced by the <code>wsdl.*()</code> pointer part.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1099-summary"
href="#CanonFragId-1099" id=
"CanonFragId-1099-summary">CanonFragId-1099</a></td>
<td rowspan="1" colspan="1">Each <code>xmlns()</code> pointer part
defines a unique namespace.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1100-summary"
href="#CanonFragId-1100" id=
"CanonFragId-1100-summary">CanonFragId-1100</a></td>
<td rowspan="1" colspan="1">The <code>xmlns()</code> pointer parts
define namespaces in the same order as they are referenced in the
<code>wsdl.*()</code> pointer part.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1101-summary"
href="#CanonFragId-1101" id=
"CanonFragId-1101-summary">CanonFragId-1101</a></td>
<td rowspan="1" colspan="1">The namespace prefixes defined by the
<code>xmlns()</code> pointer parts are named <code>ns1</code> ,
<code>ns2</code> , etc., in the order of their appearance.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1102-summary"
href="#CanonFragId-1102" id=
"CanonFragId-1102-summary">CanonFragId-1102</a></td>
<td rowspan="1" colspan="1">The fragment identifier contains no
optional whitespace.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="CanonFragId-1103-summary"
href="#CanonFragId-1103" id=
"CanonFragId-1103-summary">CanonFragId-1103</a></td>
<td rowspan="1" colspan="1">No <code>xmlns()</code> pointer part
defines a namespace for the targetNamespace of the WSDL 2.0
document.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Compare-URI-IRI-1065-summary"
href="#Compare-URI-IRI-1065" id=
"Compare-URI-IRI-1065-summary">Compare-URI-IRI-1065</a></td>
<td rowspan="1" colspan="1">When such absolute URIs and IRIs are
being compared to determine equivalence (see <a href=
"#compequiv"><strong>2.15 Equivalence of Components</strong></a>),
they MUST be compared character-by-character as indicated in
[<cite><a href="#RFC3987">IETF RFC 3987</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1001-summary"
href="#Description-1001" id=
"Description-1001-summary">Description-1001</a></td>
<td rowspan="1" colspan="1">The value of the
<code>targetNamespace</code> <em>attribute information item</em>
SHOULD be dereferencable.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1002-summary"
href="#Description-1002" id=
"Description-1002-summary">Description-1002</a></td>
<td rowspan="1" colspan="1">It SHOULD resolve to a human or machine
processable document that directly or indirectly defines the
intended semantics of those components.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1003-summary"
href="#Description-1003" id=
"Description-1003-summary">Description-1003</a></td>
<td rowspan="1" colspan="1">It MAY resolve to a WSDL 2.0 document
that provides service description information for that
namespace.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1067-summary"
href="#Description-1067" id=
"Description-1067-summary">Description-1067</a></td>
<td rowspan="1" colspan="1">For each component in the imported
namespace, a corresponding <a href=
"#component-ElementDeclaration">Element Declaration</a> component
or <a href="#component-TypeDefinition">Type Definition</a>
component MUST appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
property respectively of the <a href=
"#component-Description">Description</a> component corresponding to
the WSDL document that imports the schema, or that imports directly
or indirectly a WSDL document that imports the schema.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1068-summary"
href="#Description-1068" id=
"Description-1068-summary">Description-1068</a></td>
<td rowspan="1" colspan="1">Schema components not in an imported
namespace MUST NOT appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
properties.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1071-summary"
href="#Description-1071" id=
"Description-1071-summary">Description-1071</a></td>
<td rowspan="1" colspan="1">For each component defined and declared
in the inlined schema document or included by
<code>xs:include</code>, a corresponding <a href=
"#component-ElementDeclaration">Element Declaration</a> component
or <a href="#component-TypeDefinition">Type Definition</a>
component MUST appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} property or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
property respectively of the <a href=
"#component-Description">Description</a> component corresponding to
the WSDL document that contains the schema, or that imports
directly or indirectly a WSDL document that contains the
schema.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Description-1072-summary"
href="#Description-1072" id=
"Description-1072-summary">Description-1072</a></td>
<td rowspan="1" colspan="1">Schema components not defined or
declared in the inlined schema document or included by
<code>xs:include</code> MUST NOT appear in the {<a href=
"#property-Description.elementdeclarations">element
declarations</a>} or {<a href=
"#property-Description.typedefinitions">type definitions</a>}
properties.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Endpoint-1061-summary" href=
"#Endpoint-1061" id="Endpoint-1061-summary">Endpoint-1061</a></td>
<td rowspan="1" colspan="1">This <em>xs:anyURI</em> MUST be an
absolute IRI as defined by [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>].</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Endpoint-1062-summary" href=
"#Endpoint-1062" id="Endpoint-1062-summary">Endpoint-1062</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-Endpoint">Endpoint</a> component in the {<a href=
"#property-Service.endpoints">endpoints</a>} property of a <a href=
"#component-Service">Service</a> component, the {<a href=
"#property-Endpoint.binding">binding</a>} property MUST either be a
<a href="#component-Binding">Binding</a> component with an
unspecified {<a href="#property-Binding.interface">interface</a>}
property or a <a href="#component-Binding">Binding</a> component
with an {<a href="#property-Binding.interface">interface</a>}
property equal to the {<a href=
"#property-Service.interface">interface</a>} property of the
<a href="#component-Service">Service</a> component.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Equivalence-1063-summary"
href="#Equivalence-1063" id=
"Equivalence-1063-summary">Equivalence-1063</a></td>
<td rowspan="1" colspan="1">Extension properties which are not
string values, sets of strings or references MUST describe their
values' equivalence rules.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Extensibility-1089-summary"
href="#Extensibility-1089" id=
"Extensibility-1089-summary">Extensibility-1089</a></td>
<td rowspan="1" colspan="1">An extension that is NOT marked as
mandatory MUST NOT invalidate the meaning of any part of a WSDL 2.0
document.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Extensibility-1090-summary"
href="#Extensibility-1090" id=
"Extensibility-1090-summary">Extensibility-1090</a></td>
<td rowspan="1" colspan="1">If a WSDL 2.0 document declares an
extension as optional (i.e., NON-mandatory), then the Web service
MUST NOT assume that the client supports that extension
<em>unless</em> the Web service knows (through some other means)
that the client has in fact elected to engage and support that
extension.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Extensibility-1091-summary"
href="#Extensibility-1091" id=
"Extensibility-1091-summary">Extensibility-1091</a></td>
<td rowspan="1" colspan="1">Therefore, the Web service MUST support
every extension that is declared as optional in the WSDL 2.0
document, in addition to supporting every extension that is
declared as mandatory.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Extension-1088-summary" href=
"#Extension-1088" id=
"Extension-1088-summary">Extension-1088</a></td>
<td rowspan="1" colspan="1">The meaning of an extension SHOULD be
defined (directly or indirectly) in a document that is available at
its namespace IRI.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="FragId-1095-summary" href=
"#FragId-1095" id="FragId-1095-summary">FragId-1095</a></td>
<td rowspan="1" colspan="1">For QNames, any prefix MUST be defined
by a preceding xmlns pointer part.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="FragId-1096-summary" href=
"#FragId-1096" id="FragId-1096-summary">FragId-1096</a></td>
<td rowspan="1" colspan="1">The fragment identifier in a WSDL 2.0
component IRI-reference MUST resolve to some component as defined
by the construction rules in <a href="#frag-ids-table">Table
A-1</a>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="ImportInclude-1087-summary"
href="#ImportInclude-1087" id=
"ImportInclude-1087-summary">ImportInclude-1087</a></td>
<td rowspan="1" colspan="1">The semantics of an extension MUST NOT
depend on how components are brought into a component model
instance via &lt;import&gt; or &lt;include&gt;.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Interface-1009-summary" href=
"#Interface-1009" id=
"Interface-1009-summary">Interface-1009</a></td>
<td rowspan="1" colspan="1">To avoid circular definitions, an
interface MUST NOT appear in the set of interfaces it extends,
either directly or indirectly.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Interface-1010-summary" href=
"#Interface-1010" id=
"Interface-1010-summary">Interface-1010</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-Interface">Interface</a> component in the {<a href=
"#property-Description.interfaces">interfaces</a>} property of a
<a href="#component-Description">Description</a> component, the
{<a href="#property-Interface.name">name</a>} property MUST be
unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Interface-1011-summary" href=
"#Interface-1011" id=
"Interface-1011-summary">Interface-1011</a></td>
<td rowspan="1" colspan="1">The list of <em>xs:QName</em> in an
<code>extends</code> <em>attribute information item</em> MUST NOT
contain duplicates.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="InterfaceFault-1013-summary"
href="#InterfaceFault-1013" id=
"InterfaceFault-1013-summary">InterfaceFault-1013</a></td>
<td rowspan="1" colspan="1">An <em>xs:token</em> with one of the
values <em>#any</em>, <em>#none</em>, <em>#other</em>, or
<em>#element</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="InterfaceFault-1014-summary"
href="#InterfaceFault-1014" id=
"InterfaceFault-1014-summary">InterfaceFault-1014</a></td>
<td rowspan="1" colspan="1">When the {<a href=
"#property-InterfaceFault.messagecontentmodel">message content
model</a>} property has the value <em>#any</em> or <em>#none</em>
the {<a href="#property-InterfaceFault.elementdeclaration">element
declaration</a>} property MUST be empty.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="InterfaceFault-1015-summary"
href="#InterfaceFault-1015" id=
"InterfaceFault-1015-summary">InterfaceFault-1015</a></td>
<td rowspan="1" colspan="1">In cases where, due to an interface
extending one or more other interfaces, two or more <a href=
"#component-InterfaceFault">Interface Fault</a> components have the
same value for their {<a href=
"#property-InterfaceFault.name">name</a>} property, then the
component models of those <a href=
"#component-InterfaceFault">Interface Fault</a> components MUST be
equivalent (see <a href="#compequiv"><strong>2.15 Equivalence of
Components</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="InterfaceFault-1016-summary"
href="#InterfaceFault-1016" id=
"InterfaceFault-1016-summary">InterfaceFault-1016</a></td>
<td rowspan="1" colspan="1">For the above reason, it is considered
good practice to ensure, where necessary, that the local name of
the {<a href="#property-InterfaceFault.name">name</a>} property of
<a href="#component-InterfaceFault">Interface Fault</a> components
within a namespace SHOULD be unique, thus allowing such derivation
to occur without inadvertent error.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceFaultReference-1037-summary" href=
"#InterfaceFaultReference-1037" id=
"InterfaceFaultReference-1037-summary">InterfaceFaultReference-1037</a></td>
<td rowspan="1" colspan="1">The value of this property MUST match
the name of a placeholder message defined by the message exchange
pattern.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceFaultReference-1038-summary" href=
"#InterfaceFaultReference-1038" id=
"InterfaceFaultReference-1038-summary">InterfaceFaultReference-1038</a></td>
<td rowspan="1" colspan="1">The direction MUST be consistent with
the direction implied by the fault propagation ruleset used in the
message exchange pattern of the operation.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceFaultReference-1039-summary" href=
"#InterfaceFaultReference-1039" id=
"InterfaceFaultReference-1039-summary">InterfaceFaultReference-1039</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-InterfaceFaultReference">Interface Fault Reference</a>
component in the {<a href=
"#property-InterfaceOperation.interfacefaultreferences">interface
fault references</a>} property of an <a href=
"#component-InterfaceOperation">Interface Operation</a> component,
the combination of its {<a href=
"#property-InterfaceFaultReference.interfacefault">interface
fault</a>} and {<a href=
"#property-InterfaceFaultReference.messagelabel">message label</a>}
properties MUST be unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceMessageReference-1025-summary" href=
"#InterfaceMessageReference-1025" id=
"InterfaceMessageReference-1025-summary">InterfaceMessageReference-1025</a></td>
<td rowspan="1" colspan="1">An <em>xs:token</em> with one of the
values <em>in</em> or <em>out</em>, indicating whether the message
is coming to the service or going from the service,
respectively.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceMessageReference-1026-summary" href=
"#InterfaceMessageReference-1026" id=
"InterfaceMessageReference-1026-summary">InterfaceMessageReference-1026</a></td>
<td rowspan="1" colspan="1">The direction MUST be the same as the
direction of the message identified by the {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property in the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component
this is contained within.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceMessageReference-1027-summary" href=
"#InterfaceMessageReference-1027" id=
"InterfaceMessageReference-1027-summary">InterfaceMessageReference-1027</a></td>
<td rowspan="1" colspan="1">An <em>xs:token</em> with one of the
values <em>#any</em>, <em>#none</em>, <em>#other</em>, or
<em>#element</em>.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceMessageReference-1028-summary" href=
"#InterfaceMessageReference-1028" id=
"InterfaceMessageReference-1028-summary">InterfaceMessageReference-1028</a></td>
<td rowspan="1" colspan="1">When the {<a href=
"#property-InterfaceMessageReference.messagecontentmodel">message
content model</a>} property has the value <em>#any</em> or
<em>#none</em>, the {<a href=
"#property-InterfaceMessageReference.elementdeclaration">element
declaration</a>} property MUST be empty.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceMessageReference-1029-summary" href=
"#InterfaceMessageReference-1029" id=
"InterfaceMessageReference-1029-summary">InterfaceMessageReference-1029</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-InterfaceMessageReference">Interface Message
Reference</a> component in the {<a href=
"#property-InterfaceOperation.interfacemessagereferences">interface
message references</a>} property of an <a href=
"#component-InterfaceOperation">Interface Operation</a> component,
its {<a href=
"#property-InterfaceMessageReference.messagelabel">message
label</a>} property MUST be unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceOperation-1018-summary" href="#InterfaceOperation-1018"
id=
"InterfaceOperation-1018-summary">InterfaceOperation-1018</a></td>
<td rowspan="1" colspan="1">This <em>xs:anyURI</em> MUST be an
absolute IRI (see [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>]).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceOperation-1019-summary" href="#InterfaceOperation-1019"
id=
"InterfaceOperation-1019-summary">InterfaceOperation-1019</a></td>
<td rowspan="1" colspan="1">These <em>xs:anyURI</em>s MUST be
absolute IRIs (see [<cite><a href="#RFC3986">IETF RFC
3986</a></cite>]).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceOperation-1020-summary" href="#InterfaceOperation-1020"
id=
"InterfaceOperation-1020-summary">InterfaceOperation-1020</a></td>
<td rowspan="1" colspan="1">In cases where, due to an interface
extending one or more other interfaces, two or more <a href=
"#component-InterfaceOperation">Interface Operation</a> components
have the same value for their {<a href=
"#property-InterfaceOperation.name">name</a>} property, then the
component models of those Interface Operation components MUST be
equivalent (see <a href="#compequiv"><strong>2.15 Equivalence of
Components</strong></a>).</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceOperation-1021-summary" href="#InterfaceOperation-1021"
id=
"InterfaceOperation-1021-summary">InterfaceOperation-1021</a></td>
<td rowspan="1" colspan="1">For the above reason, it is considered
good practice to ensure, where necessary, that the {<a href=
"#property-InterfaceOperation.name">name</a>} property of <a href=
"#component-InterfaceOperation">Interface Operation</a> components
within a namespace SHOULD be unique, thus allowing such derivation
to occur without inadvertent error.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name=
"InterfaceOperation-1023-summary" href="#InterfaceOperation-1023"
id=
"InterfaceOperation-1023-summary">InterfaceOperation-1023</a></td>
<td rowspan="1" colspan="1">An <a href=
"#component-InterfaceOperation">Interface Operation</a> component
MUST satisfy the specification defined by each operation style
identified by its {<a href=
"#property-InterfaceOperation.style">style</a>} property.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Location-1093-summary" href=
"#Location-1093" id="Location-1093-summary">Location-1093</a></td>
<td rowspan="1" colspan="1">Its actual value MUST be a list of
pairs of IRIs; where the first IRI of a pair, which MUST be an
absolute IRI as defined in [<cite><a href="#RFC3987">IETF RFC
3987</a></cite>], indicates a WSDL 2.0 (or 1.1) namespace name,
and, the second a hint as to the location of a WSDL 2.0 document
defining WSDL 2.0 components (or WSDL 1.1 elements [<cite><a href=
"#WSDL11">WSDL 1.1</a></cite>]) for that namespace name.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MEP-1022-summary" href=
"#MEP-1022" id="MEP-1022-summary">MEP-1022</a></td>
<td rowspan="1" colspan="1">A message exchange pattern is itself
uniquely identified by an absolute IRI, which is used as the value
of the {<a href=
"#property-InterfaceOperation.messageexchangepattern">message
exchange pattern</a>} property of the <a href=
"#component-InterfaceOperation">Interface Operation</a> component,
and which specifies the fault propagation ruleset that its faults
obey.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="MessageLabel-1024-summary"
href="#MessageLabel-1024" id=
"MessageLabel-1024-summary">MessageLabel-1024</a></td>
<td rowspan="1" colspan="1">The value of this property MUST match
the name of a placeholder message defined by the message exchange
pattern.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Service-1060-summary" href=
"#Service-1060" id="Service-1060-summary">Service-1060</a></td>
<td rowspan="1" colspan="1">For each <a href=
"#component-Service">Service</a> component in the {<a href=
"#property-Description.services">services</a>} property of a
<a href="#component-Description">Description</a> component, the
{<a href="#property-Service.name">name</a>} property MUST be
unique.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Types-1007-summary" href=
"#Types-1007" id="Types-1007-summary">Types-1007</a></td>
<td rowspan="1" colspan="1">Each XML Schema element declaration
MUST have a unique QName.</td>
</tr>
<tr>
<td rowspan="1" colspan="1"><a name="Types-1008-summary" href=
"#Types-1008" id="Types-1008-summary">Types-1008</a></td>
<td rowspan="1" colspan="1">Each XML Schema type definition MUST
have a unique QName.</td>
</tr>
</tbody>
</table>
<br /></div>
</body>
</html>