Issue: properties and schema languages other than XSD

It appears that the definition of the property component in WSDL 2.0
([1]) does not allow the use of schema languages other than XML Schema.

A quick comparison with, e.g., the message reference component ([2])
will illustrate the issue.

The {message} property of a message reference component is defined as
follows:

   {message} 	The element declaration resolved to by the value of the
   message attribute information item if present, otherwise a similar
   construct in some type system as referred to by some other attribute
   information item if present, otherwise empty.

So in

  <input messageReference="xs:NCName"?
         message="xs:QName"? >
         <documentation />?
  </input>

the "message" attribute is optional and it can be replaced with a
different one (via extensibility).

On the other hand, the {value constraint} property of a property 
component has this definition:

   {value constraint} 	If the constraint element information item is
   present, the type referred to by the value of this element information
   item. Otherwise, if the value element information item is present, an
   anonymous simple type, whose base type is "xs:anySimpleType", with a
   single "enumeration" facet whose value is that of the element
   information item. Otherwise, "xs:anySimpleType".

No mention of non-XML Schema type systems here. Moreover, in

   <property
       uri="xs:QName"
       required="xs:boolean"? >
     <documentation />?
     [ <value /> | <constraint /> ]
   </property>

one of <value/> or <constraint/> is REQUIRED. How would someone specify
a constraint using a schema language other then XML Schema then?

A possible solution is to change the syntax for <wsdl:property/> to:

   <property
       uri="xs:QName"
       required="xs:boolean"?
       value="xs:anySimpleType"?
       constraint="xs:QName"? >
     <documentation />?
   </property>

Then the {value constraint} property would be defined as follows:

   - if the value attribute information item is present, an anonymous
simple type, whose base type is "xs:anySimpleType", with a single
"enumeration" facet whose value is that of the attribute information
item;
   -  otherwise, if the constraint attribute information item is present,
the type referred to by the value of this attribute information item;
(incidentally, I think here we should say "the *simple* type definition 
referred to by...")
   - otherwise a similar construct in some type system as referred to by
some other attribute information item if present,
   - otherwise the simple type definition for xs:anySimpleType

I cannot quite recall why we decided to use element information items
for <value/> and <constraint/> instead of attributes. Perhaps somebody
will help me remember...

Happy New Year!

Roberto

-- 
Roberto Chinnici
Java Web Services
Sun Microsystems, Inc.
roberto.chinnici@sun.com

[1] http://www.w3.org/TR/wsdl20/#Property
[2] http://www.w3.org/TR/wsdl20/#MessageReference

Received on Monday, 5 January 2004 19:21:33 UTC