Extensibility proposal from today

Although Glen got the action item, I tried to write up today's version
of the extensibility proposal, since it seems quite close to the one I
circulated last week (or at least that's what Glen and I thought when
we discussed the matter a couple of days ago).

Glen, by all means correct me if I got this wrong!

Roberto

--
Roberto Chinnici
Java and XML Software
Sun Microsystems, Inc.


========

1. Allow extension elements on every WSDL element, e.g. by adding
      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
   to every complex type in the WSDL schema.

  Similarly, allow extension attributes on every WSDL element, e.g. by adding
      <xsd:anyAttribute namespace="##other" processContents="lax"/>.

   Any element or attribute matching the rules above is an Extension.

2. Modify the wsdl grammar (section 2.1 of the spec) to add Required Extension
    Declarations immediately inside a wsdl:definition element:

    <wsdl:definitions name="nmtoken"? targetNamespace="uri"?>

        <wsdl:requiredExtension name="uri"/>*

        <wsdl:import namespace="uri" location="uri"/>*

        <!-- rest of the wsdl grammar follows -->

    [Required Extension Declarations are at the beginning of the document
     so that by the time a processor sees any non-trivial wsdl content,
     it's aware of all the processing rules.]

    [Later on, we'll want to add all built-in extensions to the set of required
     extension namespace names, so that they don't get declared in each
     wsdl document.]

3. Remove the wsdl:required attribute defined in WSDL 1.1.

4. Mandate the following processing model:

    a) Required Extension Declarations

        A processor that encounters a Required Extension Declaration and that does
        not recognize its name MUST stop processing the wsdl document at once.

        A processor that recognizes a Required Extension Declaration MUST obey its
        rules for the entire duration of its processing of the wsdl document in
        which it appears. Such rules are allowed to override other wsdl processing
        rules defined by this specification.

        Since the name of a Required Extension Declaration is a URI, it can be
        used as a namespace name. In the interest of user-friendliness, it is
        recommended that the specification for an extension define the semantics
        of all elements defined in its namespace.

        It is also recommended that the effect of the processing rules specified by
        a given extension be as localized as possible; in particular, their effect
        should be local to elements that contain Extensions belonging to that
        particular vocabulary.

    b) Recognized Extensions

        A processor MUST attempt to process all Extensions it recognizes.

    c) Unrecognized Extensions

        A processor MUST ignore all extensions that it doesn't recognize.

Received on Thursday, 6 June 2002 12:49:41 UTC