Fuse Services Framework supports two methods for defining arrays in a contract. The first is define
a complex type with a single element whose maxOccurs
attribute
has a value greater than one. The second is to use SOAP arrays.
SOAP arrays provide added functionality such as the ability to easily
define multi-dimensional arrays and to transmit sparsely populated arrays.
Complex type arrays are a special case of a sequence complex type.
You simply define a complex type with a single element and specify a value for the maxOccurs
attribute. For example, to define an array of twenty
floating point numbers you use a complex type similar to the one shown in Example 2.9.
Example 2.9. Complex type array
<complexType name="personalInfo"> <element name="averages" type="xsd:float" maxOccurs="20"/> </complexType>
You can also specify a value for the minOccurs
attribute.
SOAP arrays are defined by deriving from the SOAP-ENC:Array base type
using the wsdl:arrayType
element. The syntax for this is shown
in Example 2.10.
Example 2.10. Syntax for a SOAP array derived using wsdl:arrayType
<complexType name="TypeName
"> <complexContent> <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="ElementType<ArrayBounds>
"/> </restriction> </complexContent> </complexType>
Using this syntax, TypeName
specifies the name of the
newly-defined array type. ElementType
specifies the type of the
elements in the array. ArrayBounds
specifies the number of
dimensions in the array. To specify a single dimension array use
[]
; to specify a two-dimensional array use either
[][]
or [,]
.
For example, the SOAP Array, SOAPStrings, shown in Example 2.11, defines
a one-dimensional array of strings. The wsdl:arrayType
attribute specifies the type of the array elements, xsd:string, and the
number of dimensions, with []
implying one dimension.
Example 2.11. Definition of a SOAP array
<complexType name="SOAPStrings"> <complexContent> <restriction base="SOAP-ENC:Array"> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/> </restriction> </complexContent> </complexType>
You can also describe a SOAP Array using a simple element as described in the SOAP 1.1 specification. The syntax for this is shown in Example 2.12.
Example 2.12. Syntax for a SOAP array derived using an element
<complexType name="TypeName
"> <complexContent> <restriction base="SOAP-ENC:Array"> <sequence> <element name="ElementName
" type="ElementType
" maxOccurs="unbounded"/> </sequence> </restriction> </complexContent> </complexType>
When using this syntax, the element's maxOccurs
attribute
must always be set to unbounded
.