Stylus Studio XML Editor

Table of contents

Appendices

6.1 Element based extensibility

Element based extensibility

WSDL allows extensions to be defined in terms of element information items. Several abstract global element declarations serve as the heads of substitution groups. Some are specific to a particular point in the schema while others appear in multiple places. This allows extension to be specific to a particular point of the WSDL schema or more general. [tabelemsubgroup] shows the complete list of element substitution groups that along with their allowed locations.

It is expected that extensions will want to add to the existing properties of components in the component model. The specification for an extension element information item should include definitions of any such properties and the mapping between the XML representation of the extension and the properties in the component model.

The WSDL schema also defines a base type for use by extensibility elements. [Base type for extensibility elements] shows the type definition. The use of this type as a base type is optional. The element declarations which serve as the heads of the defined substitution groups are all of type xs:anyType.

Extensibility 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 specification. WSDL recommends that specifications defining such protocols also define any necessary WSDL extensions used to describe those protocols or formats.

An extension element is said to be processed if a WSDL processor decides (through whatever means) that its parent (an element information item in the http://www.w3.org/2003/03/wsdl namespace) will be processed. Note that it is possible for WSDL processors to process only a subset of a given WSDL document. For instance, a tool may wish to focus on portTypes and operations only, and will consequently skip bindings.

1List of element substitution group based extensibility pointstabelemsubgroup Element substitution groups defined for element based extensibility Element name Allowed in [children] property of Notes
11globalExt 11
  • wsdl:definitions after wsdl:import, wsdl:include and wsdl:types element information items if present.

  • wsdl:message

  • wsdl:part

  • wsdl:portType

  • wsdl:operation

  • wsdl:input

  • wsdl:output

  • wsdl:fault

  • wsdl:binding

  • wsdl:service

  • wsdl:port

11This element information item serves as the head of a substitution group for extensibility elements that wish to appear as a child of any element information item in the http://www.w3.org/2003/03/wsdl namespace with the exception of wsdl:import, wsdl:include and wsdl:types.
11msgAndportTypeExt 11
  • wsdl:message

  • wsdl:portType

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as a child of wsdl:message and/or wsdl:portType
11msgportTypeAndBindingExt 11
  • wsdl:message

  • wsdl:portType

  • wsdl:binding

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as a child of wsdl:message, wsdl:portType and/or wsdl:binding
11msgportTypeBindingServiceExt 11
  • wsdl:message

  • wsdl:portType

  • wsdl:binding

  • wsdl:service

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as a child of wsdl:message, wsdl:portType, wsdl:binding and/or wsdl:service
11bindingAndServiceExt 11
  • wsdl:binding

  • wsdl:service

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as a child of wsdl:binding and/or wsdl:service
11preImportInclude 11
  • wsdl:definitions before wsdl:import and wsdl:include, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear before the wsdl:import and wsdl:include element information items
11inImportInclude 11
  • wsdl:definitions before, between or after wsdl:import and wsdl:include, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear interleaved with the wsdl:import and wsdl:include element information items
11preTypes 11
  • wsdl:definitions after wsdl:import and wsdl:include and before wsdl:types, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear after the wsdl:import and wsdl:include element information items but before the wsdl:types element information item
11postTypes 11
  • wsdl:definitions after wsdl:types, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear after the wsdl:types element information item ( potentially interleaved with wsdl:message, wsdl:portType, wsdl:/binding and wsdl:service element information items.
31Abstract elements related to message
11msgExt 11
  • wsdl:message

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:message
11msgPrePartExt 11
  • wsdl:message before wsdl:part element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:message before wsdl:part
11msgPostPartExt 11
  • wsdl:message after wsdl:part element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:message after wsdl:part
11msgPartExt 11
  • wsdl:part

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:message/wsdl:part
31Abstract elements related to portType
11portTypeExt 11
  • wsdl:portType

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:portType
11portTypePreOpExt 11
  • wsdl:portType before wsdl:operation element information items, if present.

11This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:portType before wsdl:operation
11portTypePostOpExt 11
  • wsdl:portType after wsdl:operation element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:portType after wsdl:operation
11portTypeOpExt 11
  • wsdl:operation with wsdl:portType [parent]

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:operation when it is a child of wsdl:portType
11portTypeOpMsgExt 11
  • wsdl:input with wsdl:operation [parent] which itself has wsdl:portType [parent]

  • wsdl:output with wsdl:operation [parent] which itself has wsdl:portType [parent]

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:input or wsdl:output when they appear as children of wsdl:operation which itself appears as a child of wsdl:portType
11portTypeOpFaultExt 11
  • wsdl:fault with wsdl:operation [parent] which itself has wsdl:portType [parent]

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:fault when it appears as a child of wsdl:operation which itself appears as a child of wsdl:portType
31Abstract elements related to bindings
11bindingExt 11
  • wsdl:binding

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:binding
11bindingPreOpExt 11
  • wsdl:binding before wsdl:operation element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:binding before wsdl:operation
11bindingPostOpExt 11
  • wsdl:binding after wsdl:operation element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:binding after wsdl:operation
11bindingOpExt 11
  • wsdl:operation with wsdl:binding [parent]

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:operation appearing as children of wsdl:binding
11bindingOpMsgExt 11
  • wsdl:input with wsdl:operation [parent] which itself has wsdl:binding [parent]

  • wsdl:output with wsdl:operation [parent] which itself has wsdl:binding [parent]

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:input or wsdl:output when they appear as children of wsdl:operation which itself appears as a child of wsdl:binding
11bindingOpFaultExt 11
  • wsdl:fault with wsdl:operation [parent] which itself has wsdl:binding [parent]

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:fault when it appears as a child of wsdl:operation which itself appears as a child of wsdl:binding
31Abstract elements related to service
11serviceExt 11
  • wsdl:service

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:service
11servicePrePortExt 11
  • wsdl:service before wsdl:port element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:service before wsdl:port
11servicePostPortExt 11
  • wsdl:service after wsdl:port element information items, if present.

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:service after wsdl:port
11portExt 11
  • wsdl:port

11 This element information item serves as the head of a substitution group for extensibility elements that wish to appear as children of wsdl:port
Base type for extensibility elements

<xs:complexType name='ExtensibilityElement' abstract='true' >
  <xs:attribute ref='wsdl:required' use='optional' />
</xs:complexType>
	  
	  

Mandatory extensions[top]

Mandatory extensions

Extension elements can be marked as mandatory by annotating them with a wsdl:required attribute information item (see [ ]) with a value of true. Mandatory extensions are those that MUST be processed correctly by the WSDL processor. If a mandatory extension element is processed, the WSDL processor MUST either agree to fully abide by all the rules and semantics signaled by the extension element's qualified name, or immediate cease processing (fault). In particular, if the WSDL processor does not recognize the qualified name of the extension element, it MUST fault. If the WSDL processor recognizes the qualified name, and determines that the extension in question is incompatible with any other aspect of the document (including other required extensions), it MUST fault.

required attribute information item[top]

required attribute information item

WSDL provides a global attribute information item with the following Infoset properties:

  • A [local name] of required.

  • A [namespace name] of http://www.w3.org/2003/03/wsdl.

  • A [specified] property with a value of true.

The type of the required is xs:boolean.