- From: Hugo Haas via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 17 Mar 2005 17:19:09 +0000
- To: public-ws-desc-eds@w3.org
Update of /sources/public/2002/ws/desc/wsdl20 In directory homer:/tmp/cvs-serv6203 Modified Files: wsdl20-adjuncts.xml wsdl20-adjuncts.html Log Message: Added RPC style Index: wsdl20-adjuncts.html =================================================================== RCS file: /sources/public/2002/ws/desc/wsdl20/wsdl20-adjuncts.html,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** wsdl20-adjuncts.html 16 Mar 2005 23:13:34 -0000 1.3 --- wsdl20-adjuncts.html 17 Mar 2005 17:19:06 -0000 1.4 *************** *** 1,4 **** ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> ! <html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts</title><style type="text/css"> code { font-family: monospace; } --- 1,15 ---- ! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ! "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ! <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> ! <head> ! <meta name="generator" content= [...9247 lines suppressed...] ! to Part1 for a longer introduction</td> ! </tr> ! <tr> ! <td rowspan="1" colspan="1">20020221</td> ! <td rowspan="1" colspan="1">JJM</td> ! <td rowspan="1" colspan="1">Renamed to "Part 2: Bindings"</td> ! </tr> ! <tr> ! <td rowspan="1" colspan="1">20020221</td> ! <td rowspan="1" colspan="1">JJM</td> ! <td rowspan="1" colspan="1">Created from ! http://www.w3.org/TR/2001/NOTE-wsdl-20010315</td> ! </tr> ! </tbody> ! </table> ! <br /></div> ! </div> ! </div> ! </body> ! </html> Index: wsdl20-adjuncts.xml =================================================================== RCS file: /sources/public/2002/ws/desc/wsdl20/wsdl20-adjuncts.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** wsdl20-adjuncts.xml 16 Mar 2005 17:40:56 -0000 1.3 --- wsdl20-adjuncts.xml 17 Mar 2005 17:19:06 -0000 1.4 *************** *** 578,581 **** --- 578,810 ---- constraints on Interface Operations bound. </p> + + <div2 id="RPCStyle"> + <head>RPC Style</head> + + <p>The RPC style is selected by assigning to an Interface + Operation component's &interface_operation-style-p; property the value + <emph>&RPC-STYLE;</emph>.</p> + + <p>The RPC style MUST NOT be used for Interface Operation + components whose &interface_operation-message_exchange_pattern-p; property has a + value other than '&wsdl-ns;/in-only' or '&wsdl-ns;/in-out'.</p> + + <p>When this value is used, the associated messages MUST conform to + the rules below, described using XML Schema <bibref ref="XMLSchemaP1"/>. + Note that operations containing messages described by other type systems + may also indicate use of the RPC style, as long as they are constructed + in such a way as to follow these rules.</p> + + <p>If the Interface Operation component uses a + &interface_operation-message_exchange_pattern-p; for which there is no output + element, such as '&wsdl-ns;/in-only', then the conditions + stated below that refer to output elements MUST be considered + to be implicitely satisfied.</p> + + <ulist> + + <item><p> The content model of input and output &message_reference-element-p; + elements MUST be defined using a complex type that contains a + sequence from XML Schema.</p></item> + + <item><p> The sequence MUST only contain elements. It + MUST NOT contain other structures such as + xs:choice.</p></item> + + <item><p>The sequence MUST contain only local element + children. Note that these child elements MAY contain the + following attributes: nillable, minOccurs and + maxOccurs.</p></item> + + <item><p>The LocalPart of input element's QName MUST be + the same as the Interface operation component's + name.</p></item> + + <item><p> The LocalPart of the output element's QName is + obtained by concatenating the name of the operation and + the string value “Response”.</p></item> + + <item><p>Input and output elements MUST both be in the + same namespace.</p></item> + + <item><p> The complex type that defines the body of an + input or an output element MUST NOT contain any + attributes.</p></item> + + <item><p> If elements with the same qualified name appear + as children of both the input and output elements, then + they MUST both be declared using the same type.</p></item> + + <item><p>The input or output sequence MUST NOT contain + multiple children elements declared with the same + name.</p></item> + + </ulist> + <div3 id="InterfaceOperation_RPC_Signature_Definition"> + <head><att>wrpc:signature</att> Extension</head> + + <p>The <att>wrpc:signature</att> extension &AII; MAY be used in conjunction with + the RPC style to describe the exact signature of the function represented + by an operation that uses the RPC style.</p> + + <p>When present, the <att>wrpc:signature</att> extension contributes the following + property to the interface operation component it is applied to:</p> + <ulist> + <item><p>{rpc-signature} REQUIRED. A list of pairs <emph>(q, t)</emph> + whose first component is of type <emph>xs:QName</emph> and whose second component is of type + <emph>xs:token</emph>. + Values for the second component MUST be chosen among the following four: + "#in", "#out", "#inout" "#return".</p></item> + + </ulist> + <p> + The value of the {rpc-signature} property MUST satisfy the following conditions: + </p> + <ulist> + <item><p>The value of the first component of each pair <emph>(q, t)</emph> MUST + be unique within the list.</p></item> + <item><p>For each child element of the input and output messages of the operation, + a pair <emph>(q, t)</emph> whose first component <emph>q</emph> is equal to + the qualified name of that element MUST be present in the list, with the caveat + that elements that appear with cardinality greater than one MUST be treated as + as a single element.</p></item> + <item><p>For each pair <emph>(q, #in)</emph>, there MUST be a child element of the + input element with a name of <emph>q</emph> and there MUST NOT be a child element + of the output element with the same name.</p></item> + <item><p>For each pair <emph>(q, #out)</emph>, there MUST be a child element of the + output element with a name of <emph>q</emph> and there MUST NOT be a child element + of the input element with the same name.</p></item> + <item><p>For each pair <emph>(q, #inout)</emph>, there MUST be a child element of the + input element with a name of <emph>q</emph> and there MUST be a child element + of the output element with the same name. Furthermore, those two elements MUST + have the same type.</p></item> + <item><p>For each pair <emph>(q, #return)</emph>, there MUST be a child element of the + output element with a name of <emph>q</emph> and there MUST NOT be a child element + of the input element with the same name.</p></item> + </ulist> + <p> + The function signature defined by a <att>wrpc:signature</att> extension is + determined as follows: + </p> + <olist> + <item><p>Start with the value of the {rpc-signature} property, a (possibly empty) + list of pairs of this form:</p> + <p> <emph>[(q0, t0), (q1, t1), ...]</emph></p></item> + <item><p>Filter the elements of this list into two lists, the first one <emph>(L1)</emph> + comprising pairs + whose <emph>t</emph> component is one of <emph>{#in, #out, #inout}</emph>, + the second <emph>(L2)</emph> pairs + whose <emph>t</emph> component is <emph>#return</emph>.</p> + <p>For ease of visualization, let's denote the two lists as</p> + <p> (L1) <emph>[(a0, u0), (a1, u1),...]</emph></p> + <p>and</p> + <p> (L2) <emph>[(r0, #return), (r1, #return),...]</emph></p> + <p>respectively.</p></item> + <item><p>Then the formal signature of the function is</p> + <p> <emph>f([d0] a0, [d1] a1, ...) => (r0, r1, ...)</emph></p> + <p>i.e.</p> + <p> + <ulist> + <item><p>the list of formal arguments to the function is <emph>[a0, a1, ...]</emph>; + </p></item> + <item><p>the direction <emph>d</emph> of each formal argument <emph>a</emph> is one of + <emph>[in]</emph>, <emph>[out]</emph>, <emph>[inout]</emph>, + determined according to the value of its corresponding <emph>u</emph> token; + </p></item> + <item><p>the list of formal return parameters of the function is + <emph>[r0, r1, ...]</emph>;</p></item> + <item><p>each formal argument and formal return parameter is typed + according to the type of the child element identified by it + (unique per the conditions given above).</p></item> + </ulist> + </p> + </item> + </olist> + </div3> + + <div3 id="InterfaceOperation_RPC_Signature_XMLRep"> + <head>XML Representation of the <att>wrpc:signature</att> Extension</head> + <p> + The XML representation for the RPC signature extension is an + &AII; with the following Infoset properties: + </p> + <ulist> + <item><p>A [local name] of <att>signature</att></p></item> + <item><p>A [namespace name] of "&wsdl-rpc-ns;"</p></item> + </ulist> + <p> + The type of the <att>name</att> &AII; is a list type whose item type is + the union of the <emph>xs:QName</emph> type and the subtype of + the <emph>xs:token</emph> type restricted to the following + four values: "#in", "#out", "#inout", + "#return". See <specref ref='rpc-signature-xsd'/> for + a definition of this type. + </p> + <p>Additionally, each even-numbered item (0, 2, 4, ...) in the list + MUST be of type <emph>xs:QName</emph> and each odd-numbered item (1, 3, 5, ...) + in the list MUST be of the subtype of <emph>xs:token</emph> described in the + previous paragraph. + </p> + <p></p> + <p> + <example id='rpc-signature-xsd'> + <head>Definition of the wrpc:signature extension</head> + <eg><![CDATA[ + <xs:attribute name="signature" type="wrpc:signatureType"/> + + <xs:simpleType name="signatureType"> + <xs:list itemType="wrpc:signatureItemType"/> + </xs:simpleType> + + <xs:simpleType name="signatureItemType"> + <xs:union memberTypes="wrpc:directionToken xsd:QName"/> + </xs:simpleType> + + <xs:simpleType name="directionToken"> + <xs:restriction base="xs:token"> + <xs:enumeration value="#in"/> + <xs:enumeration value="#out"/> + <xs:enumeration value="#inout"/> + <xs:enumeration value="#return"/> + </xs:restriction> + </xs:simpleType> + ]]> + </eg> + </example> + </p> + </div3> + + <div3 id="InterfaceOperation_RPC_Signature_Mapping"> + <head><att>wrpc:signature </att>Extension Mapping To Properties of an + Interface Operation Component</head> + + <p>A <att>wrpc:signature</att> extension &AII; is mapped to the following + property of the Interface Operation component defined by its [owner].</p> + + <table border="1" id="tab_InterfaceOperation_RPC_Signature_Mapping"> + <caption>Mapping of a <att>wrpc:signature</att> Extension to Interface Operation Component Properties</caption> + <col width="20%" /> + <col width="80%" /> + <tbody> + <tr> + <th>Property</th> + <th>Mapping</th> + </tr> + <tr> + <td>{rpc-signature}</td> + <td> A list of <emph>(xs:QName, xs:token)</emph> pairs formed + by grouping the items present in the actual value of the + <att>wrpc:signature</att> &AII; in the order in which they appear + there.</td> + </tr> + </tbody> + </table> + + </div3> + + </div2> + + + <div2 id="_operation_uri_style"> <head>URI Style</head> *************** *** 3455,3458 **** --- 3684,3692 ---- --> <tr> + <td>20050317</td> + <td>HH</td> + <td>Incorporated RPC style</td> + </tr> + <tr> <td>20050316</td> <td>HH</td>
Received on Thursday, 17 March 2005 17:19:10 UTC