- From: Jean-Jacques Moreau <jean-jacques.moreau@crf.canon.fr>
- Date: Wed, 29 Oct 2003 11:10:55 +0100
- To: Umit Yalcinalp <umit.yalcinalp@oracle.com>
- Cc: public-ws-desc-state@w3.org
I don't eat much sugar in general, but I'll definitely go for the icing
this time!
I'd go as far as suggesting changing the "attributes" prefix to the
standard "ws".
Jean-Jacques.
Without syntactic sugar:
<ws:operation
name="get_XXX"
style="http://www.w3.org/@@@@/@@/wsdl/style/get-attribute"
pattern="http://www.w3.org/@@@@/@@/wsdl/in-out">
<ws:input name="in" body="wrappers:get_XXX"/>
<ws:output name="out" body="wrappers:get_XXXResponse"/>
</ws:operation>
With syntactic sugar:
<attributes:attribute elementReference="tns:foo"
access="read-write"/>*
Umit Yalcinalp wrote:
> Folks,
>
> As I promised on Monday's concall, I have crafted a syntactic convention
> for WSDL. It is not perfect (not done much proof reading), but just to
> give you an idea what I am thinking. This *is* a syntactic sugar, not a
> proposal to change the component model. It is complementary to the rules
> that are defined in [1].
>
> This is basically reverse engineering of what we have with one added
> rule, (4) and clarifications with (5) and (6). Rule (4) allows the
> capability for bulk set/get that needs to be defined later, elsewhere.
>
> Let me know what you think about this proposal. Again, I would like to
> discuss this proposal within the context of [1].
> This is NOT to create another discussion about why some people don't
> like attributes. ;-) So I will appreciate if you could send comments
> with this goal in mind.
>
> Thanks.
>
> --umit
>
> [1]
> http://lists.w3.org/Archives/Public/public-ws-desc-state/2003Oct/0020.html
>
>
> ------------------------------------------------------------------------
>
> Syntactic Sugar for Defining Attributes in WSDL 2.0:
>
>
> (1) Define the schema for defining an attribute:
>
> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
> targetNamespace='http://www.w3.org/@@@@/@@/wsdl/style/attribute'
> xmlns:attributes='http://www.w3.org/@@@@/@@/wsdl/style/attribute'
> elementFormDefault='qualified'>
>
> <xs:element name="attribute">
> <xs:complexType>
> <xs:attribute name="elementReference"
> type="xs:QName" use="required"/>
> <xs:attribute name="access"
> type="attributes:enumeration"
> use="required"/>
> <xs:attribute name="style"
> type="xs:anyURI"/>
> </xs:complexType>
> </xs:element>
>
> <xs:simpleType name="enumeration">
> <xs:restriction base="xs:string">
> <xs:enumeration value="read"/>
> <xs:enumeration value="write"/>
> <xs:enumeration value="read-write"/>
> </xs:restriction>
> </xs:simpleType>
>
> </xs:schema>
>
> Note that this attribute is in its own namespace, "attribute", since
> we can not share the namespace from "get-attribute" or
> "set-attribute".
>
>
> (2) The attribute element may appear as a child of the interface
> definition as an extension.
>
> Example:
>
> <definitions>
> <interface>
> <operation
> name="xs:NCName"
> pattern="xs:anyURI"
> style="xs:anyURI"? >
> <documentation />?
> [ <feature /> | <property /> |
> [ <input /> | <output /> | <infault /> | <outfault /> ]+
> ]*
> </operation>
> <attributes:attribute elementReference="tns:foo"
> access="read-write"/>*
> </interface>
> </definitions>
>
> (3) If an attribute element appears as a child of the interface
> definition in a WSDL document, it indicates a shortcut for defining a
> set of operations that use the styles, "get-attribute" and
> "set-attribute" as follows:
>
> 3.1 The elementReference element must be the QName of an
> element in the document.
>
> 3.2 For each elementReference element specified within an
> attribute element, the following operations are assumed.
>
> 3.2.1. If the value of the access attribute is "read",
> then, the presence of the attribute element is equivalent to the
> following declarations:
>
> Types: The following two elements must be present.
>
> (a) a global empty element declaration named "get_{Y}".
>
> (b) a global element declaration named get_{Y}Response defined as a
> complex type that contains a sequence that contains with a single
> child element. The element must be a reference to the element designated
> by the QName specified in the elementReference attribute.
>
> Operations: One operations must be present in WSDL
> definition and contrained as follows:
>
> (c)
>
> - An interface operation must be named "get_{Y}.
>
> - The interface operation must have the style attribute and its value
> must be "http://www.w3.org/@@@@/@@/wsdl/style/get-attribute".
>
> - The interface operation must have a pattern attribute and its value
> must be "http://www.w3.org/@@@@/@@/wsdl/in-out".
>
> - The body attribute of the input element must contain the QName of
> the empty element declared in (a).
>
> - The body attribute of the output element must contain the QName of
> the element declared in (b).
>
> 3.2.2 If the value of the access attribute is "write", then the
> presence of the attribute element in an interface declaration is
> equivalent to the following declarations:
>
> Types:
>
> (d) a global element declaration named set_{Y} defined
> as a complex type that contains a sequence with a single child element.
> The element must be a reference to the element designated
> by the QName specified in the elementReference attribute.
>
> (e)A global empty element declaration named "set_{Y}Response".
>
>
> Operations: One operations must be present in WSDL
> definition and contrained as follows:
>
> (c)
>
> - An interface operation must be named "set_{Y}.
>
> - The interface operation must have the style attribute and its value
> must be "http://www.w3.org/@@@@/@@/wsdl/style/set-attribute".
>
> - The interface operation must have a pattern attribute and its value
> must be "http://www.w3.org/@@@@/@@/wsdl/in-out".
>
> - The body attribute of the input element must contain the QName of
> the empty element declared in (d).
>
> - The body attribute of the output element must contain the QName of
> the element declared in (e).
>
> 3.2.3 If the value of the access attribute is "read-write", then the
> presence of the attribute element in an interface declaration is
> equivalent to having both the declarations specified in 3.2.1 and
> 3.2.2.
>
> In addition, the naming conventions for choosing a value for {Y}
> must follow the restrictions that are specified for WSDL get/set
> attribute style document.
>
> (4) Typically, the style attribute in an attribute declaration will
> not contain a value. If this attribute has a value, it may indicate
> additional operations that may be relevant for a WSDL processor that
> would process these styles. For example, additional rules and
> operations may be defined for bulk get/set operations and would be
> indicated with an appropriate style URI that the processors may
> utilize.
>
> (5) It is an error if operations/types that are named and further
> defined in 3.2.1, 3.2.2 and 3.2.3 as a result of this convention do
> exist in the WSDL document, but their definitions do not match the
> requirements presented in these sections.
>
> (6) This syntactic convention is a normative for declaring
> attributes. This syntactic convention is not required to be understood
> for WSDL processors, but recommended to be supported by those that
> recognize get/set attribute styles as additional convenience for
> users.
Received on Wednesday, 29 October 2003 05:11:29 UTC